bragi

Crates.iobragi
lib.rsbragi
version0.2.0
created_at2025-04-30 22:53:19.023288+00
updated_at2025-05-14 12:53:23.248571+00
descriptionHelper crate used in code generated by bragi
homepage
repositoryhttps://github.com/managarm/bragi
max_upload_size
id1655547
size19,853
Alexander van der Grinten (avdgrinten)

documentation

README

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.

Commit count: 109

cargo fmt