| Crates.io | bitfield-serialize |
| lib.rs | bitfield-serialize |
| version | 0.1.0 |
| created_at | 2025-06-14 05:20:48.060837+00 |
| updated_at | 2025-06-14 05:20:48.060837+00 |
| description | A Rust library for defining and serializing bitfield structures with macro support |
| homepage | https://github.com/DawnMagnet/bitfield-serialize |
| repository | https://github.com/DawnMagnet/bitfield-serialize |
| max_upload_size | |
| id | 1712122 |
| size | 55,704 |
A Rust library for defining and serializing bitfield structures with macro support.
Add this to your Cargo.toml:
[dependencies]
rust-bitfield-serializer = "0.1.0"
use rust_bitfield_serializer::{bitfield, BitfieldSerialize, BitfieldSize};
// Define a simple bitfield using macro
bitfield! {
struct SimpleBitfield {
flag: u8, 1,
value: u8, 7,
}
}
fn main() {
// Create and configure bitfield
let mut bitfield = SimpleBitfield::new();
bitfield.set_flag(1);
bitfield.set_value(100);
// Access fields
println!("Flag: {}", bitfield.get_flag());
println!("Value: {}", bitfield.get_value());
// Serialize to bytes
let bytes = bitfield.serialize();
println!("Serialized: {:?}", bytes);
// Deserialize from bytes
let restored = SimpleBitfield::deserialize(&bytes).unwrap();
println!("Restored flag: {}", restored.get_flag());
}
use rust_bitfield_serializer::{
BitField, BitfieldSerializer, BitfieldStruct,
FieldType, FieldValue, BitfieldSerialize
};
fn main() {
// Create bitfield manually
let mut bitfield = BitfieldStruct::new();
// Add fields
bitfield.add_field("status", FieldType::U8, 2);
bitfield.add_field("counter", FieldType::U16, 14);
// Set values
bitfield.set_field("status", FieldValue::U8(3));
bitfield.set_field("counter", FieldValue::U16(1024));
// Serialize
let serializer = BitfieldSerializer::new();
let bytes = serializer.serialize(&bitfield).unwrap();
println!("Serialized: {:?}", bytes);
}
BitfieldSerialize - Provides serialization and deserialization methodsBitfieldSize - Provides size calculation methodsBitReader - Efficient bit-level reading operationsBitWriter - Efficient bit-level writing operationsBitfieldSerializer - Main serialization engineBitField - Individual field definitionBitfieldStruct - Container for multiple fieldsFieldType - Enumeration of supported field typesFieldValue - Enumeration of field valuesbitfield! {
struct NetworkPacket {
version: u8, 4,
header_length: u8, 4,
type_of_service: u8, 8,
total_length: u16, 16,
identification: u16, 16,
flags: u8, 3,
fragment_offset: u16, 13,
}
}
match bitfield.serialize() {
Ok(bytes) => println!("Success: {:?}", bytes),
Err(e) => eprintln!("Error: {}", e),
}
This library is designed for high performance with:
This project is licensed under either of
at your option.
Contributions are welcome! Please feel free to submit a Pull Request.