alnyan/yggdrasil: update to new rustc
This commit is contained in:
+152
-129
@@ -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
@@ -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)]
|
||||
|
||||
Reference in New Issue
Block a user