12个不稳定版本 (3个破坏性更新)
0.4.0 | 2023年8月4日 |
---|---|
0.3.2 | 2022年12月17日 |
0.2.5 | 2022年4月5日 |
0.2.4 | 2021年8月22日 |
0.1.4 | 2021年7月25日 |
#1498 in 编码
每月下载量77,118
用于 67 个crate (30直接使用)
51KB
1K SLoC
serde-enum-str
解决
https://stackoverflow.com/questions/57469527
开发
cargo expand --verbose --test test
lib.rs
:
序列化和反序列化枚举字符串。
[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(())
}
依赖
~2MB
~42K SLoC