diff options
| author | Ralf Jung <post@ralfj.de> | 2018-07-19 12:41:10 +0200 |
|---|---|---|
| committer | Ralf Jung <post@ralfj.de> | 2018-08-02 00:33:03 +0200 |
| commit | 1b3c6bac8b91d881b2e8b9cb6ea35a8a13c1f804 (patch) | |
| tree | bb9463337b90b8a6e86f2b832e00cceb910701a9 | |
| parent | 60b06369eea523b9d8fe606357177f126bef4b42 (diff) | |
| download | rust-1b3c6bac8b91d881b2e8b9cb6ea35a8a13c1f804.tar.gz rust-1b3c6bac8b91d881b2e8b9cb6ea35a8a13c1f804.zip | |
make the code for nth closer to what it used to be
| -rw-r--r-- | src/libcore/slice/mod.rs | 7 |
1 files changed, 4 insertions, 3 deletions
diff --git a/src/libcore/slice/mod.rs b/src/libcore/slice/mod.rs index 5250f1e432d..ec0f9317578 100644 --- a/src/libcore/slice/mod.rs +++ b/src/libcore/slice/mod.rs @@ -2382,11 +2382,12 @@ macro_rules! iterator { impl<'a, T> ExactSizeIterator for $name<'a, T> { #[inline(always)] fn len(&self) -> usize { + let diff = (self.end as usize).wrapping_sub(self.ptr as usize); if mem::size_of::<T>() == 0 { - // end is really ptr+len - (self.end as usize).wrapping_sub(self.ptr as usize) + // end is really ptr+len, so we are already done + diff } else { - unsafe { self.end.offset_from(self.ptr) as usize } + diff / mem::size_of::<T>() } } |
