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 · Rust 包仓库 35969/week @ 2024-04-16 · Rust 包仓库 35726/week @ 2024-04-23 · Rust 包仓库 30101/week @ 2024-04-30 · Rust 包仓库 29088/week @ 2024-05-07 · Rust 包仓库 31698/week @ 2024-05-14 · Rust 包仓库 28963/week @ 2024-05-21 · Rust 包仓库 32059/week @ 2024-05-28 · Rust 包仓库 32618/week @ 2024-06-04 · Rust 包仓库 33808/week @ 2024-06-11 · Rust 包仓库 33770/week @ 2024-06-18 · Rust 包仓库 34191/week @ 2024-06-25 · Rust 包仓库 27443/week @ 2024-07-02 · Rust 包仓库 33969/week @ 2024-07-09 · Rust 包仓库 32888/week @ 2024-07-16 · Rust 包仓库 37176/week @ 2024-07-23 · Rust 包仓库 33098/week @ 2024-07-30 · Rust 包仓库

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