1 unstable release
Uses new Rust 2024
new 0.1.0 | Apr 30, 2025 |
---|
#24 in #idl
81 downloads per month
17KB
379 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::write_head_only(&msg)?;
Ok(buffer)
}
Decoding a message from a Vec<u8>
fn decode_an_example_message(buf: &[u8]) -> std::io::Result<()> {
// Create a reader
let mut cursor = std::io::Cursor::new(buf);
// Decode an example message
let msg: bindings::ExampleMessage = bragi::read_head_only(&mut cursor)?;
// 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