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日

#285 in #variant


用于 tagname

MIT 许可证

8KB
186

tagname

github crates.io docs.rs build status

此库导出一个名为 TagName 的trait,该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
~35K SLoC