From 15174e6e48d85bfe84c303d780bc5d98337467a7 Mon Sep 17 00:00:00 2001 From: Benjamin Saunders Date: Fri, 5 Apr 2024 18:30:40 -0700 Subject: [PATCH] Simplify BTreeMap RangeSet min/max getters for Rust 1.66 --- quinn-proto/src/range_set/btree_range_set.rs | 5 +++-- quinn-proto/src/range_set/tests.rs | 10 ++++++++++ 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/quinn-proto/src/range_set/btree_range_set.rs b/quinn-proto/src/range_set/btree_range_set.rs index 8114cf146b..87035f0e45 100644 --- a/quinn-proto/src/range_set/btree_range_set.rs +++ b/quinn-proto/src/range_set/btree_range_set.rs @@ -177,10 +177,11 @@ impl RangeSet { } pub fn min(&self) -> Option { - self.iter().next().map(|x| x.start) + self.0.first_key_value().map(|(&start, _)| start) } + pub fn max(&self) -> Option { - self.iter().next_back().map(|x| x.end - 1) + self.0.last_key_value().map(|(_, &end)| end - 1) } pub fn len(&self) -> usize { diff --git a/quinn-proto/src/range_set/tests.rs b/quinn-proto/src/range_set/tests.rs index 6cdc70bff5..7959a28113 100644 --- a/quinn-proto/src/range_set/tests.rs +++ b/quinn-proto/src/range_set/tests.rs @@ -149,6 +149,16 @@ macro_rules! common_set_tests { } } + #[test] + fn minmax() { + let mut set = $set_type::new(); + set.insert(1..3); + set.insert(4..5); + set.insert(6..10); + assert_eq!(set.min(), Some(1)); + assert_eq!(set.max(), Some(9)); + } + fn create_initial_sets(max_range: u64) -> ($set_type, RefRangeSet) { let mut set = $set_type::new(); let mut reference = RefRangeSet::new(max_range as usize);