Parse attribute and handle `#[zeroize(...)]` attributes
(&mut self, attr: &Attribute, variant: Option<&Variant>, binding: Option<&Field>)
| 211 | |
| 212 | /// Parse attribute and handle `#[zeroize(...)]` attributes |
| 213 | fn parse_attr(&mut self, attr: &Attribute, variant: Option<&Variant>, binding: Option<&Field>) { |
| 214 | let meta_list = match &attr.meta { |
| 215 | Meta::List(list) => list, |
| 216 | _ => return, |
| 217 | }; |
| 218 | |
| 219 | // Ignore any non-zeroize attributes |
| 220 | if !meta_list.path.is_ident(ZEROIZE_ATTR) { |
| 221 | return; |
| 222 | } |
| 223 | |
| 224 | for meta in attr |
| 225 | .parse_args_with(Punctuated::<Meta, Comma>::parse_terminated) |
| 226 | .unwrap_or_else(|e| panic!("error parsing attribute: {attr:?} ({e})")) |
| 227 | { |
| 228 | self.parse_meta(&meta, variant, binding); |
| 229 | } |
| 230 | } |
| 231 | |
| 232 | /// Parse `#[zeroize(...)]` attribute metadata (e.g. `drop`) |
| 233 | fn parse_meta(&mut self, meta: &Meta, variant: Option<&Variant>, binding: Option<&Field>) { |