Auto merge of #22669 - dotdash:fast_slice_iter, r=huonw
This adds the assume() calls back that got lost when rebasing #21886.
This commit is contained in:
commit
1c93934fcf
2 changed files with 7 additions and 1 deletions
|
@ -433,8 +433,10 @@ impl<T> Vec<T> {
|
|||
#[stable(feature = "rust1", since = "1.0.0")]
|
||||
pub fn as_mut_slice(&mut self) -> &mut [T] {
|
||||
unsafe {
|
||||
let ptr = *self.ptr;
|
||||
assume(!ptr.is_null());
|
||||
mem::transmute(RawSlice {
|
||||
data: *self.ptr,
|
||||
data: ptr,
|
||||
len: self.len,
|
||||
})
|
||||
}
|
||||
|
@ -458,6 +460,7 @@ impl<T> Vec<T> {
|
|||
pub fn into_iter(self) -> IntoIter<T> {
|
||||
unsafe {
|
||||
let ptr = *self.ptr;
|
||||
assume(!ptr.is_null());
|
||||
let cap = self.cap;
|
||||
let begin = ptr as *const T;
|
||||
let end = if mem::size_of::<T>() == 0 {
|
||||
|
|
|
@ -40,6 +40,7 @@ use cmp::{Ordering, PartialEq, PartialOrd, Eq, Ord};
|
|||
use cmp::Ordering::{Less, Equal, Greater};
|
||||
use cmp;
|
||||
use default::Default;
|
||||
use intrinsics::assume;
|
||||
use iter::*;
|
||||
use ops::{FnMut, self, Index};
|
||||
use ops::RangeFull;
|
||||
|
@ -137,6 +138,7 @@ impl<T> SliceExt for [T] {
|
|||
fn iter<'a>(&'a self) -> Iter<'a, T> {
|
||||
unsafe {
|
||||
let p = self.as_ptr();
|
||||
assume(!p.is_null());
|
||||
if mem::size_of::<T>() == 0 {
|
||||
Iter {ptr: p,
|
||||
end: (p as usize + self.len()) as *const T,
|
||||
|
@ -276,6 +278,7 @@ impl<T> SliceExt for [T] {
|
|||
fn iter_mut<'a>(&'a mut self) -> IterMut<'a, T> {
|
||||
unsafe {
|
||||
let p = self.as_mut_ptr();
|
||||
assume(!p.is_null());
|
||||
if mem::size_of::<T>() == 0 {
|
||||
IterMut {ptr: p,
|
||||
end: (p as usize + self.len()) as *mut T,
|
||||
|
|
Loading…
Add table
Reference in a new issue