1 unstable release

0.1.0 Mar 26, 2022

#9 in #casing

23 downloads per month
Used in labelled-enum

MIT license

9KB
260 lines

labelled-enum labelled-enum at crates.io labelled-enum at docs.rs

Converting an enum to/from String.

Getting Started

Derives ToString, FromStr impl:

#[derive(ToString, FromStr)]
enum Test {
    Foo,
    Bar,
}

assert_eq!(Test::Foo.to_string(), "Foo");
assert_eq!(Test::from_str("Foo").unwrap(), Test::Foo);

Casing

You can specify snake_case using attribute:

#[derive(ToString, FromStr)]
#[label(rename_all = "snake_case")]
enum Test {
    SnakeCase,
}

Working with serde

labelled-enum provides serde_plugin feature to work with serde Serializer/Deserializer:

// install labelled-enum with --features serde_plugin

#[derive(Serialize, Deserialize)]
struct Wrapper {
    #[serde(with = "labelled_enum::serde_plugin")]
    test_snake_case: TestSnakeCase,
}

Dependencies

~1.5MB
~34K SLoC