#[cfg(test)]
mod tests;
use syn::{Attribute, ImplItem, Item, TraitItem};
pub trait Attrs {
fn attrs(&self) -> Option<&Vec<Attribute>>;
}
impl Attrs for Item {
fn attrs(&self) -> Option<&Vec<Attribute>> {
match self {
Item::Const(item) => Some(&item.attrs),
Item::Enum(item) => Some(&item.attrs),
Item::ExternCrate(item) => Some(&item.attrs),
Item::Fn(item) => Some(&item.attrs),
Item::ForeignMod(item) => Some(&item.attrs),
Item::Impl(item) => Some(&item.attrs),
Item::Macro(item) => Some(&item.attrs),
Item::Mod(item) => Some(&item.attrs),
Item::Static(item) => Some(&item.attrs),
Item::Struct(item) => Some(&item.attrs),
Item::Trait(item) => Some(&item.attrs),
Item::TraitAlias(item) => Some(&item.attrs),
Item::Type(item) => Some(&item.attrs),
Item::Union(item) => Some(&item.attrs),
Item::Use(item) => Some(&item.attrs),
_ => None,
}
}
}
impl Attrs for ImplItem {
fn attrs(&self) -> Option<&Vec<Attribute>> {
match self {
ImplItem::Const(item) => Some(&item.attrs),
ImplItem::Fn(item) => Some(&item.attrs),
ImplItem::Type(item) => Some(&item.attrs),
ImplItem::Macro(item) => Some(&item.attrs),
_ => None,
}
}
}
impl Attrs for TraitItem {
fn attrs(&self) -> Option<&Vec<Attribute>> {
match self {
TraitItem::Const(item) => Some(&item.attrs),
TraitItem::Fn(item) => Some(&item.attrs),
TraitItem::Type(item) => Some(&item.attrs),
TraitItem::Macro(item) => Some(&item.attrs),
_ => None,
}
}
}