pub trait Attrs: Default + Parse {
    // Required method
    fn try_merge(self, another: Self) -> Result<Self>;

    // Provided methods
    fn validate(&self, _: &str, _: Span) -> Result<()> { ... }
    fn fallback(&mut self, _: &[Attribute]) -> Result<()> { ... }
    fn parse_attrs<T>(name: &str, item: &T) -> Result<Self>
       where T: Attrs,
             for<'a> &'a T: IntoSpan { ... }
}
Expand description

Parseing of syn::Attributes into a custom defined struct.

Required Methods§

source

fn try_merge(self, another: Self) -> Result<Self>

Tries to merge two sets of parsed attributes into a single one, reporting about duplicates, if any.

Errors

If merging cannot be performed.

Provided Methods§

source

fn validate(&self, _: &str, _: Span) -> Result<()>

Validates these parsed attributes to meet additional invariants, if required.

The provided string contains name of the parsed syn::Attribute, and the provided Span refers to the item this syn::Attribute is applied to. Use them to make reported errors well descriptive.

Errors

If validation fails.

source

fn fallback(&mut self, _: &[Attribute]) -> Result<()>

Falls back to another values from syn::Attributes, if required.

Errors

If retrieving fallback values fails.

source

fn parse_attrs<T>(name: &str, item: &T) -> Result<Self>where T: Attrs, for<'a> &'a T: IntoSpan,

Parses this structure from the syn::Attributes with the given name and contained in the given item.

If multiple syn::Attributes occur with the same name then they all are parsed separately and then Attrs::try_merged.

If none syn::Attributes occur with the given name then Default value is returned, modulo Attrs::validate.

Errors

Implementations on Foreign Types§

source§

impl<V: Attrs + Default + Parse> Attrs for Box<V>

source§

fn try_merge(self, another: Self) -> Result<Self>

source§

fn validate(&self, attr_name: &str, item_span: Span) -> Result<()>

source§

fn fallback(&mut self, attrs: &[Attribute]) -> Result<()>

source§

fn parse_attrs<T>(name: &str, item: &T) -> Result<Self>where T: Attrs, for<'a> &'a T: IntoSpan,

Implementors§