alnyan/yggdrasil: update to new rustc

This commit is contained in:
2025-08-06 17:27:50 +03:00
parent 6b54882b19
commit 0c932f7cc7
2 changed files with 153 additions and 131 deletions
+152 -129
View File
@@ -171,10 +171,10 @@ where
///
/// let mut overlapping = map.overlapping(ie(2, 8));
///
/// assert_eq!(overlapping.collect::<Vec<_>>(), [
/// (&ie(1, 4), &false),
/// (&ie(4, 8), &true)
/// ]);
/// assert_eq!(
/// overlapping.collect::<Vec<_>>(),
/// [(&ie(1, 4), &false), (&ie(4, 8), &true)]
/// );
/// ```
pub fn overlapping<Q>(
&self,
@@ -379,15 +379,15 @@ where
///
/// let mut removed = map.remove_overlapping(ie(2, 8));
///
/// assert_eq!(removed.collect::<Vec<_>>(), [
/// (ie(1, 4), false),
/// (ie(4, 8), true)
/// ]);
/// assert_eq!(
/// removed.collect::<Vec<_>>(),
/// [(ie(1, 4), false), (ie(4, 8), true)]
/// );
///
/// assert_eq!(map.into_iter().collect::<Vec<_>>(), [(
/// ie(8, 100),
/// false
/// )]);
/// assert_eq!(
/// map.into_iter().collect::<Vec<_>>(),
/// [(ie(8, 100), false)]
/// );
/// ```
pub fn remove_overlapping<'a, Q>(
&'a mut self,
@@ -447,11 +447,10 @@ where
/// ])
/// .unwrap();
///
/// assert_eq!(base.cut(ie(2, 40)).collect::<Vec<_>>(), [
/// (ie(2, 4), false),
/// (ie(4, 8), true),
/// (ie(8, 40), false),
/// ]);
/// assert_eq!(
/// base.cut(ie(2, 40)).collect::<Vec<_>>(),
/// [(ie(2, 4), false), (ie(4, 8), true), (ie(8, 40), false),]
/// );
/// assert_eq!(base, after_cut);
/// ```
pub fn cut<'a, Q>(&'a mut self, range: Q) -> impl Iterator<Item = (K, V)>
@@ -475,18 +474,20 @@ where
.map(|(key, _)| key)
.copied();
if let Some(left) = left_overlapping
&& let Some(right) = right_overlapping
&& left.start() == right.start()
{
Either::Left(self.cut_single_overlapping(range, left))
} else {
Either::Right(self.cut_non_single_overlapping(
range,
left_overlapping,
right_overlapping,
))
if let Some(left) = left_overlapping {
if let Some(right) = right_overlapping {
if left.start() == right.start() {
return Either::Left(
self.cut_single_overlapping(range, left),
);
}
}
}
Either::Right(self.cut_non_single_overlapping(
range,
left_overlapping,
right_overlapping,
))
}
/// Same as [DiscreteRangeMap::cut], but additionally returns the original bounds of the range
@@ -514,18 +515,20 @@ where
.map(|(key, _)| key)
.copied();
if let Some(left) = left_overlapping
&& let Some(right) = right_overlapping
&& left.start() == right.start()
{
Either::Left(self.cut_single_overlapping_with_origin(range, left))
} else {
Either::Right(self.cut_non_single_overlapping_with_origin(
range,
left_overlapping,
right_overlapping,
))
if let Some(left) = left_overlapping {
if let Some(right) = right_overlapping {
if left.start() == right.start() {
return Either::Left(
self.cut_single_overlapping_with_origin(range, left),
);
}
}
}
Either::Right(self.cut_non_single_overlapping_with_origin(
range,
left_overlapping,
right_overlapping,
))
}
fn cut_single_overlapping_with_origin(
@@ -763,11 +766,10 @@ where
///
/// let mut gaps = map.gaps_untrimmed(ii(4, 120));
///
/// assert_eq!(gaps.collect::<Vec<_>>(), [
/// ie(3, 5),
/// ie(7, 9),
/// iu(100)
/// ]);
/// assert_eq!(
/// gaps.collect::<Vec<_>>(),
/// [ie(3, 5), ie(7, 9), iu(100)]
/// );
/// ```
pub fn gaps_untrimmed<'a, Q>(
&'a self,
@@ -851,11 +853,10 @@ where
///
/// let mut gaps = map.gaps_trimmed(ii(4, 120));
///
/// assert_eq!(gaps.collect::<Vec<_>>(), [
/// ie(4, 5),
/// ie(7, 9),
/// ii(100, 120)
/// ]);
/// assert_eq!(
/// gaps.collect::<Vec<_>>(),
/// [ie(4, 5), ie(7, 9), ii(100, 120)]
/// );
/// ```
pub fn gaps_trimmed<'a, Q>(
&'a self,
@@ -1100,10 +1101,10 @@ where
/// Ok(ie(10, 16))
/// );
///
/// assert_eq!(map.into_iter().collect::<Vec<_>>(), [
/// (ie(1, 8), true),
/// (ie(10, 16), false)
/// ]);
/// assert_eq!(
/// map.into_iter().collect::<Vec<_>>(),
/// [(ie(1, 8), true), (ie(10, 16), false)]
/// );
/// ```
pub fn insert_merge_touching(
&mut self,
@@ -1188,11 +1189,10 @@ where
/// Ok(ie(10, 16))
/// );
///
/// assert_eq!(map.into_iter().collect::<Vec<_>>(), [
/// (ie(1, 4), false),
/// (ie(4, 8), true),
/// (ie(10, 16), false)
/// ]);
/// assert_eq!(
/// map.into_iter().collect::<Vec<_>>(),
/// [(ie(1, 4), false), (ie(4, 8), true), (ie(10, 16), false)]
/// );
/// ```
pub fn insert_merge_touching_if_values_equal(
&mut self,
@@ -1290,11 +1290,10 @@ where
/// ie(10, 16)
/// );
///
/// assert_eq!(map.into_iter().collect::<Vec<_>>(), [
/// (ie(1, 4), false),
/// (ie(4, 8), false),
/// (ie(10, 16), false)
/// ]);
/// assert_eq!(
/// map.into_iter().collect::<Vec<_>>(),
/// [(ie(1, 4), false), (ie(4, 8), false), (ie(10, 16), false)]
/// );
/// ```
pub fn insert_merge_overlapping(&mut self, range: K, value: V) -> K {
invalid_range_panic(range);
@@ -1364,10 +1363,10 @@ where
/// ie(10, 16)
/// );
///
/// assert_eq!(map.into_iter().collect::<Vec<_>>(), [
/// (ie(1, 8), false),
/// (ie(10, 16), false)
/// ]);
/// assert_eq!(
/// map.into_iter().collect::<Vec<_>>(),
/// [(ie(1, 8), false), (ie(10, 16), false)]
/// );
/// ```
pub fn insert_merge_touching_or_overlapping(
&mut self,
@@ -1437,11 +1436,10 @@ where
///
/// map.insert_overwrite(ie(4, 6), true);
///
/// assert_eq!(map.into_iter().collect::<Vec<_>>(), [
/// (ie(2, 4), false),
/// (ie(4, 6), true),
/// (ie(6, 8), false)
/// ]);
/// assert_eq!(
/// map.into_iter().collect::<Vec<_>>(),
/// [(ie(2, 4), false), (ie(4, 6), true), (ie(6, 8), false)]
/// );
/// ```
pub fn insert_overwrite(
&mut self,
@@ -1702,7 +1700,7 @@ impl<I, K, V> DiscreteRangeMap<I, K, V> {
/// ]
/// );
/// assert!(map.is_empty());
pub fn drain(&mut self) -> DrainIter<I, K, V> {
pub fn drain(&mut self) -> DrainIter<'_, I, K, V> {
DrainIter { inner: self }
}
}
@@ -2023,13 +2021,18 @@ mod tests {
Err(OverlapError { value: true }),
basic_slice(),
);
assert_insert_strict(basic(), (ei(4, 5), true), Ok(()), [
(ui(4), false),
assert_insert_strict(
basic(),
(ei(4, 5), true),
(ee(5, 7), true),
(ii(7, 7), false),
(ie(14, 16), true),
]);
Ok(()),
[
(ui(4), false),
(ei(4, 5), true),
(ee(5, 7), true),
(ii(7, 7), false),
(ie(14, 16), true),
],
);
}
fn assert_insert_strict<const N: usize>(
mut before: DiscreteRangeMap<i8, InclusiveInterval<i8>, bool>,
@@ -2164,12 +2167,17 @@ mod tests {
#[test]
fn cut_tests() {
assert_cut(basic(), ii(50, 60), [], [
(ui(4), false),
(ee(5, 7), true),
(ii(7, 7), false),
(ie(14, 16), true),
]);
assert_cut(
basic(),
ii(50, 60),
[],
[
(ui(4), false),
(ee(5, 7), true),
(ii(7, 7), false),
(ie(14, 16), true),
],
);
assert_cut(
basic(),
uu(),
@@ -2181,10 +2189,12 @@ mod tests {
],
[],
);
assert_cut(basic(), ui(6), [(ui(4), false), (ei(5, 6), true)], [
(ii(7, 7), false),
(ie(14, 16), true),
]);
assert_cut(
basic(),
ui(6),
[(ui(4), false), (ei(5, 6), true)],
[(ii(7, 7), false), (ie(14, 16), true)],
);
assert_cut(
basic(),
iu(6),
@@ -2207,11 +2217,11 @@ mod tests {
assert_gaps_untrimmed(basic(), ii(50, 60), [iu(16)]);
assert_gaps_untrimmed(basic(), iu(50), [iu(16)]);
assert_gaps_untrimmed(basic(), ee(3, 16), [ei(4, 5), ee(7, 14)]);
assert_gaps_untrimmed(basic(), ei(3, 16), [
ei(4, 5),
ee(7, 14),
iu(16),
]);
assert_gaps_untrimmed(
basic(),
ei(3, 16),
[ei(4, 5), ee(7, 14), iu(16)],
);
assert_gaps_untrimmed(basic(), ue(5), []);
assert_gaps_untrimmed(basic(), ui(3), []);
assert_gaps_untrimmed(basic(), ii(5, 5), [ii(5, 5)]);
@@ -2219,11 +2229,11 @@ mod tests {
assert_gaps_untrimmed(basic(), ii(7, 7), []);
assert_gaps_untrimmed(basic(), ii(8, 8), [ii(8, 13)]);
assert_gaps_untrimmed(basic(), ii(i8::MIN, i8::MAX), [
ei(4, 5),
ee(7, 14),
ii(16, i8::MAX),
]);
assert_gaps_untrimmed(
basic(),
ii(i8::MIN, i8::MAX),
[ei(4, 5), ee(7, 14), ii(16, i8::MAX)],
);
assert_eq!(
DiscreteRangeMap::from_slice_strict([(
ii(i8::MIN, i8::MAX),
@@ -2248,11 +2258,11 @@ mod tests {
assert_gaps_trimmed(basic(), ii(50, 60), [ii(50, 60)]);
assert_gaps_trimmed(basic(), iu(50), [iu(50)]);
assert_gaps_trimmed(basic(), ee(3, 16), [ei(4, 5), ee(7, 14)]);
assert_gaps_trimmed(basic(), ei(3, 16), [
ei(4, 5),
ee(7, 14),
ii(16, 16),
]);
assert_gaps_trimmed(
basic(),
ei(3, 16),
[ei(4, 5), ee(7, 14), ii(16, 16)],
);
assert_gaps_trimmed(basic(), ue(5), []);
assert_gaps_trimmed(basic(), ui(3), []);
assert_gaps_trimmed(basic(), ii(5, 5), [ii(5, 5)]);
@@ -2260,11 +2270,11 @@ mod tests {
assert_gaps_trimmed(basic(), ii(7, 7), []);
assert_gaps_trimmed(basic(), ii(8, 8), [ii(8, 8)]);
assert_gaps_trimmed(basic(), ii(i8::MIN, i8::MAX), [
ei(4, 5),
ee(7, 14),
ii(16, i8::MAX),
]);
assert_gaps_trimmed(
basic(),
ii(i8::MIN, i8::MAX),
[ei(4, 5), ee(7, 14), ii(16, i8::MAX)],
);
assert_eq!(
DiscreteRangeMap::from_slice_strict([(
ii(i8::MIN, i8::MAX),
@@ -2400,12 +2410,17 @@ mod tests {
#[test]
fn insert_merge_overlapping_tests() {
assert_insert_merge_overlapping(basic(), (ii(0, 2), true), ui(4), [
(ui(4), true),
(ee(5, 7), true),
(ii(7, 7), false),
(ie(14, 16), true),
]);
assert_insert_merge_overlapping(
basic(),
(ii(0, 2), true),
ui(4),
[
(ui(4), true),
(ee(5, 7), true),
(ii(7, 7), false),
(ie(14, 16), true),
],
);
assert_insert_merge_overlapping(
basic(),
(ie(14, 16), false),
@@ -2434,10 +2449,12 @@ mod tests {
(ii(14, 18), true),
],
);
assert_insert_merge_overlapping(basic(), (uu(), false), uu(), [(
assert_insert_merge_overlapping(
basic(),
(uu(), false),
uu(),
false,
)]);
[(uu(), false)],
);
}
fn assert_insert_merge_overlapping<const N: usize>(
mut before: DiscreteRangeMap<i8, InclusiveInterval<i8>, bool>,
@@ -2579,12 +2596,15 @@ mod tests {
map.insert_strict(r3, "range3").unwrap();
let r: Vec<_> = map.drain().collect();
assert_eq!(&r, &[
(ie(0, 10), "range0"),
(ie(20, 30), "range1"),
(ie(40, 50), "range2"),
(ie(60, 70), "range3"),
]);
assert_eq!(
&r,
&[
(ie(0, 10), "range0"),
(ie(20, 30), "range1"),
(ie(40, 50), "range2"),
(ie(60, 70), "range3"),
]
);
assert!(map.is_empty());
}
@@ -2603,11 +2623,14 @@ mod tests {
let r: Vec<_> = map.cut_with_origin(ie(5, 45)).collect();
assert_eq!(&r, &[
(ie(0, 10), ie(5, 10), "range0"),
(ie(20, 30), ie(20, 30), "range1"),
(ie(40, 50), ie(40, 45), "range2")
]);
assert_eq!(
&r,
&[
(ie(0, 10), ie(5, 10), "range0"),
(ie(20, 30), ie(20, 30), "range1"),
(ie(40, 50), ie(40, 45), "range2")
]
);
}
#[test]
+1 -2
View File
@@ -35,8 +35,8 @@ along with discrete_range_map. If not, see <https://www.gnu.org/licenses/>.
//! ## Example using an Inclusive-Exclusive range
//!
//! ```rust
//! use discrete_range_map::inclusive_interval::ie;
//! use discrete_range_map::DiscreteRangeMap;
//! use discrete_range_map::inclusive_interval::ie;
//!
//! let mut map = DiscreteRangeMap::new();
//!
@@ -370,7 +370,6 @@ along with discrete_range_map. If not, see <https://www.gnu.org/licenses/>.
//! [`DiscreteRangeMap`]: https://docs.rs/discrete_range_map/latest/discrete_range_map/discrete_range_map/struct.DiscreteRangeMap.html#
//! [`DiscreteRangeSet`]: https://docs.rs/discrete_range_map/latest/discrete_range_map/discrete_range_set/struct.DiscreteRangeSet.html#
#![feature(let_chains)]
#![feature(btree_cursors)]
#![feature(step_trait)]
#![allow(clippy::tabs_in_doc_comments)]