bragi 0.3.1

Helper crate used in code generated by bragi
Documentation

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.