5 个版本
0.1.4 | 2023年6月4日 |
---|---|
0.1.3 | 2023年1月16日 |
0.1.2 | 2023年1月16日 |
0.1.1 | 2023年1月16日 |
0.1.0 | 2023年1月15日 |
在 #tags 中排名 448
每月下载 231 次
在 24 个包中(通过 enser 使用)
15KB
223 行
✒️ enser
带标签的枚举序列化
# serde_yaml -- every variant starts with a !Tag
enser:
-- Tbd
-- None
+- !Tbd null
+- !None null
- !Some 123
- !Named
value: 456
# serde_json -- every variant is an object
{
"enser": [
- "Tbd",
- "None",
+ { "Tbd": null },
+ { "None": null },
{ "Some": 123 },
{ "Named": { "value": 456 } }
]
}
用法
将以下内容添加到 Cargo.toml
enser = "0.1.4"
#[enser::enser] // <-- just add this
// Note: It *must* come above `#[derive(Clone, Deserialize, Serialize)]`
#[derive(Clone, Debug, Deserialize, Serialize)]
enum MyEnum {
Tbd,
None,
Some(u32),
Named { value: u32 },
}
泛型
这将自动适用于泛型类型
#[enser::enser]
#[derive(Clone, Debug, Deserialize, Serialize)]
enum MyEnum<T, U> {
None,
Some(T),
Named { value: U },
}
但是,它还会为每个类型参数添加一个 Clone
约束,因此所有 impl
块都将需要类型参数具有 Clone
约束。
如果您能找到一种方法使 generics
示例在没有引起 Clone
约束传播的情况下工作,请告诉我/提交一个 pull request!
许可
在以下任一许可证下发布
- Apache 许可证 2.0 版本,(LICENSE-APACHE 或 https://apache.ac.cn/licenses/LICENSE-2.0)
- MIT 许可证 (LICENSE-MIT 或 https://opensource.org/licenses/MIT)
任选其一。
贡献
除非您明确说明,否则任何有意提交以包含在您的工作中的贡献,根据 Apache-2.0 许可证定义,应按上述方式双许可,而无需任何附加条款或条件。
依赖关系
~0.4–0.8MB
~19K SLoC