@@ -62,13 +62,13 @@ macro_rules! array_ref {
62
62
& * ( slice. as_ptr( ) as * const [ _; $len] )
63
63
}
64
64
let offset = $offset;
65
- let slice = & $arr[ offset..offset + $len] ;
65
+ let slice = & $arr[ offset..offset + $len] ;
66
66
#[ allow( unused_unsafe) ]
67
67
unsafe {
68
68
as_array( slice)
69
69
}
70
70
}
71
- } }
71
+ } } ;
72
72
}
73
73
74
74
/// You can use `array_refs` to generate a series of array references
@@ -174,7 +174,6 @@ macro_rules! array_refs {
174
174
} }
175
175
}
176
176
177
-
178
177
/// You can use `mut_array_refs` to generate a series of mutable array
179
178
/// references to an input mutable array reference. The idea is if
180
179
/// you want to break an array into a series of contiguous and
@@ -327,210 +326,203 @@ macro_rules! array_mut_ref {
327
326
as_array( slice)
328
327
}
329
328
}
330
- } }
329
+ } } ;
331
330
}
332
331
333
-
334
332
#[ allow( clippy:: all) ]
335
333
#[ cfg( test) ]
336
334
mod test {
337
335
338
- extern crate quickcheck;
336
+ extern crate quickcheck;
339
337
340
- use std:: vec:: Vec ;
338
+ use std:: vec:: Vec ;
341
339
342
- // use super::*;
340
+ // use super::*;
343
341
344
- #[ test]
345
- #[ should_panic]
346
- fn checks_bounds ( ) {
347
- let foo: [ u8 ; 11 ] = [ 0 , 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 10 ] ;
348
- let bar = array_ref ! ( foo, 1 , 11 ) ;
349
- println ! ( "I am checking that I can dereference bar[0] = {}" , bar[ 0 ] ) ;
350
- }
351
-
352
- #[ test]
353
- fn simple_case_works ( ) {
354
- fn check ( expected : [ u8 ; 3 ] , actual : & [ u8 ; 3 ] ) {
355
- for ( e, a) in ( & expected) . iter ( ) . zip ( actual. iter ( ) ) {
356
- assert_eq ! ( e, a)
357
- }
358
- }
359
- let mut foo: [ u8 ; 11 ] = [ 0 , 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 10 ] ;
360
- {
361
- let bar = array_ref ! ( foo, 2 , 3 ) ;
362
- check ( [ 2 , 3 , 4 ] , bar) ;
342
+ #[ test]
343
+ #[ should_panic]
344
+ fn checks_bounds ( ) {
345
+ let foo: [ u8 ; 11 ] = [ 0 , 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 10 ] ;
346
+ let bar = array_ref ! ( foo, 1 , 11 ) ;
347
+ println ! ( "I am checking that I can dereference bar[0] = {}" , bar[ 0 ] ) ;
363
348
}
364
- check ( [ 0 , 1 , 2 ] , array_ref ! ( foo, 0 , 3 ) ) ;
365
- fn zero2 ( x : & mut [ u8 ; 2 ] ) {
366
- x[ 0 ] = 0 ;
367
- x[ 1 ] = 0 ;
368
- }
369
- zero2 ( array_mut_ref ! ( foo, 8 , 2 ) ) ;
370
- check ( [ 0 , 0 , 10 ] , array_ref ! ( foo, 8 , 3 ) ) ;
371
- }
372
-
373
349
374
- #[ test]
375
- fn check_array_ref_5 ( ) {
376
- fn f ( data : Vec < u8 > , offset : usize ) -> quickcheck:: TestResult {
377
- if data. len ( ) < offset + 5 {
378
- return quickcheck:: TestResult :: discard ( ) ;
350
+ #[ test]
351
+ fn simple_case_works ( ) {
352
+ fn check ( expected : [ u8 ; 3 ] , actual : & [ u8 ; 3 ] ) {
353
+ for ( e, a) in ( & expected) . iter ( ) . zip ( actual. iter ( ) ) {
354
+ assert_eq ! ( e, a)
355
+ }
379
356
}
380
- let out = array_ref ! ( data, offset, 5 ) ;
381
- quickcheck:: TestResult :: from_bool ( out. len ( ) == 5 )
382
- }
383
- quickcheck:: quickcheck ( f as fn ( Vec < u8 > , usize ) -> quickcheck:: TestResult ) ;
384
- }
385
-
386
- #[ test]
387
- fn check_array_ref_out_of_bounds_5 ( ) {
388
- fn f ( data : Vec < u8 > , offset : usize ) -> quickcheck:: TestResult {
389
- if data. len ( ) >= offset + 5 {
390
- return quickcheck:: TestResult :: discard ( ) ;
357
+ let mut foo: [ u8 ; 11 ] = [ 0 , 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 10 ] ;
358
+ {
359
+ let bar = array_ref ! ( foo, 2 , 3 ) ;
360
+ check ( [ 2 , 3 , 4 ] , bar) ;
361
+ }
362
+ check ( [ 0 , 1 , 2 ] , array_ref ! ( foo, 0 , 3 ) ) ;
363
+ fn zero2 ( x : & mut [ u8 ; 2 ] ) {
364
+ x[ 0 ] = 0 ;
365
+ x[ 1 ] = 0 ;
391
366
}
392
- quickcheck:: TestResult :: must_fail ( move || {
393
- array_ref ! ( data, offset, 5 ) ;
394
- } )
367
+ zero2 ( array_mut_ref ! ( foo, 8 , 2 ) ) ;
368
+ check ( [ 0 , 0 , 10 ] , array_ref ! ( foo, 8 , 3 ) ) ;
395
369
}
396
- quickcheck:: quickcheck ( f as fn ( Vec < u8 > , usize ) -> quickcheck:: TestResult ) ;
397
- }
398
370
399
- #[ test]
400
- fn check_array_mut_ref_7 ( ) {
401
- fn f ( mut data : Vec < u8 > , offset : usize ) -> quickcheck:: TestResult {
402
- if data. len ( ) < offset + 7 {
403
- return quickcheck:: TestResult :: discard ( ) ;
371
+ #[ test]
372
+ fn check_array_ref_5 ( ) {
373
+ fn f ( data : Vec < u8 > , offset : usize ) -> quickcheck:: TestResult {
374
+ if data. len ( ) < offset + 5 {
375
+ return quickcheck:: TestResult :: discard ( ) ;
376
+ }
377
+ let out = array_ref ! ( data, offset, 5 ) ;
378
+ quickcheck:: TestResult :: from_bool ( out. len ( ) == 5 )
404
379
}
405
- let out = array_mut_ref ! ( data, offset, 7 ) ;
406
- out[ 6 ] = 3 ;
407
- quickcheck:: TestResult :: from_bool ( out. len ( ) == 7 )
380
+ quickcheck:: quickcheck ( f as fn ( Vec < u8 > , usize ) -> quickcheck:: TestResult ) ;
408
381
}
409
- quickcheck:: quickcheck ( f as fn ( Vec < u8 > , usize ) -> quickcheck:: TestResult ) ;
410
- }
411
382
412
-
413
- #[ test]
414
- fn check_array_mut_ref_out_of_bounds_32 ( ) {
415
- fn f ( mut data : Vec < u8 > , offset : usize ) -> quickcheck:: TestResult {
416
- if data. len ( ) >= offset + 32 {
417
- return quickcheck:: TestResult :: discard ( ) ;
383
+ #[ test]
384
+ fn check_array_ref_out_of_bounds_5 ( ) {
385
+ fn f ( data : Vec < u8 > , offset : usize ) -> quickcheck:: TestResult {
386
+ if data. len ( ) >= offset + 5 {
387
+ return quickcheck:: TestResult :: discard ( ) ;
388
+ }
389
+ quickcheck:: TestResult :: must_fail ( move || {
390
+ array_ref ! ( data, offset, 5 ) ;
391
+ } )
418
392
}
419
- quickcheck:: TestResult :: must_fail ( move || {
420
- array_mut_ref ! ( data, offset, 32 ) ;
421
- } )
393
+ quickcheck:: quickcheck ( f as fn ( Vec < u8 > , usize ) -> quickcheck:: TestResult ) ;
422
394
}
423
- quickcheck:: quickcheck ( f as fn ( Vec < u8 > , usize ) -> quickcheck:: TestResult ) ;
424
- }
425
395
426
-
427
- #[ test]
428
- fn test_5_array_refs ( ) {
429
- let mut data: [ usize ; 128 ] = [ 0 ; 128 ] ;
430
- for i in 0 ..128 {
431
- data[ i] = i;
396
+ #[ test]
397
+ fn check_array_mut_ref_7 ( ) {
398
+ fn f ( mut data : Vec < u8 > , offset : usize ) -> quickcheck:: TestResult {
399
+ if data. len ( ) < offset + 7 {
400
+ return quickcheck:: TestResult :: discard ( ) ;
401
+ }
402
+ let out = array_mut_ref ! ( data, offset, 7 ) ;
403
+ out[ 6 ] = 3 ;
404
+ quickcheck:: TestResult :: from_bool ( out. len ( ) == 7 )
405
+ }
406
+ quickcheck:: quickcheck ( f as fn ( Vec < u8 > , usize ) -> quickcheck:: TestResult ) ;
432
407
}
433
- let data = data;
434
- let ( a, b, c, d, e) = array_refs ! ( & data, 1 , 14 , 3 , 100 , 10 ) ;
435
- assert_eq ! ( a. len( ) , 1 as usize ) ;
436
- assert_eq ! ( b. len( ) , 14 as usize ) ;
437
- assert_eq ! ( c. len( ) , 3 as usize ) ;
438
- assert_eq ! ( d. len( ) , 100 as usize ) ;
439
- assert_eq ! ( e. len( ) , 10 as usize ) ;
440
- assert_eq ! ( a, array_ref![ data, 0 , 1 ] ) ;
441
- assert_eq ! ( b, array_ref![ data, 1 , 14 ] ) ;
442
- assert_eq ! ( c, array_ref![ data, 15 , 3 ] ) ;
443
- assert_eq ! ( e, array_ref![ data, 118 , 10 ] ) ;
444
- }
445
408
446
- #[ test]
447
- fn test_5_array_refs_dotdot ( ) {
448
- let mut data: [ usize ; 128 ] = [ 0 ; 128 ] ;
449
- for i in 0 ..128 {
450
- data[ i] = i;
409
+ #[ test]
410
+ fn check_array_mut_ref_out_of_bounds_32 ( ) {
411
+ fn f ( mut data : Vec < u8 > , offset : usize ) -> quickcheck:: TestResult {
412
+ if data. len ( ) >= offset + 32 {
413
+ return quickcheck:: TestResult :: discard ( ) ;
414
+ }
415
+ quickcheck:: TestResult :: must_fail ( move || {
416
+ array_mut_ref ! ( data, offset, 32 ) ;
417
+ } )
418
+ }
419
+ quickcheck:: quickcheck ( f as fn ( Vec < u8 > , usize ) -> quickcheck:: TestResult ) ;
451
420
}
452
- let data = data;
453
- let ( a, b, c, d, e) = array_refs ! ( & data, 1 , 14 , 3 ; ..; 10 ) ;
454
- assert_eq ! ( a. len( ) , 1 as usize ) ;
455
- assert_eq ! ( b. len( ) , 14 as usize ) ;
456
- assert_eq ! ( c. len( ) , 3 as usize ) ;
457
- assert_eq ! ( d. len( ) , 100 as usize ) ;
458
- assert_eq ! ( e. len( ) , 10 as usize ) ;
459
- assert_eq ! ( a, array_ref![ data, 0 , 1 ] ) ;
460
- assert_eq ! ( b, array_ref![ data, 1 , 14 ] ) ;
461
- assert_eq ! ( c, array_ref![ data, 15 , 3 ] ) ;
462
- assert_eq ! ( e, array_ref![ data, 118 , 10 ] ) ;
463
- }
464
-
465
421
466
- #[ test]
467
- fn test_5_mut_xarray_refs ( ) {
468
- let mut data: [ usize ; 128 ] = [ 0 ; 128 ] ;
469
- {
470
- // temporarily borrow the data to modify it.
471
- let ( a, b, c, d, e) = mut_array_refs ! ( & mut data, 1 , 14 , 3 , 100 , 10 ) ;
422
+ #[ test]
423
+ fn test_5_array_refs ( ) {
424
+ let mut data: [ usize ; 128 ] = [ 0 ; 128 ] ;
425
+ for i in 0 ..128 {
426
+ data[ i] = i;
427
+ }
428
+ let data = data;
429
+ let ( a, b, c, d, e) = array_refs ! ( & data, 1 , 14 , 3 , 100 , 10 ) ;
472
430
assert_eq ! ( a. len( ) , 1 as usize ) ;
473
431
assert_eq ! ( b. len( ) , 14 as usize ) ;
474
432
assert_eq ! ( c. len( ) , 3 as usize ) ;
475
433
assert_eq ! ( d. len( ) , 100 as usize ) ;
476
434
assert_eq ! ( e. len( ) , 10 as usize ) ;
477
- * a = [ 1 ; 1 ] ;
478
- * b = [ 14 ; 14 ] ;
479
- * c = [ 3 ; 3 ] ;
480
- * d = [ 100 ; 100 ] ;
481
- * e = [ 10 ; 10 ] ;
435
+ assert_eq ! ( a, array_ref![ data, 0 , 1 ] ) ;
436
+ assert_eq ! ( b, array_ref![ data, 1 , 14 ] ) ;
437
+ assert_eq ! ( c, array_ref![ data, 15 , 3 ] ) ;
438
+ assert_eq ! ( e, array_ref![ data, 118 , 10 ] ) ;
482
439
}
483
- assert_eq ! ( & [ 1 ; 1 ] , array_ref![ data, 0 , 1 ] ) ;
484
- assert_eq ! ( & [ 14 ; 14 ] , array_ref![ data, 1 , 14 ] ) ;
485
- assert_eq ! ( & [ 3 ; 3 ] , array_ref![ data, 15 , 3 ] ) ;
486
- assert_eq ! ( & [ 10 ; 10 ] , array_ref![ data, 118 , 10 ] ) ;
487
- }
488
440
489
- #[ test]
490
- fn test_5_mut_xarray_refs_with_dotdot ( ) {
491
- let mut data: [ usize ; 128 ] = [ 0 ; 128 ] ;
492
- {
493
- // temporarily borrow the data to modify it.
494
- let ( a, b, c, d, e) = mut_array_refs ! ( & mut data, 1 , 14 , 3 ; ..; 10 ) ;
441
+ #[ test]
442
+ fn test_5_array_refs_dotdot ( ) {
443
+ let mut data: [ usize ; 128 ] = [ 0 ; 128 ] ;
444
+ for i in 0 ..128 {
445
+ data[ i] = i;
446
+ }
447
+ let data = data;
448
+ let ( a, b, c, d, e) = array_refs ! ( & data, 1 , 14 , 3 ; ..; 10 ) ;
495
449
assert_eq ! ( a. len( ) , 1 as usize ) ;
496
450
assert_eq ! ( b. len( ) , 14 as usize ) ;
497
451
assert_eq ! ( c. len( ) , 3 as usize ) ;
498
452
assert_eq ! ( d. len( ) , 100 as usize ) ;
499
453
assert_eq ! ( e. len( ) , 10 as usize ) ;
500
- * a = [ 1 ; 1 ] ;
501
- * b = [ 14 ; 14 ] ;
502
- * c = [ 3 ; 3 ] ;
503
- * e = [ 10 ; 10 ] ;
454
+ assert_eq ! ( a , array_ref! [ data , 0 , 1 ] ) ;
455
+ assert_eq ! ( b , array_ref! [ data , 1 , 14 ] ) ;
456
+ assert_eq ! ( c , array_ref! [ data , 15 , 3 ] ) ;
457
+ assert_eq ! ( e , array_ref! [ data , 118 , 10 ] ) ;
504
458
}
505
- assert_eq ! ( & [ 1 ; 1 ] , array_ref![ data, 0 , 1 ] ) ;
506
- assert_eq ! ( & [ 14 ; 14 ] , array_ref![ data, 1 , 14 ] ) ;
507
- assert_eq ! ( & [ 3 ; 3 ] , array_ref![ data, 15 , 3 ] ) ;
508
- assert_eq ! ( & [ 10 ; 10 ] , array_ref![ data, 118 , 10 ] ) ;
509
- }
510
459
511
- #[ forbid( clippy:: ptr_offset_with_cast) ]
512
- #[ test]
513
- fn forbidden_clippy_lints_do_not_fire ( ) {
514
- let mut data = [ 0u8 ; 32 ] ;
515
- let _ = array_refs ! [ & data, 8 ; .. ; ] ;
516
- let _ = mut_array_refs ! [ & mut data, 8 ; .. ; 10 ] ;
517
- }
460
+ #[ test]
461
+ fn test_5_mut_xarray_refs ( ) {
462
+ let mut data: [ usize ; 128 ] = [ 0 ; 128 ] ;
463
+ {
464
+ // temporarily borrow the data to modify it.
465
+ let ( a, b, c, d, e) = mut_array_refs ! ( & mut data, 1 , 14 , 3 , 100 , 10 ) ;
466
+ assert_eq ! ( a. len( ) , 1 as usize ) ;
467
+ assert_eq ! ( b. len( ) , 14 as usize ) ;
468
+ assert_eq ! ( c. len( ) , 3 as usize ) ;
469
+ assert_eq ! ( d. len( ) , 100 as usize ) ;
470
+ assert_eq ! ( e. len( ) , 10 as usize ) ;
471
+ * a = [ 1 ; 1 ] ;
472
+ * b = [ 14 ; 14 ] ;
473
+ * c = [ 3 ; 3 ] ;
474
+ * d = [ 100 ; 100 ] ;
475
+ * e = [ 10 ; 10 ] ;
476
+ }
477
+ assert_eq ! ( & [ 1 ; 1 ] , array_ref![ data, 0 , 1 ] ) ;
478
+ assert_eq ! ( & [ 14 ; 14 ] , array_ref![ data, 1 , 14 ] ) ;
479
+ assert_eq ! ( & [ 3 ; 3 ] , array_ref![ data, 15 , 3 ] ) ;
480
+ assert_eq ! ( & [ 10 ; 10 ] , array_ref![ data, 118 , 10 ] ) ;
481
+ }
482
+
483
+ #[ test]
484
+ fn test_5_mut_xarray_refs_with_dotdot ( ) {
485
+ let mut data: [ usize ; 128 ] = [ 0 ; 128 ] ;
486
+ {
487
+ // temporarily borrow the data to modify it.
488
+ let ( a, b, c, d, e) = mut_array_refs ! ( & mut data, 1 , 14 , 3 ; ..; 10 ) ;
489
+ assert_eq ! ( a. len( ) , 1 as usize ) ;
490
+ assert_eq ! ( b. len( ) , 14 as usize ) ;
491
+ assert_eq ! ( c. len( ) , 3 as usize ) ;
492
+ assert_eq ! ( d. len( ) , 100 as usize ) ;
493
+ assert_eq ! ( e. len( ) , 10 as usize ) ;
494
+ * a = [ 1 ; 1 ] ;
495
+ * b = [ 14 ; 14 ] ;
496
+ * c = [ 3 ; 3 ] ;
497
+ * e = [ 10 ; 10 ] ;
498
+ }
499
+ assert_eq ! ( & [ 1 ; 1 ] , array_ref![ data, 0 , 1 ] ) ;
500
+ assert_eq ! ( & [ 14 ; 14 ] , array_ref![ data, 1 , 14 ] ) ;
501
+ assert_eq ! ( & [ 3 ; 3 ] , array_ref![ data, 15 , 3 ] ) ;
502
+ assert_eq ! ( & [ 10 ; 10 ] , array_ref![ data, 118 , 10 ] ) ;
503
+ }
518
504
519
- #[ test]
520
- fn single_arg_refs ( ) {
521
- let mut data = [ 0u8 ; 8 ] ;
522
- let ( _, ) = array_refs ! [ & data, 8 ] ;
523
- let ( _, ) = mut_array_refs ! [ & mut data, 8 ] ;
505
+ #[ forbid( clippy:: ptr_offset_with_cast) ]
506
+ #[ test]
507
+ fn forbidden_clippy_lints_do_not_fire ( ) {
508
+ let mut data = [ 0u8 ; 32 ] ;
509
+ let _ = array_refs ! [ & data, 8 ; .. ; ] ;
510
+ let _ = mut_array_refs ! [ & mut data, 8 ; .. ; 10 ] ;
511
+ }
524
512
525
- let ( _, _) = array_refs ! [ & data, 4 ; ..; ] ;
526
- let ( _, _) = mut_array_refs ! [ & mut data, 4 ; ..; ] ;
513
+ #[ test]
514
+ fn single_arg_refs ( ) {
515
+ let mut data = [ 0u8 ; 8 ] ;
516
+ let ( _, ) = array_refs ! [ & data, 8 ] ;
517
+ let ( _, ) = mut_array_refs ! [ & mut data, 8 ] ;
527
518
528
- let ( _, _) = array_refs ! [ & data, ; ..; 4 ] ;
529
- let ( _, _) = mut_array_refs ! [ & mut data, ; ..; 4 ] ;
519
+ let ( _, _) = array_refs ! [ & data, 4 ; ..; ] ;
520
+ let ( _, _) = mut_array_refs ! [ & mut data, 4 ; ..; ] ;
530
521
531
- let ( _, ) = array_refs ! [ & data, ; ..; ] ;
532
- let ( _, ) = mut_array_refs ! [ & mut data, ; ..; ] ;
533
- }
522
+ let ( _, _) = array_refs ! [ & data, ; ..; 4 ] ;
523
+ let ( _, _) = mut_array_refs ! [ & mut data, ; ..; 4 ] ;
534
524
525
+ let ( _, ) = array_refs ! [ & data, ; ..; ] ;
526
+ let ( _, ) = mut_array_refs ! [ & mut data, ; ..; ] ;
527
+ }
535
528
} // mod test
536
-
0 commit comments