Skip to content

Commit 3082a7f

Browse files
committed
Revert "also broken"
1 parent a449d8c commit 3082a7f

File tree

1 file changed

+1
-33
lines changed

1 file changed

+1
-33
lines changed

src/libarena/lib.rs

+1-33
Original file line numberDiff line numberDiff line change
@@ -196,39 +196,7 @@ impl<T> TypedArena<T> {
196196

197197
pub fn alloc_from_iter<I: IntoIterator<Item=T>>(&self, iter: I) -> &[T] where T: Clone {
198198
assert!(mem::size_of::<T>() != 0);
199-
let mut iter = iter.into_iter();
200-
let size_hint = iter.size_hint();
201-
202-
match size_hint {
203-
(min, Some(max)) if min == max => {
204-
if min == 0 {
205-
return &[];
206-
}
207-
208-
if !self.can_allocate(min) {
209-
self.grow(min);
210-
}
211-
212-
let slice = self.ptr.get();
213-
214-
unsafe {
215-
let mut ptr = self.ptr.get();
216-
for _ in 0..min {
217-
// Write into uninitialized memory.
218-
ptr::write(ptr, iter.next().unwrap());
219-
// Advance the pointer.
220-
ptr = ptr.offset(1);
221-
// Update the pointer per iteration so if `iter.next()` panics
222-
// we destroy the correct amount
223-
self.ptr.set(ptr);
224-
}
225-
return slice::from_raw_parts_mut(slice, min);
226-
}
227-
}
228-
_ => (),
229-
}
230-
231-
let vec: Vec<_> = iter.collect();
199+
let vec: Vec<_> = iter.into_iter().collect();
232200
if vec.is_empty() {
233201
return &[]
234202
}

0 commit comments

Comments
 (0)