2 unstable releases
Uses new Rust 2024
0.2.0 | May 14, 2025 |
---|---|
0.1.0 | Apr 30, 2025 |
#1131 in Encoding
73 downloads per month
19KB
418 lines
bragi
Helper crate used in code generated by bragi and Rust software written for Managarm.
The bindings can be generated from a build.rs
file with the help of the
bragi-build
crate.
Examples
Given the example bragi message:
message ExampleMessage 1 {
head(128):
uint32 a;
uint32 b;
}
Including generated bindings
// Include the generated bindings.
bragi::include_binding!(mod bindings = "bindings.rs");
Encoding a message into a Vec<u8>
fn encode_an_example_message() -> std::io::Result<Vec<u8>> {
// Create an example message
let msg = bindings::ExampleMessage::new(1337, 420);
// Encode an example message into a byte buffer.
let buffer = bragi::message_head_to_bytes(&msg)?;
Ok(buffer)
}
Decoding a message from a Vec<u8>
fn decode_an_example_message(buffer: &[u8]) -> std::io::Result<()> {
// Decode an example message
let msg: bindings::ExampleMessage = bragi::head_from_bytes(buffer)?;
// Print the decoded message
println!("a: {}", msg.a());
println!("b: {}", msg.b());
Ok(())
}
License
This crate is licensed under the MIT license. See the LICENSE file for more details.
Dependencies
~22KB