@@ -433,10 +433,11 @@ impl<'a, Own: Ownership> Iterator for Iter<'a, Own> {
433
433
434
434
#[ inline]
435
435
fn nth ( & mut self , n : usize ) -> Option < Self :: Item > {
436
- let n = i32:: try_from ( n) . ok ( ) ?;
436
+ let n32 = i32:: try_from ( n) . ok ( ) ?;
437
437
438
- if self . arr . len ( ) > n {
439
- Some ( self . arr . get ( n) )
438
+ if n32 < self . arr . len ( ) {
439
+ self . range . nth ( n) ;
440
+ Some ( self . arr . get ( n32) )
440
441
} else {
441
442
None
442
443
}
@@ -485,10 +486,11 @@ impl Iterator for IntoIter {
485
486
486
487
#[ inline]
487
488
fn nth ( & mut self , n : usize ) -> Option < Self :: Item > {
488
- let n = i32:: try_from ( n) . ok ( ) ?;
489
+ let n32 = i32:: try_from ( n) . ok ( ) ?;
489
490
490
- if self . arr . len ( ) > n {
491
- Some ( self . arr . get ( n) )
491
+ if n32 < self . arr . len ( ) {
492
+ self . range . nth ( n) ;
493
+ Some ( self . arr . get ( n32) )
492
494
} else {
493
495
None
494
496
}
@@ -593,10 +595,18 @@ godot_test!(test_array {
593
595
array3. push( & Variant :: new( 512 ) ) ;
594
596
595
597
assert_eq!(
596
- & [ 42 , 1337 , 512 ] ,
597
598
array3. iter( ) . map( |v| v. try_to:: <i64 >( ) . unwrap( ) ) . collect:: <Vec <_>>( ) . as_slice( ) ,
599
+ & [ 42 , 1337 , 512 ] ,
598
600
) ;
599
601
602
+ let mut iter = array3. iter( ) . skip( 2 ) ;
603
+ assert_eq!( iter. next( ) , Some ( Variant :: new( 512 ) ) ) ;
604
+ assert_eq!( iter. next( ) , None ) ;
605
+
606
+ let mut iter = array3. into_iter( ) . skip( 2 ) ;
607
+ assert_eq!( iter. next( ) , Some ( Variant :: new( 512 ) ) ) ;
608
+ assert_eq!( iter. next( ) , None ) ;
609
+
600
610
let array4 = VariantArray :: new( ) ; // []
601
611
let array5 = VariantArray :: new( ) ; // []
602
612
array4. push( & foo) ; // [&foo]
0 commit comments