3 releases
0.1.2 | Sep 2, 2024 |
---|---|
0.1.1 | Sep 2, 2024 |
0.1.0 | Sep 2, 2024 |
#1587 in Encoding
1,608 downloads per month
14KB
249 lines
Serde short derive
This crate provides a derive macro to derive Serde's Serialize
and
Deserialize
traits for C enum represented as short enum
u8
, u16
, u32
or in case first value is < 0 i8
, i16
or i32
99% of the code is a copy/paste from serde-repr all credits goes to this crate
[dependencies]
serde = "1.0"
serde_short = "0.1"
use serde_short::{Serialize_short, Deserialize_short};
#[derive(Serialize_short, Deserialize_short, 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(())
}
Credits
lib.rs
:
Derive Serialize
and Deserialize
that uses short enum representation for C enum.
A small variant of the serde-repr (99% of the code is simple a copy/paste)
Examples
use serde_short::{Serialize_short, Deserialize_short};
#[derive(Serialize_short, Deserialize_short, PartialEq, Debug)]
#[repr(C)]
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(())
}
Dependencies
~235–680KB
~16K SLoC