Skip to content

ealmloff/const-serialize

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

37 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

A rust serialization library that works in const with complex(ish) types like enums, nested structs and arrays. Const rust does not have an allocator, so this library cannot work in a cross architecture environment with Vecs, slices or strings.

#[derive(Clone, Copy, Debug, PartialEq, SerializeConst)] struct Struct { a: u32, b: u8, c: u32, d: Enum, } #[derive(Clone, Copy, Debug, PartialEq, SerializeConst)] #[repr(C, u8)] enum Enum { A { one: u32, two: u16 }, B { one: u8, two: u16 } = 15, } const { let data = [Struct { a: 0x11111111, b: 0x22, c: 0x33333333, d: Enum::A { one: 0x44444444, two: 0x5555, }, }; 3]; let mut buf = ConstWriteBuffer::new(); buf = serialize_const(&data, buf); let buf = buf.read(); let deserialized = match deserialize_const!([Struct; 3], buf) { Some(data) => data, None => panic!("data mismatch"), }; if !serialize_eq(&data, &deserialized) { panic!("data mismatch"); } }

About

Like serde::Serialize + serde::Deserialize but const

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages