@@ -169,16 +169,16 @@ pub struct ArrayBuilder<T, N: ArrayLength<T>> {
169
169
170
170
impl < T , N : ArrayLength < T > > ArrayBuilder < T , N > {
171
171
#[ doc( hidden) ]
172
- pub fn new ( ) -> ArrayBuilder < T , N > {
172
+ pub unsafe fn new ( ) -> ArrayBuilder < T , N > {
173
173
ArrayBuilder {
174
- array : ManuallyDrop :: new ( unsafe { mem:: uninitialized ( ) } ) ,
174
+ array : ManuallyDrop :: new ( mem:: uninitialized ( ) ) ,
175
175
position : 0 ,
176
176
}
177
177
}
178
178
179
179
#[ doc( hidden) ]
180
- pub fn into_inner ( self ) -> GenericArray < T , N > {
181
- let array = unsafe { ptr:: read ( & self . array ) } ;
180
+ pub unsafe fn into_inner ( self ) -> GenericArray < T , N > {
181
+ let array = ptr:: read ( & self . array ) ;
182
182
183
183
mem:: forget ( self ) ;
184
184
@@ -204,7 +204,7 @@ pub struct ArrayConsumer<T, N: ArrayLength<T>> {
204
204
205
205
impl < T , N : ArrayLength < T > > ArrayConsumer < T , N > {
206
206
#[ doc( hidden) ]
207
- pub fn new ( array : GenericArray < T , N > ) -> ArrayConsumer < T , N > {
207
+ pub unsafe fn new ( array : GenericArray < T , N > ) -> ArrayConsumer < T , N > {
208
208
ArrayConsumer {
209
209
array : ManuallyDrop :: new ( array) ,
210
210
position : 0 ,
@@ -254,7 +254,7 @@ where
254
254
where
255
255
I : IntoIterator < Item = T > ,
256
256
{
257
- let mut destination = ArrayBuilder :: new ( ) ;
257
+ let mut destination = unsafe { ArrayBuilder :: new ( ) } ;
258
258
259
259
for ( src, dst) in iter. into_iter ( ) . zip ( destination. array . iter_mut ( ) ) {
260
260
unsafe {
@@ -268,7 +268,7 @@ where
268
268
from_iter_length_fail ( destination. position , N :: to_usize ( ) ) ;
269
269
}
270
270
271
- destination. into_inner ( )
271
+ unsafe { destination. into_inner ( ) }
272
272
}
273
273
}
274
274
@@ -293,7 +293,7 @@ where
293
293
where
294
294
F : FnMut ( usize ) -> T ,
295
295
{
296
- let mut destination = ArrayBuilder :: new ( ) ;
296
+ let mut destination = unsafe { ArrayBuilder :: new ( ) } ;
297
297
298
298
for ( i, dst) in destination. array . iter_mut ( ) . enumerate ( ) {
299
299
unsafe {
@@ -303,7 +303,7 @@ where
303
303
destination. position += 1 ;
304
304
}
305
305
306
- destination. into_inner ( )
306
+ unsafe { destination. into_inner ( ) }
307
307
}
308
308
309
309
#[ doc( hidden) ]
@@ -319,8 +319,8 @@ where
319
319
Self :: Length : ArrayLength < B > + ArrayLength < U > ,
320
320
F : FnMut ( B , Self :: Item ) -> U ,
321
321
{
322
- let mut left = ArrayConsumer :: new ( lhs) ;
323
- let mut right = ArrayConsumer :: new ( self ) ;
322
+ let mut left = unsafe { ArrayConsumer :: new ( lhs) } ;
323
+ let mut right = unsafe { ArrayConsumer :: new ( self ) } ;
324
324
325
325
let ArrayConsumer {
326
326
array : ref left_array,
@@ -350,7 +350,7 @@ where
350
350
Self :: Length : ArrayLength < B > + ArrayLength < U > ,
351
351
F : FnMut ( Lhs :: Item , Self :: Item ) -> U ,
352
352
{
353
- let mut right = ArrayConsumer :: new ( self ) ;
353
+ let mut right = unsafe { ArrayConsumer :: new ( self ) } ;
354
354
355
355
let ArrayConsumer {
356
356
array : ref right_array,
@@ -390,7 +390,7 @@ where
390
390
Self : MappedGenericSequence < T , U > ,
391
391
F : FnMut ( T ) -> U ,
392
392
{
393
- let mut source = ArrayConsumer :: new ( self ) ;
393
+ let mut source = unsafe { ArrayConsumer :: new ( self ) } ;
394
394
395
395
let ArrayConsumer {
396
396
ref array,
@@ -422,7 +422,7 @@ where
422
422
where
423
423
F : FnMut ( U , T ) -> U ,
424
424
{
425
- let mut source = ArrayConsumer :: new ( self ) ;
425
+ let mut source = unsafe { ArrayConsumer :: new ( self ) } ;
426
426
427
427
let ArrayConsumer {
428
428
ref array,
@@ -525,7 +525,7 @@ where
525
525
let iter = iter. into_iter ( ) ;
526
526
527
527
if iter. len ( ) == N :: to_usize ( ) {
528
- let mut destination = ArrayBuilder :: new ( ) ;
528
+ let mut destination = unsafe { ArrayBuilder :: new ( ) } ;
529
529
530
530
for ( dst, src) in destination. array . iter_mut ( ) . zip ( iter. into_iter ( ) ) {
531
531
unsafe {
@@ -535,7 +535,7 @@ where
535
535
destination. position += 1 ;
536
536
}
537
537
538
- Some ( destination. into_inner ( ) )
538
+ Some ( unsafe { destination. into_inner ( ) } )
539
539
} else {
540
540
None
541
541
}
0 commit comments