9个版本

0.3.0 2024年2月3日
0.2.0 2023年3月21日
0.1.6 2023年3月18日
0.1.5 2022年5月5日
0.1.0 2021年3月28日

#8 in #parse-attributes

Download history 40717/week @ 2024-04-16 42272/week @ 2024-04-23 39838/week @ 2024-04-30 43068/week @ 2024-05-07 44551/week @ 2024-05-14 42081/week @ 2024-05-21 43228/week @ 2024-05-28 40984/week @ 2024-06-04 44295/week @ 2024-06-11 48623/week @ 2024-06-18 56314/week @ 2024-06-25 53388/week @ 2024-07-02 68597/week @ 2024-07-09 70486/week @ 2024-07-16 64507/week @ 2024-07-23 64124/week @ 2024-07-30

278,712 每月下载量
312 个crate中使用 (通过 structmeta)

MIT/Apache

58KB
1.5K SLoC

StructMeta

Crates.io Docs.rs Actions Status

通过定义一个结构体来解析Rust的属性参数。

文档

有关详细信息,请参阅 #[derive(StructMeta)] 文档

安装

将其添加到您的Cargo.toml文件中

[dependencies]
structmeta = "0.3.0"
proc-macro2 = "1.0.78"
syn = "2.0.48"
quote = "1.0.35"

示例

use structmeta::StructMeta;
use syn::{parse_quote, Attribute, LitInt, LitStr};

#[derive(StructMeta, Debug)]
struct MyAttr {
    x: LitInt,
    y: LitStr,
}
let attr: Attribute = parse_quote!(#[my_attr(x = 10, y = "abc")]);
let attr: MyAttr = attr.parse_args().unwrap();
println!("x = {}, y = {}", attr.x, attr.y.value());

此代码输出

x = 10, y = abc

许可

该项目采用Apache-2.0/MIT双许可协议。请参阅两个LICENSE-*文件以获取详细信息。

贡献

除非您明确声明,否则根据Apache-2.0许可证定义,您提交给作品以包含在内的任何贡献,将按照上述方式双重许可,不附加任何额外条款或条件。

依赖关系

~270–720KB
~17K SLoC