outer_attribute

Crates.ioouter_attribute
lib.rsouter_attribute
version0.1.1
sourcesrc
created_at2021-12-26 18:34:46.562143
updated_at2021-12-26 18:42:05.771394
descriptionA library providiving `OuterAttribute` that implements `syn::parse::Parse` trait.
homepage
repositoryhttps://github.com/JohnScience/outer_attribute
max_upload_size
id503387
size8,965
Dmitrii - Demenev (JohnScience)

documentation

https://docs.rs/outer_attribute

README

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.
Commit count: 5

cargo fmt