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日 |
#13 在 #成功
144,762 每月下载量
在 109 个 crate 中使用(通过 monostate)
9KB
148 行
单态
此库实现了一个类型宏,用于零大小类型,该类型只能从特定值进行 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.0 版本或MIT 许可证许可。除非您明确声明,否则您提交给此 crate 的任何贡献,根据 Apache-2.0 许可证定义,将双重许可,不附加任何其他条款或条件。
依赖项
~275–720KB
~17K SLoC