File tree 1 file changed +14
-0
lines changed
1 file changed +14
-0
lines changed Original file line number Diff line number Diff line change @@ -83,12 +83,25 @@ fn vec_extend_ptr_stable() {
83
83
let mut v = Vec :: with_capacity ( 10 ) ;
84
84
v. push ( 0 ) ;
85
85
let v0 = unsafe { & * ( & v[ 0 ] as * const _ ) } ; // laundering the lifetime -- we take care that `v` does not reallocate, so that's okay.
86
+ // `slice::Iter` (with `T: Copy`) specialization
86
87
v. extend ( & [ 1 ] ) ;
87
88
let _val = * v0;
89
+ // `vec::IntoIter` specialization
88
90
v. extend ( vec ! [ 2 ] ) ;
89
91
let _val = * v0;
92
+ // `TrustedLen` specialization
90
93
v. extend ( std:: iter:: once ( 3 ) ) ;
91
94
let _val = * v0;
95
+ // base case
96
+ v. extend ( std:: iter:: once ( 3 ) . filter ( |_| true ) ) ;
97
+ let _val = * v0;
98
+ }
99
+
100
+ fn vec_truncate_ptr_stable ( ) {
101
+ let mut v = vec ! [ 0 ; 10 ] ;
102
+ let v0 = unsafe { & * ( & v[ 0 ] as * const _ ) } ; // laundering the lifetime -- we take care that `v` does not reallocate, so that's okay.
103
+ v. truncate ( 5 ) ;
104
+ let _val = * v0;
92
105
}
93
106
94
107
fn main ( ) {
@@ -112,4 +125,5 @@ fn main() {
112
125
113
126
vec_push_ptr_stable ( ) ;
114
127
vec_extend_ptr_stable ( ) ;
128
+ vec_truncate_ptr_stable ( ) ;
115
129
}
You can’t perform that action at this time.
0 commit comments