Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/khrynczenko/tagname

derive macro that gives you a name of a current tag inside a variant as a string
https://github.com/khrynczenko/tagname

rust rust-crate rust-lang rust-language rust-library

Last synced: about 1 month ago
JSON representation

derive macro that gives you a name of a current tag inside a variant as a string

Awesome Lists containing this project

README

        

tagname
=============
[github](https://github.com/khrynczenko/tagname)
[crates.io](https://crates.io/crates/tagname)
[docs.rs](https://docs.rs/tagname)
[build status](https://github.com/khrynczenko/tagname/actions?query=branch%3Amaster)

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 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");
}
```