File tree 1 file changed +1
-33
lines changed
1 file changed +1
-33
lines changed Original file line number Diff line number Diff line change @@ -196,39 +196,7 @@ impl<T> TypedArena<T> {
196
196
197
197
pub fn alloc_from_iter < I : IntoIterator < Item =T > > ( & self , iter : I ) -> & [ T ] where T : Clone {
198
198
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 ( ) ;
232
200
if vec. is_empty ( ) {
233
201
return & [ ]
234
202
}
You can’t perform that action at this time.
0 commit comments