From bdd2aef527953c69a5202c1ad3516e397b23ad85 Mon Sep 17 00:00:00 2001 From: ripytide Date: Wed, 27 Dec 2023 15:15:53 +0000 Subject: [PATCH] fixed #51 and fixed #54 --- src/discrete_finite.rs | 2 +- src/discrete_range_map.rs | 18 ++++++++++-------- src/discrete_range_set.rs | 8 ++++---- 3 files changed, 15 insertions(+), 13 deletions(-) diff --git a/src/discrete_finite.rs b/src/discrete_finite.rs index 821db3d..ad8d528 100644 --- a/src/discrete_finite.rs +++ b/src/discrete_finite.rs @@ -58,4 +58,4 @@ macro_rules! foo { }; } -foo!(u8, i8, u16, i16, u32, i32, u64, i64, u128, i128,); +foo!(u8, i8, u16, i16, u32, i32, u64, i64, u128, i128, usize,); diff --git a/src/discrete_range_map.rs b/src/discrete_range_map.rs index f70ee48..a640d52 100644 --- a/src/discrete_range_map.rs +++ b/src/discrete_range_map.rs @@ -392,7 +392,7 @@ where pub fn remove_overlapping<'a, Q>( &'a mut self, range: Q, - ) -> impl Iterator + '_ + ) -> impl Iterator where Q: RangeType + 'a, { @@ -453,10 +453,7 @@ where /// ); /// assert_eq!(base, after_cut); /// ``` - pub fn cut<'a, Q>( - &'a mut self, - range: Q, - ) -> impl Iterator + '_ + pub fn cut<'a, Q>(&'a mut self, range: Q) -> impl Iterator where Q: RangeType + 'a, V: Clone, @@ -522,7 +519,7 @@ where range: Q, left_overlapping: Option, right_overlapping: Option, - ) -> impl Iterator + '_ + ) -> impl Iterator where Q: RangeType + 'a, V: Clone, @@ -1194,14 +1191,19 @@ where /// [(ie(2, 4), false), (ie(4, 6), true), (ie(6, 8), false)] /// ); /// ``` - pub fn insert_overwrite(&mut self, range: K, value: V) + pub fn insert_overwrite( + &mut self, + range: K, + value: V, + ) -> impl Iterator where V: Clone, { invalid_range_panic(range); - let _ = self.cut(range); + let cut = self.cut(range); self.insert_unchecked(range, value); + cut } /// Allocates a `DiscreteRangeMap` and moves the given entries from diff --git a/src/discrete_range_set.rs b/src/discrete_range_set.rs index 0a9a618..006953c 100644 --- a/src/discrete_range_set.rs +++ b/src/discrete_range_set.rs @@ -84,14 +84,14 @@ where pub fn remove_overlapping<'a, Q>( &'a mut self, range: Q, - ) -> impl Iterator + '_ + ) -> impl Iterator where Q: RangeType + 'a, { self.inner.remove_overlapping(range).map(first) } /// See [`DiscreteRangeMap::cut()`] for more details. - pub fn cut<'a, Q>(&'a mut self, range: Q) -> impl Iterator + '_ + pub fn cut<'a, Q>(&'a mut self, range: Q) -> impl Iterator where Q: RangeType + 'a, { @@ -131,8 +131,8 @@ where self.inner.insert_merge_touching_or_overlapping(range, ()) } /// See [`DiscreteRangeMap::insert_overwrite()`] for more details. - pub fn insert_overwrite(&mut self, range: K) { - self.inner.insert_overwrite(range, ()) + pub fn insert_overwrite(&mut self, range: K) -> impl Iterator { + self.inner.insert_overwrite(range, ()).map(first) } /// See [`DiscreteRangeMap::from_slice_strict()`] for more details. pub fn from_slice_strict(