14 个版本
0.1.13 | 2024 年 5 月 6 日 |
---|---|
0.1.11 | 2024 年 1 月 2 日 |
0.1.10 | 2023 年 11 月 14 日 |
0.1.9 | 2023 年 7 月 21 日 |
0.1.0 | 2022 年 1 月 25 日 |
#1256 在 编码
130,788 每月下载次数
用于 107 个 crate(16 直接使用)
52KB
1.5K SLoC
Monostate
该库实现了一个用于零大小类型的类型宏,该类型仅从特定值进行 Serde 反序列化。
[dependencies]
monostate = "0.1"
示例
use monostate::MustBe;
use serde::Deserialize;
#[derive(Deserialize)]
struct Example {
kind: MustBe!("success"),
code: MustBe!(200),
}
上面的结构体会从 JSON 中的 {"kind":"success", "code":200}
反序列化,但如果 "kind" 或 "code" 的值不是指定的值,则反序列化会失败。
这有时在处理未标记枚举时很有帮助,其中变体标识比 Serde 的外部标记和内部标记表示法处理的更复杂,例如,因为变体标记类型或键不一致。
use monostate::MustBe;
use serde::Deserialize;
#[derive(Deserialize)]
#[serde(untagged)]
pub enum ApiResponse {
Success {
success: MustBe!(true),
},
Error {
kind: MustBe!("error"),
message: String,
},
}
许可证
根据您的选择,在 Apache 许可证第 2 版 或 MIT 许可证 下许可。除非您明确声明,否则根据 Apache-2.0 许可证定义的,您有意提交的任何贡献,均应双重许可如上所述,而不附加任何额外条款或条件。
依赖项
~0.4–1MB
~23K SLoC