From 0c932f7cc7ff55253519e3465ddeea8fe69083be Mon Sep 17 00:00:00 2001 From: Mark Poliakov Date: Wed, 6 Aug 2025 17:27:50 +0300 Subject: [PATCH] alnyan/yggdrasil: update to new rustc --- src/discrete_range_map.rs | 281 +++++++++++++++++++++----------------- src/lib.rs | 3 +- 2 files changed, 153 insertions(+), 131 deletions(-) diff --git a/src/discrete_range_map.rs b/src/discrete_range_map.rs index cb3680b..a621ce5 100644 --- a/src/discrete_range_map.rs +++ b/src/discrete_range_map.rs @@ -171,10 +171,10 @@ where /// /// let mut overlapping = map.overlapping(ie(2, 8)); /// - /// assert_eq!(overlapping.collect::>(), [ - /// (&ie(1, 4), &false), - /// (&ie(4, 8), &true) - /// ]); + /// assert_eq!( + /// overlapping.collect::>(), + /// [(&ie(1, 4), &false), (&ie(4, 8), &true)] + /// ); /// ``` pub fn overlapping( &self, @@ -379,15 +379,15 @@ where /// /// let mut removed = map.remove_overlapping(ie(2, 8)); /// - /// assert_eq!(removed.collect::>(), [ - /// (ie(1, 4), false), - /// (ie(4, 8), true) - /// ]); + /// assert_eq!( + /// removed.collect::>(), + /// [(ie(1, 4), false), (ie(4, 8), true)] + /// ); /// - /// assert_eq!(map.into_iter().collect::>(), [( - /// ie(8, 100), - /// false - /// )]); + /// assert_eq!( + /// map.into_iter().collect::>(), + /// [(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::>(), [ - /// (ie(2, 4), false), - /// (ie(4, 8), true), - /// (ie(8, 40), false), - /// ]); + /// assert_eq!( + /// base.cut(ie(2, 40)).collect::>(), + /// [(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 @@ -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::>(), [ - /// ie(3, 5), - /// ie(7, 9), - /// iu(100) - /// ]); + /// assert_eq!( + /// gaps.collect::>(), + /// [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::>(), [ - /// ie(4, 5), - /// ie(7, 9), - /// ii(100, 120) - /// ]); + /// assert_eq!( + /// gaps.collect::>(), + /// [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::>(), [ - /// (ie(1, 8), true), - /// (ie(10, 16), false) - /// ]); + /// assert_eq!( + /// map.into_iter().collect::>(), + /// [(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::>(), [ - /// (ie(1, 4), false), - /// (ie(4, 8), true), - /// (ie(10, 16), false) - /// ]); + /// assert_eq!( + /// map.into_iter().collect::>(), + /// [(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::>(), [ - /// (ie(1, 4), false), - /// (ie(4, 8), false), - /// (ie(10, 16), false) - /// ]); + /// assert_eq!( + /// map.into_iter().collect::>(), + /// [(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::>(), [ - /// (ie(1, 8), false), - /// (ie(10, 16), false) - /// ]); + /// assert_eq!( + /// map.into_iter().collect::>(), + /// [(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::>(), [ - /// (ie(2, 4), false), - /// (ie(4, 6), true), - /// (ie(6, 8), false) - /// ]); + /// assert_eq!( + /// map.into_iter().collect::>(), + /// [(ie(2, 4), false), (ie(4, 6), true), (ie(6, 8), false)] + /// ); /// ``` pub fn insert_overwrite( &mut self, @@ -1702,7 +1700,7 @@ impl DiscreteRangeMap { /// ] /// ); /// assert!(map.is_empty()); - pub fn drain(&mut self) -> DrainIter { + 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( mut before: DiscreteRangeMap, 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( mut before: DiscreteRangeMap, 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] diff --git a/src/lib.rs b/src/lib.rs index f0bc278..8aa0eba 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -35,8 +35,8 @@ along with discrete_range_map. If not, see . //! ## 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 . //! [`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)]