#parser #attributes #syn #outer

outer_attribute

A library providiving OuterAttribute that implements syn::parse::Parse trait

2 releases

0.1.1 Dec 26, 2021
0.1.0 Dec 26, 2021

#2369 in Procedural macros


Used in parenthesized_c

MIT/Apache

9KB

A library providiving OuterAttribute that implements syn::parse::Parse trait.

At the time of writing, syn crate doesn't offer a way to parse outer attributes (for example, #[repr(C)]) without declaring a struct and reinventing a wheel by implementing syn::parse::Parse trait. Unlike syn::Attribute, depending on the enabled feature same_layout or different_layout the chosen different_layout::OuterAttribute or same_layout::OuterAttribute, respectively, will have syn::parse::Parse available.

Example

extern crate syn;
extern crate outer_attribute;

use outer_attribute::different_layout::OuterAttribute;

fn main() {
    assert!(matches!(syn::parse_str::<OuterAttribute>("#[repr(C)]"), Ok(_)));
    assert!(matches!(syn::parse_str::<OuterAttribute>("Not an outer attribute"), Err(_)));
}

The default feature is different_layout and opting for same_layout instead can be considered when there is some functionality that is available on syn::Attribute but not on either OuterAttribute.

License

Licensed under either of Apache License, Version 2.0 or MIT license at your option.
Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in this crate by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.

Dependencies

~1.5MB
~36K SLoC