Skip to content

Commit 74770c8

Browse files
authored
Do not automatically inject bounds (#879)
Fixes #878
1 parent 7e45b74 commit 74770c8

File tree

2 files changed

+29
-13
lines changed

2 files changed

+29
-13
lines changed

zeroize/derive/src/lib.rs

Lines changed: 3 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -8,11 +8,10 @@ use proc_macro2::{Ident, TokenStream};
88
use quote::{format_ident, quote};
99
use syn::{
1010
parse::{Parse, ParseStream},
11-
parse_quote,
1211
punctuated::Punctuated,
1312
token::Comma,
14-
Attribute, Data, DeriveInput, Expr, ExprLit, Field, Fields, GenericParam, Lit, Meta, Result,
15-
Variant, WherePredicate,
13+
Attribute, Data, DeriveInput, Expr, ExprLit, Field, Fields, Lit, Meta, Result, Variant,
14+
WherePredicate,
1615
};
1716

1817
/// Name of zeroize-related attributes
@@ -39,16 +38,7 @@ fn derive_zeroize_impl(input: DeriveInput) -> TokenStream {
3938

4039
let extra_bounds = match attributes.bound {
4140
Some(bounds) => bounds.0,
42-
None => {
43-
let mut out: Punctuated<WherePredicate, Comma> = Default::default();
44-
for param in &input.generics.params {
45-
if let GenericParam::Type(type_param) = param {
46-
let type_name = &type_param.ident;
47-
out.push(parse_quote! { #type_name: Zeroize })
48-
}
49-
}
50-
out
51-
}
41+
None => Default::default(),
5242
};
5343

5444
let mut generics = input.generics.clone();

zeroize/tests/zeroize_derive.rs

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -325,3 +325,29 @@ fn derive_zeroize_on_drop_generic() {
325325
#[derive(ZeroizeOnDrop)]
326326
struct Z<T: Zeroize>(Vec<T>);
327327
}
328+
329+
#[test]
330+
fn derive_zeroize_unused_param() {
331+
#[derive(Zeroize)]
332+
struct Z<T> {
333+
arr: [u32; 5],
334+
#[zeroize(skip)]
335+
skipped: T,
336+
}
337+
}
338+
339+
#[test]
340+
// Issue #878
341+
fn derive_zeroize_with_marker() {
342+
#[derive(ZeroizeOnDrop, Zeroize)]
343+
struct Test<A: Marker> {
344+
#[zeroize(skip)]
345+
field: Option<A>,
346+
}
347+
348+
trait Secret: ZeroizeOnDrop + Zeroize {}
349+
350+
impl<A: Marker> Secret for Test<A> {}
351+
352+
trait Marker {}
353+
}

0 commit comments

Comments
 (0)