@@ -50,10 +50,10 @@ mod impls;
50
50
pub mod impl_serde;
51
51
52
52
use core:: { mem, ptr, slice} ;
53
+ use core:: iter:: FromIterator ;
53
54
use core:: marker:: PhantomData ;
54
55
use core:: mem:: ManuallyDrop ;
55
56
use core:: ops:: { Deref , DerefMut } ;
56
- use core:: iter:: FromIterator ;
57
57
use typenum:: bit:: { B0 , B1 } ;
58
58
use typenum:: uint:: { UInt , UTerm , Unsigned } ;
59
59
@@ -63,10 +63,9 @@ pub mod iter;
63
63
pub mod sequence;
64
64
pub mod functional;
65
65
66
- use sequence:: * ;
67
66
use functional:: * ;
68
-
69
67
pub use iter:: GenericArrayIter ;
68
+ use sequence:: * ;
70
69
71
70
/// Trait making `GenericArray` work, marking types to be used as length of an array
72
71
pub unsafe trait ArrayLength < T > : Unsigned {
@@ -220,7 +219,7 @@ impl<T, N: ArrayLength<T>> Drop for ArrayConsumer<T, N> {
220
219
221
220
impl < ' a , T : ' a , N > IntoIterator for & ' a GenericArray < T , N >
222
221
where
223
- N : ArrayLength < T >
222
+ N : ArrayLength < T > ,
224
223
{
225
224
type IntoIter = slice:: Iter < ' a , T > ;
226
225
type Item = & ' a T ;
@@ -232,7 +231,7 @@ where
232
231
233
232
impl < ' a , T : ' a , N > IntoIterator for & ' a mut GenericArray < T , N >
234
233
where
235
- N : ArrayLength < T >
234
+ N : ArrayLength < T > ,
236
235
{
237
236
type IntoIter = slice:: IterMut < ' a , T > ;
238
237
type Item = & ' a mut T ;
@@ -271,13 +270,16 @@ where
271
270
#[ inline( never) ]
272
271
#[ cold]
273
272
fn from_iter_length_fail ( length : usize , expected : usize ) -> ! {
274
- panic ! ( "GenericArray::from_iter received {} elements but expected {}" , length, expected) ;
273
+ panic ! (
274
+ "GenericArray::from_iter received {} elements but expected {}" ,
275
+ length, expected
276
+ ) ;
275
277
}
276
278
277
279
unsafe impl < T , N > GenericSequence < T > for GenericArray < T , N >
278
280
where
279
281
N : ArrayLength < T > ,
280
- Self : IntoIterator < Item = T > ,
282
+ Self : IntoIterator < Item = T > ,
281
283
{
282
284
type Length = N ;
283
285
type Sequence = Self ;
@@ -300,20 +302,29 @@ where
300
302
}
301
303
302
304
#[ doc( hidden) ]
303
- fn inverted_zip < B , U , F > ( self , lhs : GenericArray < B , Self :: Length > , mut f : F ) -> MappedSequence < GenericArray < B , Self :: Length > , B , U >
305
+ fn inverted_zip < B , U , F > (
306
+ self ,
307
+ lhs : GenericArray < B , Self :: Length > ,
308
+ mut f : F ,
309
+ ) -> MappedSequence < GenericArray < B , Self :: Length > , B , U >
304
310
where
305
- GenericArray < B , Self :: Length > :
306
- GenericSequence < B , Length =Self :: Length > +
307
- MappedGenericSequence < B , U > ,
311
+ GenericArray < B , Self :: Length > : GenericSequence < B , Length = Self :: Length >
312
+ + MappedGenericSequence < B , U > ,
308
313
Self : MappedGenericSequence < T , U > ,
309
314
Self :: Length : ArrayLength < B > + ArrayLength < U > ,
310
- F : FnMut ( B , Self :: Item ) -> U
315
+ F : FnMut ( B , Self :: Item ) -> U ,
311
316
{
312
317
let mut left = ArrayConsumer :: new ( lhs) ;
313
318
let mut right = ArrayConsumer :: new ( self ) ;
314
319
315
- let ArrayConsumer { array : ref left_array, position : ref mut left_position } = left;
316
- let ArrayConsumer { array : ref right_array, position : ref mut right_position } = right;
320
+ let ArrayConsumer {
321
+ array : ref left_array,
322
+ position : ref mut left_position,
323
+ } = left;
324
+ let ArrayConsumer {
325
+ array : ref right_array,
326
+ position : ref mut right_position,
327
+ } = right;
317
328
318
329
FromIterator :: from_iter ( left_array. iter ( ) . zip ( right_array. iter ( ) ) . map ( |( l, r) | {
319
330
let left_value = unsafe { ptr:: read ( l) } ;
@@ -329,37 +340,44 @@ where
329
340
#[ doc( hidden) ]
330
341
fn inverted_zip2 < B , Lhs , U , F > ( self , lhs : Lhs , mut f : F ) -> MappedSequence < Lhs , B , U >
331
342
where
332
- Lhs : GenericSequence < B , Length = Self :: Length > + MappedGenericSequence < B , U > ,
343
+ Lhs : GenericSequence < B , Length = Self :: Length > + MappedGenericSequence < B , U > ,
333
344
Self : MappedGenericSequence < T , U > ,
334
345
Self :: Length : ArrayLength < B > + ArrayLength < U > ,
335
- F : FnMut ( Lhs :: Item , Self :: Item ) -> U
346
+ F : FnMut ( Lhs :: Item , Self :: Item ) -> U ,
336
347
{
337
348
let mut right = ArrayConsumer :: new ( self ) ;
338
349
339
- let ArrayConsumer { array : ref right_array, position : ref mut right_position } = right;
350
+ let ArrayConsumer {
351
+ array : ref right_array,
352
+ position : ref mut right_position,
353
+ } = right;
340
354
341
- FromIterator :: from_iter ( lhs. into_iter ( ) . zip ( right_array. iter ( ) ) . map ( |( left_value, r) | {
342
- let right_value = unsafe { ptr:: read ( r) } ;
355
+ FromIterator :: from_iter (
356
+ lhs. into_iter ( )
357
+ . zip ( right_array. iter ( ) )
358
+ . map ( |( left_value, r) | {
359
+ let right_value = unsafe { ptr:: read ( r) } ;
343
360
344
- * right_position += 1 ;
361
+ * right_position += 1 ;
345
362
346
- f ( left_value, right_value)
347
- } ) )
363
+ f ( left_value, right_value)
364
+ } ) ,
365
+ )
348
366
}
349
367
}
350
368
351
369
unsafe impl < T , U , N > MappedGenericSequence < T , U > for GenericArray < T , N >
352
370
where
353
371
N : ArrayLength < T > + ArrayLength < U > ,
354
- GenericArray < U , N > : GenericSequence < U , Length = N > ,
372
+ GenericArray < U , N > : GenericSequence < U , Length = N > ,
355
373
{
356
374
type Mapped = GenericArray < U , N > ;
357
375
}
358
376
359
377
unsafe impl < T , N > FunctionalSequence < T > for GenericArray < T , N >
360
378
where
361
379
N : ArrayLength < T > ,
362
- Self : GenericSequence < T , Item = T , Length = N >
380
+ Self : GenericSequence < T , Item = T , Length = N > ,
363
381
{
364
382
fn map < U , F > ( self , mut f : F ) -> MappedSequence < Self , T , U >
365
383
where
@@ -369,7 +387,10 @@ where
369
387
{
370
388
let mut source = ArrayConsumer :: new ( self ) ;
371
389
372
- let ArrayConsumer { ref array, ref mut position } = source;
390
+ let ArrayConsumer {
391
+ ref array,
392
+ ref mut position,
393
+ } = source;
373
394
374
395
FromIterator :: from_iter ( array. iter ( ) . map ( |src| {
375
396
let value = unsafe { ptr:: read ( src) } ;
@@ -384,21 +405,24 @@ where
384
405
fn zip < B , Rhs , U , F > ( self , rhs : Rhs , f : F ) -> MappedSequence < Self , T , U >
385
406
where
386
407
Self : MappedGenericSequence < T , U > ,
387
- Rhs : MappedGenericSequence < B , U , Mapped = MappedSequence < Self , T , U > > ,
408
+ Rhs : MappedGenericSequence < B , U , Mapped = MappedSequence < Self , T , U > > ,
388
409
Self :: Length : ArrayLength < B > + ArrayLength < U > ,
389
- Rhs : GenericSequence < B , Length = Self :: Length > ,
410
+ Rhs : GenericSequence < B , Length = Self :: Length > ,
390
411
F : FnMut ( T , Rhs :: Item ) -> U ,
391
412
{
392
413
rhs. inverted_zip ( self , f)
393
414
}
394
415
395
416
fn fold < U , F > ( self , init : U , mut f : F ) -> U
396
417
where
397
- F : FnMut ( U , T ) -> U
418
+ F : FnMut ( U , T ) -> U ,
398
419
{
399
420
let mut source = ArrayConsumer :: new ( self ) ;
400
421
401
- let ArrayConsumer { ref array, ref mut position } = source;
422
+ let ArrayConsumer {
423
+ ref array,
424
+ ref mut position,
425
+ } = source;
402
426
403
427
array. iter ( ) . fold ( init, |acc, src| {
404
428
let value = unsafe { ptr:: read ( src) } ;
0 commit comments