#syn #repr #parser #c #parse-attributes #parenthesized

parenthesized_c

一个库,允许解析 (C) 属性标记,例如在 #[repr(C)]

1 个不稳定版本

0.1.0 2021年12月26日

#2218 in 过程宏


repr_c_pub_struct 中使用

MIT/Apache

7KB

这是一个简单的库,提供 ParenthesizedC ZST,实现了 syn::parse::Parse,因此,例如,可以与 syn::parse2() 结合使用,用于解析 (C) 属性标记,如 #[repr(C)] 外部属性

示例

extern crate syn;
extern crate outer_attribute;
extern crate parenthesized_c;

use parenthesized_c::ParenthesizedC;
use outer_attribute::different_layout::OuterAttribute;

fn main() -> syn::Result<()> {
    let repr_c = syn::parse_str::<OuterAttribute>("#[repr(C)]")?;
    let repr_transpartent = syn::parse_str::<OuterAttribute>("#[repr(transparent)]")?;
    assert!(matches!(syn::parse2::<ParenthesizedC>(repr_c.tokens), Ok(_)));
    assert!(matches!(syn::parse2::<ParenthesizedC>(repr_transpartent.tokens), Err(_)));
    Ok(())
}

许可证

受Apache License 2.0或MIT许可证之一许可。
除非你明确说明,否则你提交给该crate的任何贡献,根据Apache-2.0许可证定义,将按上述方式双许可,不附加任何额外条款或条件。

依赖项

~1.5MB
~34K SLoC