Skip to content

Commit 592eaa5

Browse files
committed
specialize zip: Implement TrustedRandomAccess for slice iterators
1 parent f8d2fdf commit 592eaa5

File tree

1 file changed

+15
-0
lines changed

1 file changed

+15
-0
lines changed

src/libcore/slice.rs

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,7 @@ use result::Result::{Ok, Err};
5050
use ptr;
5151
use mem;
5252
use marker::{Copy, Send, Sync, self};
53+
use iter_private::TrustedRandomAccess;
5354

5455
#[repr(C)]
5556
struct Repr<T> {
@@ -1942,3 +1943,17 @@ macro_rules! impl_marker_for {
19421943

19431944
impl_marker_for!(BytewiseEquality,
19441945
u8 i8 u16 i16 u32 i32 u64 i64 usize isize char bool);
1946+
1947+
#[doc(hidden)]
1948+
unsafe impl<'a, T> TrustedRandomAccess for Iter<'a, T> {
1949+
unsafe fn get_unchecked(&mut self, i: usize) -> &'a T {
1950+
&*self.ptr.offset(i as isize)
1951+
}
1952+
}
1953+
1954+
#[doc(hidden)]
1955+
unsafe impl<'a, T> TrustedRandomAccess for IterMut<'a, T> {
1956+
unsafe fn get_unchecked(&mut self, i: usize) -> &'a mut T {
1957+
&mut *self.ptr.offset(i as isize)
1958+
}
1959+
}

0 commit comments

Comments
 (0)