Skip to content

Commit 6d88571

Browse files
committed
Remove FromIterator impl for ~[T]
1 parent 0c691df commit 6d88571

File tree

1 file changed

+0
-35
lines changed

1 file changed

+0
-35
lines changed

src/libstd/slice.rs

Lines changed: 0 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -2310,41 +2310,6 @@ impl<T> Drop for MoveItems<T> {
23102310
#[deprecated = "replaced by Rev<MoveItems<'a, T>>"]
23112311
pub type RevMoveItems<T> = Rev<MoveItems<T>>;
23122312

2313-
impl<A> FromIterator<A> for ~[A] {
2314-
fn from_iter<T: Iterator<A>>(mut iterator: T) -> ~[A] {
2315-
let mut xs: Vec<A> = iterator.collect();
2316-
2317-
// Must shrink so the capacity is the same as the length. The length of
2318-
// the ~[T] vector must exactly match the length of the allocation.
2319-
xs.shrink_to_fit();
2320-
2321-
let len = xs.len();
2322-
assert!(len == xs.capacity());
2323-
let data = xs.as_mut_ptr();
2324-
2325-
let data_size = len.checked_mul(&mem::size_of::<A>());
2326-
let data_size = data_size.expect("overflow in from_iter()");
2327-
let size = mem::size_of::<RawVec<()>>().checked_add(&data_size);
2328-
let size = size.expect("overflow in from_iter()");
2329-
2330-
2331-
// This is some terribly awful code. Note that all of this will go away
2332-
// with DST because creating ~[T] from Vec<T> will just be some pointer
2333-
// swizzling.
2334-
unsafe {
2335-
let ret = malloc_raw(size) as *mut RawVec<()>;
2336-
2337-
(*ret).fill = len * mem::nonzero_size_of::<A>();
2338-
(*ret).alloc = len * mem::nonzero_size_of::<A>();
2339-
ptr::copy_nonoverlapping_memory(&mut (*ret).data as *mut _ as *mut u8,
2340-
data as *u8,
2341-
data_size);
2342-
xs.set_len(0); // ownership has been transferred
2343-
cast::transmute(ret)
2344-
}
2345-
}
2346-
}
2347-
23482313
#[cfg(test)]
23492314
mod tests {
23502315
use prelude::*;

0 commit comments

Comments
 (0)