tagname

Crates.iotagname
lib.rstagname
version0.3.1
sourcesrc
created_at2022-10-20 17:56:56.845621
updated_at2022-12-22 14:55:14.566504
descriptionget the name of a variant in your enum as a string
homepagehttps://github.com/khrynczenko/tagname
repositoryhttps://github.com/khrynczenko/tagname
max_upload_size
id692766
size14,190
Krzysztof Hrynczenko (khrynczenko)

documentation

https://docs.rs/tagname

README

tagname

github crates.io docs.rs build status

This library exports a trait called TagName that exposes a tag_name method which is used for retrieving a name (tag) of a currently hold variant within an enum value.

More importantly, together with TagName trait comes a derive(TagName) macro that can automatically implement the 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");
}
Commit count: 30

cargo fmt