- Notifications
You must be signed in to change notification settings - Fork55
Declarative binary reading and writing: bit-level, symmetric, serialization/deserialization
License
Apache-2.0, MIT licenses found
Licenses found
Apache-2.0
LICENSE-APACHEMIT
LICENSE-MITNotificationsYou must be signed in to change notification settings
sharksforarms/deku
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
Declarative binary reading and writing
This crate provides bit-level, symmetric, serialization/deserializationimplementations for structs and enums
Productivity: Deku will generate symmetric reader/writer functions for your type!Avoid the requirement of writing redundant, error-prone parsing and writing codefor binary structs or network headers
Compiler support: requires rustc 1.71+
[dependencies]deku ="0.18"
no_std:
[dependencies]deku = {version ="0.18",default-features =false,features = ["alloc"] }
Seedocumentation orexamples folder for more!
Read big-endian data into a struct, modify a value, and write it
use deku::prelude::*;#[derive(Debug,PartialEq,DekuRead,DekuWrite)]#[deku(endian ="big")]structDekuTest{#[deku(bits =4)]field_a:u8,#[deku(bits =4)]field_b:u8,field_c:u16,}fnmain(){let data:Vec<u8> =vec![0b0110_1001,0xBE,0xEF];let(_rest,mut val) =DekuTest::from_bytes((data.as_ref(),0)).unwrap();assert_eq!(DekuTest{ field_a:0b0110, field_b:0b1001, field_c:0xBEEF,}, val); val.field_c =0xC0FE;let data_out = val.to_bytes().unwrap();assert_eq!(vec![0b0110_1001,0xC0,0xFE], data_out);}
SeeCHANGELOG.md
About
Declarative binary reading and writing: bit-level, symmetric, serialization/deserialization
Topics
Resources
License
Apache-2.0, MIT licenses found
Licenses found
Apache-2.0
LICENSE-APACHEMIT
LICENSE-MITCode of conduct
Stars
Watchers
Forks
Packages0
No packages published