#variant-name #enums #variant #serialization #serde #object

serde_variant

获取serde为枚举对象提供的变体名称

4个版本

0.1.3 2024年4月6日
0.1.2 2023年2月20日
0.1.1 2021年8月24日
0.1.0 2020年1月27日

#112 in 编码

Download history 12785/week @ 2024-04-22 11605/week @ 2024-04-29 8735/week @ 2024-05-06 14502/week @ 2024-05-13 9358/week @ 2024-05-20 12671/week @ 2024-05-27 14473/week @ 2024-06-03 15480/week @ 2024-06-10 16466/week @ 2024-06-17 20408/week @ 2024-06-24 14268/week @ 2024-07-01 22723/week @ 2024-07-08 16422/week @ 2024-07-15 21886/week @ 2024-07-22 16502/week @ 2024-07-29 20028/week @ 2024-08-05

75,690 每月下载量
101 个crate中使用 (28 直接)

Apache-2.0 OR MIT

13KB
305

pipeline crates.io Docs rustc

serde_variant

因此,你已经仔细定义了你的 enum,以使用 serde 进行序列化和反序列化,正如你所期望的,现在你需要一个额外的 FromStrDisplay 实现来使用与 serde 相同的名称为 enum 变体?你不愿意在两个地方重复所有这些定义吗?

serde_variant 是一个crate,它允许你检索传递给它的任何 enum 变体的标识符。

用法

该crate提供了一个单函数 to_variant_name,用于检索传入的 enum 变体的名称。例如

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

依赖项

~110–345KB