dd
deku_derive
cargo install deku_derive
dd

deku_derive

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

by Emmanuel Thompson

0.12.6 (see all)License:MIT OR Apache-2.0
cargo install deku_derive
Readme

Deku

Latest Version Rust Documentation Actions Status codecov Gitter

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

[dependencies]
deku = "0.12"

no_std:

[dependencies]
deku = { version = "0.12", 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")]
struct DekuTest {
#[deku(bits = "4")]
field_a: u8,
#[deku(bits = "4")]
field_b: u8,
field_c: u16,
}




fn main() {
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

GitHub Stars

407

LAST COMMIT

24d ago

MAINTAINERS

1

CONTRIBUTORS

23

OPEN ISSUES

27

OPEN PRs

3
VersionTagPublished
0.12.6
24d ago
0.13.1
24d ago
0.13.0
4mos ago
0.12.5
8mos ago
No alternatives found
No tutorials found
Add a tutorial