File tree Expand file tree Collapse file tree 1 file changed +19
-0
lines changed Expand file tree Collapse file tree 1 file changed +19
-0
lines changed Original file line number Diff line number Diff line change @@ -55,6 +55,7 @@ fn test_drop() {
55
55
56
56
let flag = & Cell :: new ( 0 ) ;
57
57
58
+ #[ derive( Clone ) ]
58
59
struct Bump < ' a > ( & ' a Cell < i32 > ) ;
59
60
60
61
impl < ' a > Drop for Bump < ' a > {
@@ -105,6 +106,24 @@ fn test_drop() {
105
106
assert_eq ! ( flag. get( ) , 3 ) ;
106
107
}
107
108
109
+ // test cloning into_iter
110
+ flag. set ( 0 ) ;
111
+ {
112
+ let mut array = ArrayVec :: < [ _ ; 3 ] > :: new ( ) ;
113
+ array. push ( Bump ( flag) ) ;
114
+ array. push ( Bump ( flag) ) ;
115
+ array. push ( Bump ( flag) ) ;
116
+ let mut iter = array. into_iter ( ) ;
117
+ assert_eq ! ( flag. get( ) , 0 ) ;
118
+ iter. next ( ) ;
119
+ assert_eq ! ( flag. get( ) , 1 ) ;
120
+ let clone = iter. clone ( ) ;
121
+ assert_eq ! ( flag. get( ) , 1 ) ;
122
+ drop ( clone) ;
123
+ assert_eq ! ( flag. get( ) , 3 ) ;
124
+ drop ( iter) ;
125
+ assert_eq ! ( flag. get( ) , 5 ) ;
126
+ }
108
127
}
109
128
110
129
#[ test]
You can’t perform that action at this time.
0 commit comments