@@ -52,13 +52,28 @@ fn drop() -> Result<()> {
5252 where T : :: zeroize:: ZeroizeOnDrop
5353 {
5454 fn drop( & mut self ) {
55- use :: zeroize:: __internal:: AssertZeroize ;
56- use :: zeroize:: __internal:: AssertZeroizeOnDrop ;
55+ trait AssertZeroizeOnDrop {
56+ fn __derive_where_zeroize_or_on_drop( self ) ;
57+ }
58+
59+ impl <T : :: zeroize:: ZeroizeOnDrop + ?:: core:: marker:: Sized > AssertZeroizeOnDrop for &&mut T {
60+ fn __derive_where_zeroize_or_on_drop( self ) { }
61+ }
62+
63+ trait AssertZeroize {
64+ fn __derive_where_zeroize_or_on_drop( & mut self ) ;
65+ }
66+
67+ impl <T : :: zeroize:: Zeroize + ?:: core:: marker:: Sized > AssertZeroize for T {
68+ fn __derive_where_zeroize_or_on_drop( & mut self ) {
69+ :: zeroize:: Zeroize :: zeroize( self ) ;
70+ }
71+ }
5772
5873 match self {
5974 Test ( ref mut __field_0, ref mut __field_1) => {
60- __field_0. zeroize_or_on_drop ( ) ;
61- __field_1. zeroize_or_on_drop ( ) ;
75+ __field_0. __derive_where_zeroize_or_on_drop ( ) ;
76+ __field_1. __derive_where_zeroize_or_on_drop ( ) ;
6277 }
6378 }
6479 }
@@ -92,13 +107,28 @@ fn both() -> Result<()> {
92107 where T : :: zeroize:: ZeroizeOnDrop
93108 {
94109 fn drop( & mut self ) {
95- use :: zeroize:: __internal:: AssertZeroize ;
96- use :: zeroize:: __internal:: AssertZeroizeOnDrop ;
110+ trait AssertZeroizeOnDrop {
111+ fn __derive_where_zeroize_or_on_drop( self ) ;
112+ }
113+
114+ impl <T : :: zeroize:: ZeroizeOnDrop + ?:: core:: marker:: Sized > AssertZeroizeOnDrop for &&mut T {
115+ fn __derive_where_zeroize_or_on_drop( self ) { }
116+ }
117+
118+ trait AssertZeroize {
119+ fn __derive_where_zeroize_or_on_drop( & mut self ) ;
120+ }
121+
122+ impl <T : :: zeroize:: Zeroize + ?:: core:: marker:: Sized > AssertZeroize for T {
123+ fn __derive_where_zeroize_or_on_drop( & mut self ) {
124+ :: zeroize:: Zeroize :: zeroize( self ) ;
125+ }
126+ }
97127
98128 match self {
99129 Test ( ref mut __field_0, ref mut __field_1) => {
100- __field_0. zeroize_or_on_drop ( ) ;
101- __field_1. zeroize_or_on_drop ( ) ;
130+ __field_0. __derive_where_zeroize_or_on_drop ( ) ;
131+ __field_1. __derive_where_zeroize_or_on_drop ( ) ;
102132 }
103133 }
104134 }
@@ -188,12 +218,27 @@ fn crate_drop() -> Result<()> {
188218 where T : zeroize_:: ZeroizeOnDrop
189219 {
190220 fn drop( & mut self ) {
191- use zeroize_:: __internal:: AssertZeroize ;
192- use zeroize_:: __internal:: AssertZeroizeOnDrop ;
221+ trait AssertZeroizeOnDrop {
222+ fn __derive_where_zeroize_or_on_drop( self ) ;
223+ }
224+
225+ impl <T : zeroize_:: ZeroizeOnDrop + ?:: core:: marker:: Sized > AssertZeroizeOnDrop for &&mut T {
226+ fn __derive_where_zeroize_or_on_drop( self ) { }
227+ }
228+
229+ trait AssertZeroize {
230+ fn __derive_where_zeroize_or_on_drop( & mut self ) ;
231+ }
232+
233+ impl <T : zeroize_:: Zeroize + ?:: core:: marker:: Sized > AssertZeroize for T {
234+ fn __derive_where_zeroize_or_on_drop( & mut self ) {
235+ zeroize_:: Zeroize :: zeroize( self ) ;
236+ }
237+ }
193238
194239 match self {
195240 Test ( ref mut __field_0) => {
196- __field_0. zeroize_or_on_drop ( ) ;
241+ __field_0. __derive_where_zeroize_or_on_drop ( ) ;
197242 }
198243 }
199244 }
@@ -285,12 +330,27 @@ fn enum_skip_drop() -> Result<()> {
285330 #[ automatically_derived]
286331 impl <T > :: core:: ops:: Drop for Test <T > {
287332 fn drop( & mut self ) {
288- use :: zeroize:: __internal:: AssertZeroize ;
289- use :: zeroize:: __internal:: AssertZeroizeOnDrop ;
333+ trait AssertZeroizeOnDrop {
334+ fn __derive_where_zeroize_or_on_drop( self ) ;
335+ }
336+
337+ impl <T : :: zeroize:: ZeroizeOnDrop + ?:: core:: marker:: Sized > AssertZeroizeOnDrop for &&mut T {
338+ fn __derive_where_zeroize_or_on_drop( self ) { }
339+ }
340+
341+ trait AssertZeroize {
342+ fn __derive_where_zeroize_or_on_drop( & mut self ) ;
343+ }
344+
345+ impl <T : :: zeroize:: Zeroize + ?:: core:: marker:: Sized > AssertZeroize for T {
346+ fn __derive_where_zeroize_or_on_drop( & mut self ) {
347+ :: zeroize:: Zeroize :: zeroize( self ) ;
348+ }
349+ }
290350
291351 match self {
292352 Test :: A ( ref mut __field_0) => {
293- __field_0. zeroize_or_on_drop ( ) ;
353+ __field_0. __derive_where_zeroize_or_on_drop ( ) ;
294354 }
295355 Test :: B ( ref mut __field_0) => { }
296356 }
0 commit comments