@@ -121,3 +121,74 @@ fn cstr_metadata_is_length_with_nul() {
121121 let bytes: * const [ u8 ] = p as * const [ u8 ] ;
122122 assert_eq ! ( s. to_bytes_with_nul( ) . len( ) , bytes. len( ) ) ;
123123}
124+
125+ #[ test]
126+ fn test_const_clone ( ) {
127+ const {
128+ let bool: bool = Default :: default ( ) ;
129+ let char: char = Default :: default ( ) ;
130+ let ascii_char: std:: ascii:: Char = Default :: default ( ) ;
131+ let usize: usize = Default :: default ( ) ;
132+ let u8: u8 = Default :: default ( ) ;
133+ let u16: u16 = Default :: default ( ) ;
134+ let u32: u32 = Default :: default ( ) ;
135+ let u64: u64 = Default :: default ( ) ;
136+ let u128: u128 = Default :: default ( ) ;
137+ let i8: i8 = Default :: default ( ) ;
138+ let i16: i16 = Default :: default ( ) ;
139+ let i32: i32 = Default :: default ( ) ;
140+ let i64: i64 = Default :: default ( ) ;
141+ let i128: i128 = Default :: default ( ) ;
142+ let f16: f16 = Default :: default ( ) ;
143+ let f32: f32 = Default :: default ( ) ;
144+ let f64: f64 = Default :: default ( ) ;
145+ let f128: f128 = Default :: default ( ) ;
146+
147+ let bool_clone: bool = bool. clone ( ) ;
148+ let char_clone: char = char. clone ( ) ;
149+ let ascii_char_clone: std:: ascii:: Char = ascii_char. clone ( ) ;
150+
151+ let usize_clone: usize = usize. clone ( ) ;
152+ let u8_clone: u8 = u8. clone ( ) ;
153+ let u16_clone: u16 = u16. clone ( ) ;
154+ let u32_clone: u32 = u32. clone ( ) ;
155+ let u64_clone: u64 = u64. clone ( ) ;
156+ let u128_clone: u128 = u128. clone ( ) ;
157+ let i8_clone: i8 = i8. clone ( ) ;
158+ let i16_clone: i16 = i16. clone ( ) ;
159+ let i32_clone: i32 = i32. clone ( ) ;
160+ let i64_clone: i64 = i64. clone ( ) ;
161+ let i128_clone: i128 = i128. clone ( ) ;
162+ let f16_clone: f16 = f16. clone ( ) ;
163+ let f32_clone: f32 = f32. clone ( ) ;
164+ let f64_clone: f64 = f64. clone ( ) ;
165+ let f128_clone: f128 = f128. clone ( ) ;
166+
167+ assert ! ( bool == bool_clone) ;
168+ assert ! ( char == char_clone) ;
169+ assert ! ( ascii_char == ascii_char_clone) ;
170+ assert ! ( usize == usize_clone) ;
171+ assert ! ( u8 == u8_clone) ;
172+ assert ! ( u16 == u16_clone) ;
173+ assert ! ( u32 == u32_clone) ;
174+ assert ! ( u64 == u64_clone) ;
175+ assert ! ( u128 == u128_clone) ;
176+ assert ! ( i8 == i8_clone) ;
177+ assert ! ( i16 == i16_clone) ;
178+ assert ! ( i32 == i32_clone) ;
179+ assert ! ( i64 == i64_clone) ;
180+ assert ! ( i128 == i128_clone) ;
181+ assert ! ( f16 == f16_clone) ;
182+ assert ! ( f32 == f32_clone) ;
183+ assert ! ( f64 == f64_clone) ;
184+ assert ! ( f128 == f128_clone) ;
185+
186+ let src: [ i32 ; 4 ] = [ 1 , 2 , 3 , 4 ] ;
187+ let mut dst: [ i32 ; 2 ] = [ 0 , 0 ] ;
188+
189+ dst. clone_from_slice ( & src[ 2 ..] ) ;
190+
191+ assert ! ( src == [ 1 , 2 , 3 , 4 ] ) ;
192+ assert ! ( dst == [ 3 , 4 ] ) ;
193+ }
194+ }
0 commit comments