File tree 2 files changed +32
-2
lines changed
2 files changed +32
-2
lines changed Original file line number Diff line number Diff line change @@ -271,7 +271,7 @@ pub mod __internal {
271
271
fn zeroize_or_on_drop ( self ) ;
272
272
}
273
273
274
- impl < T : ZeroizeOnDrop > AssertZeroizeOnDrop for & mut T {
274
+ impl < T : ZeroizeOnDrop > AssertZeroizeOnDrop for & & mut T {
275
275
fn zeroize_or_on_drop ( self ) { }
276
276
}
277
277
Original file line number Diff line number Diff line change @@ -242,7 +242,7 @@ mod custom_derive_tests {
242
242
}
243
243
244
244
#[ test]
245
- fn derive_only_zeroize_on_drop ( ) {
245
+ fn derive_inherit_zeroize_on_drop ( ) {
246
246
#[ derive( ZeroizeOnDrop ) ]
247
247
struct X ( [ u8 ; 3 ] ) ;
248
248
@@ -255,4 +255,34 @@ mod custom_derive_tests {
255
255
}
256
256
assert_eq ! ( & value. 0 . 0 , & [ 0 , 0 , 0 ] )
257
257
}
258
+
259
+ #[ test]
260
+ fn derive_inherit_from_both ( ) {
261
+ #[ derive( Zeroize , ZeroizeOnDrop ) ]
262
+ struct X ( [ u8 ; 3 ] ) ;
263
+
264
+ #[ derive( ZeroizeOnDrop ) ]
265
+ struct Z ( X ) ;
266
+
267
+ let mut value = Z ( X ( [ 1 , 2 , 3 ] ) ) ;
268
+ unsafe {
269
+ std:: ptr:: drop_in_place ( & mut value) ;
270
+ }
271
+ assert_eq ! ( & value. 0 . 0 , & [ 0 , 0 , 0 ] )
272
+ }
273
+
274
+ #[ test]
275
+ fn derive_inherit_both ( ) {
276
+ #[ derive( Zeroize , ZeroizeOnDrop ) ]
277
+ struct X ( [ u8 ; 3 ] ) ;
278
+
279
+ #[ derive( Zeroize , ZeroizeOnDrop ) ]
280
+ struct Z ( X ) ;
281
+
282
+ let mut value = Z ( X ( [ 1 , 2 , 3 ] ) ) ;
283
+ unsafe {
284
+ std:: ptr:: drop_in_place ( & mut value) ;
285
+ }
286
+ assert_eq ! ( & value. 0 . 0 , & [ 0 , 0 , 0 ] )
287
+ }
258
288
}
You can’t perform that action at this time.
0 commit comments