#serde-derive #serde #integer #macro-derive #no-alloc

无std serde_repr

通过委托到C样枚举的底层repr实现Serialize和Deserialize的派生

20个版本

0.1.19 2024年4月8日
0.1.18 2024年1月2日
0.1.17 2023年10月30日
0.1.16 2023年7月27日
0.1.3 2019年2月21日

#1029 in 编码

Download history 491284/week @ 2024-04-22 471989/week @ 2024-04-29 468758/week @ 2024-05-06 483189/week @ 2024-05-13 483337/week @ 2024-05-20 458327/week @ 2024-05-27 491206/week @ 2024-06-03 483651/week @ 2024-06-10 492754/week @ 2024-06-17 509192/week @ 2024-06-24 455521/week @ 2024-07-01 495089/week @ 2024-07-08 490022/week @ 2024-07-15 518920/week @ 2024-07-22 515859/week @ 2024-07-29 512777/week @ 2024-08-05

2,068,664 每月下载量
用于 2,470 个crate (559直接)

MIT/Apache

14KB
210

Serde repr derive

github crates.io docs.rs build status

此crate提供了一个派生宏,以派生Serde的SerializeDeserialize特性,这种方式会委托到C样枚举的底层repr。

[dependencies]
serde = "1.0"
serde_repr = "0.1"
use serde_repr::{Serialize_repr, Deserialize_repr};

#[derive(Serialize_repr, Deserialize_repr, PartialEq, Debug)]
#[repr(u8)]
enum SmallPrime {
    Two = 2,
    Three = 3,
    Five = 5,
    Seven = 7,
}

fn main() -> serde_json::Result<()> {
    let j = serde_json::to_string(&SmallPrime::Seven)?;
    assert_eq!(j, "7");

    let p: SmallPrime = serde_json::from_str("2")?;
    assert_eq!(p, SmallPrime::Two);

    Ok(())
}

许可证

根据您的选择,许可协议为Apache License, Version 2.0MIT许可证
除非您明确说明,否则根据Apache-2.0许可证定义,您提交的任何有意包含在此crate中的贡献,将根据上述条款双许可,不附加任何额外条款或条件。

依赖项

~260–710KB
~17K SLoC