File tree 1 file changed +26
-0
lines changed
1 file changed +26
-0
lines changed Original file line number Diff line number Diff line change @@ -100,3 +100,29 @@ pub fn extend_for_unit() {
100
100
}
101
101
assert_eq ! ( x, 5 ) ;
102
102
}
103
+
104
+ #[ test]
105
+ pub fn inplace_result_collect ( ) {
106
+ let src = vec ! [ 0usize ; 256 ] ;
107
+ let srcptr = src. as_ptr ( ) ;
108
+ let sink = src. into_iter ( ) . map ( |i| Ok ( i) ) . collect :: < Result < Vec < _ > , ( ) > > ( ) . unwrap ( ) ;
109
+ let sinkptr = sink. as_ptr ( ) ;
110
+ assert_eq ! ( srcptr, sinkptr) ;
111
+
112
+ let src: Vec < usize > = vec ! [ 0usize ; 256 ] ;
113
+ let srcptr = src. as_ptr ( ) ;
114
+ let iter = src
115
+ . into_iter ( )
116
+ . enumerate ( )
117
+ . map ( |i| i. 0 + i. 1 )
118
+ . zip ( std:: iter:: repeat ( 1usize ) )
119
+ . map ( |( a, b) | a + b)
120
+ . map_while ( Option :: Some )
121
+ . peekable ( )
122
+ . skip ( 1 )
123
+ . map ( |e| std:: num:: NonZeroUsize :: new ( e) )
124
+ . map ( |z| z. map ( |u| u. get ( ) ) . ok_or ( ( ) ) ) ;
125
+ let sink = iter. collect :: < Result < Vec < _ > , _ > > ( ) . unwrap ( ) ;
126
+ let sinkptr = sink. as_ptr ( ) ;
127
+ assert_eq ! ( srcptr, sinkptr as * const usize ) ;
128
+ }
You can’t perform that action at this time.
0 commit comments