5 个不稳定版本
0.3.1 | 2022 年 12 月 22 日 |
---|---|
0.3.0 | 2022 年 11 月 17 日 |
0.2.1 | 2022 年 11 月 8 日 |
0.2.0 | 2022 年 10 月 29 日 |
0.1.1 | 2022 年 10 月 20 日 |
#2239 in Rust 模式
7KB
tagname
此库导出了一个名为 TagName
的 trait,它公开了一个 tag_name
方法,用于检索当前在 enum
值中持有的变体的名称(标记)。
更重要的是,与 TagName
trait 一起来的还有一个 derive(TagName)
宏,它可以自动实现此 trait。
use tagname::TagName;
#[derive(TagName)]
enum MyTaggedUnion {
#[tag(case = "lower")]
Yes,
#[tag(case = "upper")]
No,
Maybe(usize),
}
#[test]
fn return_correct_tag_names() {
let v1 = MyTaggedUnion::Yes;
let v2 = MyTaggedUnion::No;
let v3 = MyTaggedUnion::Maybe(1);
assert_eq!(v1.tag_name(), "yes");
assert_eq!(v2.tag_name(), "NO");
assert_eq!(v3.tag_name(), "Maybe");
}
依赖关系
~1.5MB
~36K SLoC