alnyan/yggdrasil: update btree_monstruosity
This commit is contained in:
parent
10fd79828d
commit
6b54882b19
6
Cargo.lock
generated
6
Cargo.lock
generated
@ -1,12 +1,12 @@
|
||||
# This file is automatically @generated by Cargo.
|
||||
# It is not intended for manual editing.
|
||||
version = 3
|
||||
version = 4
|
||||
|
||||
[[package]]
|
||||
name = "btree_monstrousity"
|
||||
version = "0.0.4"
|
||||
version = "0.0.5"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "b4d0977e9c15f276380f16f2e9594257c258172b23af39ffd2e4cf5971cb38c7"
|
||||
checksum = "2ec92912346b936c974181a172d9abc81f50d41e40118fc101dac8aa8134bee3"
|
||||
dependencies = [
|
||||
"cfg-if",
|
||||
"rustversion",
|
||||
|
@ -18,7 +18,7 @@ categories = ["data-structures"]
|
||||
|
||||
[dependencies]
|
||||
serde = { version = "1.0.193", features = ["derive"], default-features = false }
|
||||
btree_monstrousity = { version = "0.0.4", features = [
|
||||
btree_monstrousity = { version = "0.0.5", features = [
|
||||
"btree_drain_filter",
|
||||
"btree_cursors",
|
||||
], default-features = false }
|
||||
|
@ -25,10 +25,10 @@ use core::fmt::{self, Debug};
|
||||
use core::iter::once;
|
||||
use core::marker::PhantomData;
|
||||
|
||||
use btree_monstrousity::BTreeMap;
|
||||
use btree_monstrousity::btree_map::{
|
||||
IntoIter as BTreeMapIntoIter, SearchBoundCustom,
|
||||
};
|
||||
use btree_monstrousity::BTreeMap;
|
||||
use either::Either;
|
||||
use itertools::Itertools;
|
||||
use serde::de::{SeqAccess, Visitor};
|
||||
@ -53,8 +53,8 @@ use crate::{DiscreteFinite, InclusiveInterval};
|
||||
///
|
||||
/// # Examples
|
||||
/// ```
|
||||
/// use discrete_range_map::inclusive_interval::ie;
|
||||
/// use discrete_range_map::DiscreteRangeMap;
|
||||
/// use discrete_range_map::inclusive_interval::ie;
|
||||
///
|
||||
/// // Make a map of ranges to booleans
|
||||
/// let mut map = DiscreteRangeMap::from_slice_strict([
|
||||
@ -126,8 +126,8 @@ where
|
||||
///
|
||||
/// # Examples
|
||||
/// ```
|
||||
/// use discrete_range_map::inclusive_interval::{ie, ii};
|
||||
/// use discrete_range_map::DiscreteRangeMap;
|
||||
/// use discrete_range_map::inclusive_interval::{ie, ii};
|
||||
///
|
||||
/// let mut map = DiscreteRangeMap::new();
|
||||
///
|
||||
@ -159,8 +159,8 @@ where
|
||||
///
|
||||
/// # Examples
|
||||
/// ```
|
||||
/// use discrete_range_map::inclusive_interval::ie;
|
||||
/// use discrete_range_map::DiscreteRangeMap;
|
||||
/// use discrete_range_map::inclusive_interval::ie;
|
||||
///
|
||||
/// let map = DiscreteRangeMap::from_slice_strict([
|
||||
/// (ie(1, 4), false),
|
||||
@ -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,
|
||||
@ -206,8 +206,8 @@ where
|
||||
///
|
||||
/// # Examples
|
||||
/// ```
|
||||
/// use discrete_range_map::inclusive_interval::ie;
|
||||
/// use discrete_range_map::DiscreteRangeMap;
|
||||
/// use discrete_range_map::inclusive_interval::ie;
|
||||
///
|
||||
/// let mut map = DiscreteRangeMap::from_slice_strict([
|
||||
/// (ie(1, 4), false),
|
||||
@ -248,8 +248,8 @@ where
|
||||
///
|
||||
/// # Examples
|
||||
/// ```
|
||||
/// use discrete_range_map::inclusive_interval::ie;
|
||||
/// use discrete_range_map::DiscreteRangeMap;
|
||||
/// use discrete_range_map::inclusive_interval::ie;
|
||||
///
|
||||
/// let map = DiscreteRangeMap::from_slice_strict([
|
||||
/// (ie(1, 4), false),
|
||||
@ -271,8 +271,8 @@ where
|
||||
///
|
||||
/// # Examples
|
||||
/// ```
|
||||
/// use discrete_range_map::inclusive_interval::ie;
|
||||
/// use discrete_range_map::DiscreteRangeMap;
|
||||
/// use discrete_range_map::inclusive_interval::ie;
|
||||
/// let mut map =
|
||||
/// DiscreteRangeMap::from_slice_strict([(ie(1, 4), false)])
|
||||
/// .unwrap();
|
||||
@ -292,8 +292,8 @@ where
|
||||
///
|
||||
/// # Examples
|
||||
/// ```
|
||||
/// use discrete_range_map::inclusive_interval::ie;
|
||||
/// use discrete_range_map::DiscreteRangeMap;
|
||||
/// use discrete_range_map::inclusive_interval::ie;
|
||||
///
|
||||
/// let map = DiscreteRangeMap::from_slice_strict([
|
||||
/// (ie(1, 4), false),
|
||||
@ -318,8 +318,8 @@ where
|
||||
///
|
||||
/// # Examples
|
||||
/// ```
|
||||
/// use discrete_range_map::inclusive_interval::{ie, iu};
|
||||
/// use discrete_range_map::DiscreteRangeMap;
|
||||
/// use discrete_range_map::inclusive_interval::{ie, iu};
|
||||
///
|
||||
/// let map = DiscreteRangeMap::from_slice_strict([
|
||||
/// (ie(1, 4), false),
|
||||
@ -367,8 +367,8 @@ where
|
||||
///
|
||||
/// # Examples
|
||||
/// ```
|
||||
/// use discrete_range_map::inclusive_interval::ie;
|
||||
/// use discrete_range_map::DiscreteRangeMap;
|
||||
/// use discrete_range_map::inclusive_interval::ie;
|
||||
///
|
||||
/// let mut map = DiscreteRangeMap::from_slice_strict([
|
||||
/// (ie(1, 4), false),
|
||||
@ -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,
|
||||
@ -431,8 +431,8 @@ where
|
||||
///
|
||||
/// # Examples
|
||||
/// ```
|
||||
/// use discrete_range_map::inclusive_interval::{ie, ii};
|
||||
/// use discrete_range_map::DiscreteRangeMap;
|
||||
/// use discrete_range_map::inclusive_interval::{ie, ii};
|
||||
///
|
||||
/// let mut base = DiscreteRangeMap::from_slice_strict([
|
||||
/// (ie(1, 4), false),
|
||||
@ -447,10 +447,11 @@ 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)>
|
||||
@ -750,8 +751,8 @@ where
|
||||
///
|
||||
/// # Examples
|
||||
/// ```
|
||||
/// use discrete_range_map::inclusive_interval::{ie, ii, iu};
|
||||
/// use discrete_range_map::DiscreteRangeMap;
|
||||
/// use discrete_range_map::inclusive_interval::{ie, ii, iu};
|
||||
///
|
||||
/// let map = DiscreteRangeMap::from_slice_strict([
|
||||
/// (ie(1, 3), false),
|
||||
@ -762,15 +763,16 @@ 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,
|
||||
range: Q,
|
||||
) -> impl Iterator<Item = K> + '_
|
||||
) -> impl Iterator<Item = K> + 'a
|
||||
where
|
||||
Q: RangeType<I> + 'a,
|
||||
{
|
||||
@ -837,8 +839,8 @@ where
|
||||
///
|
||||
/// # Examples
|
||||
/// ```
|
||||
/// use discrete_range_map::inclusive_interval::{ie, ii, iu};
|
||||
/// use discrete_range_map::DiscreteRangeMap;
|
||||
/// use discrete_range_map::inclusive_interval::{ie, ii, iu};
|
||||
///
|
||||
/// let map = DiscreteRangeMap::from_slice_strict([
|
||||
/// (ie(1, 3), false),
|
||||
@ -849,15 +851,16 @@ 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,
|
||||
range: Q,
|
||||
) -> impl Iterator<Item = K> + '_
|
||||
) -> impl Iterator<Item = K> + 'a
|
||||
where
|
||||
Q: RangeType<I> + 'a,
|
||||
{
|
||||
@ -932,8 +935,8 @@ where
|
||||
///
|
||||
/// # Examples
|
||||
/// ```
|
||||
/// use discrete_range_map::inclusive_interval::ie;
|
||||
/// use discrete_range_map::DiscreteRangeMap;
|
||||
/// use discrete_range_map::inclusive_interval::ie;
|
||||
///
|
||||
/// let map = DiscreteRangeMap::from_slice_strict([
|
||||
/// (ie(1, 3), false),
|
||||
@ -1097,10 +1100,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,
|
||||
@ -1185,10 +1188,11 @@ 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,
|
||||
@ -1286,10 +1290,11 @@ 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);
|
||||
@ -1359,10 +1364,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,
|
||||
@ -1423,8 +1428,8 @@ where
|
||||
///
|
||||
/// # Examples
|
||||
/// ```
|
||||
/// use discrete_range_map::inclusive_interval::ie;
|
||||
/// use discrete_range_map::DiscreteRangeMap;
|
||||
/// use discrete_range_map::inclusive_interval::ie;
|
||||
///
|
||||
/// let mut map =
|
||||
/// DiscreteRangeMap::from_slice_strict([(ie(2, 8), false)])
|
||||
@ -1432,10 +1437,11 @@ 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,
|
||||
@ -1467,8 +1473,8 @@ where
|
||||
///
|
||||
/// # Examples
|
||||
/// ```
|
||||
/// use discrete_range_map::inclusive_interval::ie;
|
||||
/// use discrete_range_map::DiscreteRangeMap;
|
||||
/// use discrete_range_map::inclusive_interval::ie;
|
||||
///
|
||||
/// let map = DiscreteRangeMap::from_slice_strict([
|
||||
/// (ie(1, 4), false),
|
||||
@ -1501,8 +1507,8 @@ where
|
||||
///
|
||||
/// # Examples
|
||||
/// ```
|
||||
/// use discrete_range_map::inclusive_interval::ie;
|
||||
/// use discrete_range_map::DiscreteRangeMap;
|
||||
/// use discrete_range_map::inclusive_interval::ie;
|
||||
///
|
||||
/// let slice =
|
||||
/// [(ie(1, 4), false), (ie(4, 8), true), (ie(8, 100), false)];
|
||||
@ -1545,8 +1551,8 @@ impl<I, K, V> DiscreteRangeMap<I, K, V> {
|
||||
///
|
||||
/// # Examples
|
||||
/// ```
|
||||
/// use discrete_range_map::inclusive_interval::ie;
|
||||
/// use discrete_range_map::DiscreteRangeMap;
|
||||
/// use discrete_range_map::inclusive_interval::ie;
|
||||
///
|
||||
/// let mut map = DiscreteRangeMap::new();
|
||||
///
|
||||
@ -1563,8 +1569,8 @@ impl<I, K, V> DiscreteRangeMap<I, K, V> {
|
||||
///
|
||||
/// # Examples
|
||||
/// ```
|
||||
/// use discrete_range_map::inclusive_interval::ie;
|
||||
/// use discrete_range_map::DiscreteRangeMap;
|
||||
/// use discrete_range_map::inclusive_interval::ie;
|
||||
///
|
||||
/// let mut map = DiscreteRangeMap::new();
|
||||
///
|
||||
@ -1581,8 +1587,8 @@ impl<I, K, V> DiscreteRangeMap<I, K, V> {
|
||||
///
|
||||
/// # Examples
|
||||
/// ```
|
||||
/// use discrete_range_map::inclusive_interval::ie;
|
||||
/// use discrete_range_map::DiscreteRangeMap;
|
||||
/// use discrete_range_map::inclusive_interval::ie;
|
||||
///
|
||||
/// let map = DiscreteRangeMap::from_slice_strict([
|
||||
/// (ie(1, 4), false),
|
||||
@ -1607,8 +1613,8 @@ impl<I, K, V> DiscreteRangeMap<I, K, V> {
|
||||
///
|
||||
/// # Examples
|
||||
/// ```
|
||||
/// use discrete_range_map::inclusive_interval::ie;
|
||||
/// use discrete_range_map::DiscreteRangeMap;
|
||||
/// use discrete_range_map::inclusive_interval::ie;
|
||||
///
|
||||
/// let mut map = DiscreteRangeMap::from_slice_strict([
|
||||
/// (ie(1, 4), false),
|
||||
@ -1635,8 +1641,8 @@ impl<I, K, V> DiscreteRangeMap<I, K, V> {
|
||||
///
|
||||
/// # Examples
|
||||
/// ```
|
||||
/// use discrete_range_map::inclusive_interval::ie;
|
||||
/// use discrete_range_map::DiscreteRangeMap;
|
||||
/// use discrete_range_map::inclusive_interval::ie;
|
||||
///
|
||||
/// let map = DiscreteRangeMap::from_slice_strict([
|
||||
/// (ie(1, 4), false),
|
||||
@ -1970,7 +1976,7 @@ mod tests {
|
||||
|
||||
use super::*;
|
||||
use crate::inclusive_interval::{ee, ei, ie, ii, iu, ue, ui, uu};
|
||||
use crate::utils::{config, contains_point, Config, CutResult};
|
||||
use crate::utils::{Config, CutResult, config, contains_point};
|
||||
|
||||
//only every other number to allow mathematical_overlapping_definition
|
||||
//to test between bounds in finite using smaller intervalled finite
|
||||
@ -2017,18 +2023,13 @@ mod tests {
|
||||
Err(OverlapError { value: true }),
|
||||
basic_slice(),
|
||||
);
|
||||
assert_insert_strict(
|
||||
basic(),
|
||||
assert_insert_strict(basic(), (ei(4, 5), true), Ok(()), [
|
||||
(ui(4), false),
|
||||
(ei(4, 5), true),
|
||||
Ok(()),
|
||||
[
|
||||
(ui(4), false),
|
||||
(ei(4, 5), true),
|
||||
(ee(5, 7), true),
|
||||
(ii(7, 7), false),
|
||||
(ie(14, 16), 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>,
|
||||
@ -2163,17 +2164,12 @@ 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(),
|
||||
@ -2185,12 +2181,10 @@ 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),
|
||||
@ -2213,11 +2207,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)]);
|
||||
@ -2225,11 +2219,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),
|
||||
@ -2254,11 +2248,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)]);
|
||||
@ -2266,11 +2260,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),
|
||||
@ -2406,17 +2400,12 @@ 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),
|
||||
@ -2445,12 +2434,10 @@ mod tests {
|
||||
(ii(14, 18), true),
|
||||
],
|
||||
);
|
||||
assert_insert_merge_overlapping(
|
||||
basic(),
|
||||
(uu(), false),
|
||||
assert_insert_merge_overlapping(basic(), (uu(), false), uu(), [(
|
||||
uu(),
|
||||
[(uu(), false)],
|
||||
);
|
||||
false,
|
||||
)]);
|
||||
}
|
||||
fn assert_insert_merge_overlapping<const N: usize>(
|
||||
mut before: DiscreteRangeMap<i8, InclusiveInterval<i8>, bool>,
|
||||
@ -2592,15 +2579,12 @@ 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());
|
||||
}
|
||||
@ -2619,14 +2603,11 @@ 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]
|
||||
|
@ -101,7 +101,7 @@ where
|
||||
pub fn gaps_untrimmed<'a, Q>(
|
||||
&'a self,
|
||||
range: Q,
|
||||
) -> impl Iterator<Item = K> + '_
|
||||
) -> impl Iterator<Item = K> + 'a
|
||||
where
|
||||
Q: RangeType<I> + 'a,
|
||||
{
|
||||
@ -111,7 +111,7 @@ where
|
||||
pub fn gaps_trimmed<'a, Q>(
|
||||
&'a self,
|
||||
range: Q,
|
||||
) -> impl Iterator<Item = K> + '_
|
||||
) -> impl Iterator<Item = K> + 'a
|
||||
where
|
||||
Q: RangeType<I> + 'a,
|
||||
{
|
||||
|
Loading…
x
Reference in New Issue
Block a user