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#成功

Download history 35969/week @ 2024-04-16 35726/week @ 2024-04-23 30101/week @ 2024-04-30 29088/week @ 2024-05-07 31698/week @ 2024-05-14 28963/week @ 2024-05-21 32059/week @ 2024-05-28 32618/week @ 2024-06-04 33808/week @ 2024-06-11 33770/week @ 2024-06-18 34191/week @ 2024-06-25 27443/week @ 2024-07-02 33969/week @ 2024-07-09 32888/week @ 2024-07-16 37176/week @ 2024-07-23 33098/week @ 2024-07-30

144,762 每月下载量
109 个 crate 中使用(通过 monostate

MIT/Apache

9KB
148

单态

github crates.io docs.rs build status

此库实现了一个类型宏,用于零大小类型,该类型只能从特定值进行 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