Skip to content

Commit 7242c54

Browse files
committed
Use built-in indexing for Bound pairs
1 parent 0241a18 commit 7242c54

File tree

2 files changed

+6
-64
lines changed

2 files changed

+6
-64
lines changed

src/map/slice.rs

Lines changed: 3 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
use super::{Bucket, Entries, IndexMap, Iter, IterMut, Keys, Values, ValuesMut};
2-
use crate::util::{simplify_range, try_simplify_range};
2+
use crate::util::try_simplify_range;
33

44
use core::cmp::Ordering;
55
use core::fmt;
@@ -308,47 +308,10 @@ impl_index!(
308308
ops::RangeFull,
309309
ops::RangeInclusive<usize>,
310310
ops::RangeTo<usize>,
311-
ops::RangeToInclusive<usize>
311+
ops::RangeToInclusive<usize>,
312+
(Bound<usize>, Bound<usize>)
312313
);
313314

314-
// NB: with MSRV 1.53, we can forward `Bound` pairs to direct slice indexing like other ranges
315-
316-
impl<K, V, S> Index<(Bound<usize>, Bound<usize>)> for IndexMap<K, V, S> {
317-
type Output = Slice<K, V>;
318-
319-
fn index(&self, range: (Bound<usize>, Bound<usize>)) -> &Self::Output {
320-
let entries = self.as_entries();
321-
let range = simplify_range(range, entries.len());
322-
Slice::from_slice(&entries[range])
323-
}
324-
}
325-
326-
impl<K, V, S> IndexMut<(Bound<usize>, Bound<usize>)> for IndexMap<K, V, S> {
327-
fn index_mut(&mut self, range: (Bound<usize>, Bound<usize>)) -> &mut Self::Output {
328-
let entries = self.as_entries_mut();
329-
let range = simplify_range(range, entries.len());
330-
Slice::from_mut_slice(&mut entries[range])
331-
}
332-
}
333-
334-
impl<K, V> Index<(Bound<usize>, Bound<usize>)> for Slice<K, V> {
335-
type Output = Slice<K, V>;
336-
337-
fn index(&self, range: (Bound<usize>, Bound<usize>)) -> &Self {
338-
let entries = &self.entries;
339-
let range = simplify_range(range, entries.len());
340-
Slice::from_slice(&entries[range])
341-
}
342-
}
343-
344-
impl<K, V> IndexMut<(Bound<usize>, Bound<usize>)> for Slice<K, V> {
345-
fn index_mut(&mut self, range: (Bound<usize>, Bound<usize>)) -> &mut Self {
346-
let entries = &mut self.entries;
347-
let range = simplify_range(range, entries.len());
348-
Slice::from_mut_slice(&mut entries[range])
349-
}
350-
}
351-
352315
#[cfg(test)]
353316
mod tests {
354317
use super::*;

src/set/slice.rs

Lines changed: 3 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
use super::{Bucket, Entries, IndexSet, Iter};
2-
use crate::util::{simplify_range, try_simplify_range};
2+
use crate::util::try_simplify_range;
33

44
use core::cmp::Ordering;
55
use core::fmt;
@@ -184,31 +184,10 @@ impl_index!(
184184
ops::RangeFull,
185185
ops::RangeInclusive<usize>,
186186
ops::RangeTo<usize>,
187-
ops::RangeToInclusive<usize>
187+
ops::RangeToInclusive<usize>,
188+
(Bound<usize>, Bound<usize>)
188189
);
189190

190-
// NB: with MSRV 1.53, we can forward `Bound` pairs to direct slice indexing like other ranges
191-
192-
impl<T, S> Index<(Bound<usize>, Bound<usize>)> for IndexSet<T, S> {
193-
type Output = Slice<T>;
194-
195-
fn index(&self, range: (Bound<usize>, Bound<usize>)) -> &Self::Output {
196-
let entries = self.as_entries();
197-
let range = simplify_range(range, entries.len());
198-
Slice::from_slice(&entries[range])
199-
}
200-
}
201-
202-
impl<T> Index<(Bound<usize>, Bound<usize>)> for Slice<T> {
203-
type Output = Self;
204-
205-
fn index(&self, range: (Bound<usize>, Bound<usize>)) -> &Self::Output {
206-
let entries = &self.entries;
207-
let range = simplify_range(range, entries.len());
208-
Slice::from_slice(&entries[range])
209-
}
210-
}
211-
212191
#[cfg(test)]
213192
mod tests {
214193
use super::*;

0 commit comments

Comments
 (0)