Skip to content

Repository files navigation

Deku

Latest VersionRust DocumentationActions Statuscodecov

Declarative binary reading and writing

This crate provides bit-level, symmetric, serialization/deserialization implementations for structs and enums

Why use Deku

Productivity: Deku will generate symmetric reader/writer functions for your type! Avoid the requirement of writing redundant, error-prone parsing and writing code for binary structs or network headers

Usage

Compiler support: requires rustc 1.81+

[dependencies]
deku = "0.19"

no_std:

[dependencies]
deku = { version = "0.19", default-features = false, features = ["alloc"] }

Example

See documentation or examples 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);}

Changelog

See CHANGELOG.md

About

Declarative binary reading and writing: bit-level, symmetric, serialization/deserialization

Resources

Code of conduct

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages