added from_iter_strict methods to the Map and Set data-structures
This commit is contained in:
Generated
+1
-1
@@ -36,7 +36,7 @@ checksum = "56254986775e3233ffa9c4d7d3faaf6d36a2c09d30b20687e9f88bc8bafc16c8"
|
||||
|
||||
[[package]]
|
||||
name = "discrete_range_map"
|
||||
version = "0.5.0"
|
||||
version = "0.5.1"
|
||||
dependencies = [
|
||||
"btree_monstrousity",
|
||||
"either",
|
||||
|
||||
@@ -1205,6 +1205,42 @@ where
|
||||
}
|
||||
return Ok(map);
|
||||
}
|
||||
|
||||
/// Collects a `DiscreteRangeMap` from an iterator of (range,
|
||||
/// value) tuples using [`DiscreteRangeMap::insert_strict()`].
|
||||
///
|
||||
/// May return an `Err` while inserting. See
|
||||
/// [`DiscreteRangeMap::insert_strict()`] for details.
|
||||
///
|
||||
/// # Panics
|
||||
///
|
||||
/// Panics if the given range is an invalid range. See [`Invalid
|
||||
/// Ranges`](https://docs.rs/discrete_range_map/latest/discrete_range_map/index.html#invalid-ranges)
|
||||
/// for more details.
|
||||
///
|
||||
/// # Examples
|
||||
/// ```
|
||||
/// use discrete_range_map::test_ranges::ie;
|
||||
/// use discrete_range_map::DiscreteRangeMap;
|
||||
///
|
||||
/// let slice =
|
||||
/// [(ie(1, 4), false), (ie(4, 8), true), (ie(8, 100), false)];
|
||||
///
|
||||
/// let map: DiscreteRangeMap<_, _, _> =
|
||||
/// DiscreteRangeMap::from_iter_strict(
|
||||
/// slice.into_iter().filter(|(range, _)| range.start > 2),
|
||||
/// )
|
||||
/// .unwrap();
|
||||
/// ```
|
||||
pub fn from_iter_strict(
|
||||
iter: impl Iterator<Item = (K, V)>,
|
||||
) -> Result<DiscreteRangeMap<I, K, V>, OverlapError> {
|
||||
let mut map = DiscreteRangeMap::new();
|
||||
for (range, value) in iter {
|
||||
map.insert_strict(range, value)?;
|
||||
}
|
||||
return Ok(map);
|
||||
}
|
||||
}
|
||||
|
||||
impl<I, K, V> DiscreteRangeMap<I, K, V> {
|
||||
|
||||
@@ -122,6 +122,16 @@ where
|
||||
}
|
||||
return Ok(set);
|
||||
}
|
||||
/// See [`DiscreteRangeMap::from_iter_strict()`] for more details.
|
||||
pub fn from_iter_strict(
|
||||
iter: impl Iterator<Item = K>,
|
||||
) -> Result<DiscreteRangeSet<I, K>, OverlapError> {
|
||||
let mut set = DiscreteRangeSet::new();
|
||||
for range in iter {
|
||||
set.insert_strict(range)?;
|
||||
}
|
||||
return Ok(set);
|
||||
}
|
||||
}
|
||||
|
||||
impl<I, K> DiscreteRangeSet<I, K> {
|
||||
|
||||
Reference in New Issue
Block a user