https://github.com/d-e-s-o/serde_variant
Retrieve serde provided variant names for enum objects.
https://github.com/d-e-s-o/serde_variant
enum rust serde variant
Last synced: 11 months ago
JSON representation
Retrieve serde provided variant names for enum objects.
- Host: GitHub
- URL: https://github.com/d-e-s-o/serde_variant
- Owner: d-e-s-o
- License: apache-2.0
- Created: 2020-01-27T05:25:45.000Z (over 6 years ago)
- Default Branch: main
- Last Pushed: 2025-03-23T17:51:38.000Z (about 1 year ago)
- Last Synced: 2025-07-22T11:01:14.938Z (11 months ago)
- Topics: enum, rust, serde, variant
- Language: Rust
- Homepage:
- Size: 60.5 KB
- Stars: 13
- Watchers: 2
- Forks: 3
- Open Issues: 2
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE-APACHE
Awesome Lists containing this project
README
[](https://github.com/d-e-s-o/serde_variant/actions/workflows/test.yml)
[](https://crates.io/crates/serde_variant)
[](https://docs.rs/serde_variant)
[](https://blog.rust-lang.org/2021/12/02/Rust-1.57.0.html)
serde_variant
=============
- [Documentation][docs-rs]
- [Changelog](CHANGELOG.md)
So you have just carefully defined your `enum` to be serialized and
deserialized using [`serde`][serde] as you intended and now you need an
additional `FromStr` or `Display` implementation that uses the same
names for `enum` variants as `serde` uses? You are reluctant to
duplicate all those definitions in two places?
**serde_variant** is a crate that allows you to retrieve back the
identifier of any `enum` variant passed to it.
Usage
-----
The crate provides a single function, `to_variant_name`, that retrieves
the name of a passed in `enum` variant. For example:
```rust
use serde_variant::to_variant_name;
#[derive(Serialize)]
enum Foo {
Var1,
#[serde(rename = "VAR2")]
Var2,
}
assert_eq!(to_variant_name(&Foo::Var1).unwrap(), "Var1");
assert_eq!(to_variant_name(&Foo::Var2).unwrap(), "VAR2");
```
[docs-rs]: https://docs.rs/crate/serde_variant
[serde]: https://crates.io/crates/serde