bragi 0.3.0

Helper crate used in code generated by bragi
Documentation
bragi-0.3.0 has been yanked.

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.