11 releases

0.3.2 Dec 17, 2022
0.3.1 Dec 17, 2022
0.2.5 Apr 5, 2022
0.2.4 Aug 22, 2021
0.1.4 Jul 25, 2021

#555 in Parser implementations

Download history 1890/week @ 2022-12-03 1805/week @ 2022-12-10 2617/week @ 2022-12-17 1065/week @ 2022-12-24 1992/week @ 2022-12-31 3160/week @ 2023-01-07 2810/week @ 2023-01-14 3344/week @ 2023-01-21 2637/week @ 2023-01-28 3481/week @ 2023-02-04 2834/week @ 2023-02-11 2527/week @ 2023-02-18 2444/week @ 2023-02-25 3537/week @ 2023-03-04 3325/week @ 2023-03-11 3293/week @ 2023-03-18

12,987 downloads per month
Used in 61 crates (24 directly)

Apache-2.0 OR MIT

47KB
1K SLoC

serde-enum-str

Solves

https://stackoverflow.com/questions/57469527

Dev

cargo expand --verbose --test test

lib.rs:

Serialize and deserialize enum string.

[dependencies]
serde-enum-str = "0.3"
serde = { version = "1", features = ["derive"] }
use serde_enum_str::{Deserialize_enum_str, Serialize_enum_str};

#[derive(Deserialize_enum_str, Serialize_enum_str, Debug, PartialEq, Eq)]
#[serde(rename_all = "snake_case")]
enum Foo {
    A,
    #[serde(rename = "B")]
    B,
    #[serde(other)]
    Other(String),
}

fn main() -> serde_json::Result<()> {
    assert_eq!(serde_json::to_string(&Foo::A).unwrap(), r#""a""#);
    assert_eq!(serde_json::from_str::<Foo>(r#""a""#).unwrap(), Foo::A);

    assert_eq!(
        serde_json::from_str::<Foo>(r#""c""#).unwrap(),
        Foo::Other("c".to_owned())
    );

    assert_eq!(Foo::A.to_string(), "a");
    assert_eq!("a".parse::<Foo>().unwrap(), Foo::A);

    Ok(())
}

Dependencies

~1–1.4MB
~33K SLoC