bragi 0.2.0

Helper crate used in code generated by bragi
Documentation
# bragi

Helper crate used in code generated by [bragi](https://github.com/managarm/bragi)
and Rust software written for [Managarm](https://github.com/managarm/bragi/managarm).

The bindings can be generated from a `build.rs` file with the help of the 
[`bragi-build`](https://crates.io/crates/bragi-build) crate.

## Examples

Given the example bragi message:

```bragi
message ExampleMessage 1 {
head(128):
	uint32 a;
    uint32 b;
}
```

### Including generated bindings

```rs
// Include the generated bindings.
bragi::include_binding!(mod bindings = "bindings.rs");
```

### Encoding a message into a `Vec<u8>`

```rs
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>`

```rs
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](LICENSE) file for more details.