(input: DeriveInput)
| 97 | } |
| 98 | |
| 99 | fn derive_zeroize_on_drop_impl(input: DeriveInput) -> TokenStream { |
| 100 | let zeroizers = generate_fields(&input, quote! { zeroize_or_on_drop }); |
| 101 | |
| 102 | let (impl_gen, type_gen, where_) = input.generics.split_for_impl(); |
| 103 | let name = input.ident.clone(); |
| 104 | |
| 105 | let drop_impl = quote! { |
| 106 | impl #impl_gen Drop for #name #type_gen #where_ { |
| 107 | fn drop(&mut self) { |
| 108 | use ::zeroize::__internal::AssertZeroize; |
| 109 | use ::zeroize::__internal::AssertZeroizeOnDrop; |
| 110 | #zeroizers |
| 111 | } |
| 112 | } |
| 113 | }; |
| 114 | let zeroize_on_drop_impl = impl_zeroize_on_drop(&input); |
| 115 | |
| 116 | quote! { |
| 117 | #drop_impl |
| 118 | #zeroize_on_drop_impl |
| 119 | } |
| 120 | } |
| 121 | |
| 122 | /// Custom derive attributes for `Zeroize` |
| 123 | #[derive(Default)] |
no test coverage detected