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.

```rust use tagname::TagName;

[derive(TagName)]

enum MyTaggedUnion { [tag(case = "lower")] Yes, [tag(case = "upper")] No, Maybe(usize), }

[test]

fn returncorrecttagnames() { let v1 = MyTaggedUnion::Yes; let v2 = MyTaggedUnion::No; let v3 = MyTaggedUnion::Maybe(1); asserteq!(v1.tagname(), "yes"); asserteq!(v2.tagname(), "NO"); asserteq!(v3.tag_name(), "Maybe"); } ```