bon_macros/util/
item.rs

1pub(crate) trait ItemExt {
2    fn attrs_mut(&mut self) -> Option<&mut Vec<syn::Attribute>>;
3}
4
5impl ItemExt for syn::Item {
6    fn attrs_mut(&mut self) -> Option<&mut Vec<syn::Attribute>> {
7        let attrs = match self {
8            Self::Const(item) => &mut item.attrs,
9            Self::Enum(item) => &mut item.attrs,
10            Self::ExternCrate(item) => &mut item.attrs,
11            Self::Fn(item) => &mut item.attrs,
12            Self::ForeignMod(item) => &mut item.attrs,
13            Self::Impl(item) => &mut item.attrs,
14            Self::Macro(item) => &mut item.attrs,
15            Self::Mod(item) => &mut item.attrs,
16            Self::Static(item) => &mut item.attrs,
17            Self::Struct(item) => &mut item.attrs,
18            Self::Trait(item) => &mut item.attrs,
19            Self::TraitAlias(item) => &mut item.attrs,
20            Self::Type(item) => &mut item.attrs,
21            Self::Union(item) => &mut item.attrs,
22            Self::Use(item) => &mut item.attrs,
23            _ => return None,
24        };
25
26        Some(attrs)
27    }
28}