A Rust runtime library for Maelstrom
Sample Gossip Glomers Solutions
Example usage to solve the first of the Gossip Glomers challenges (more examples in /examples) ```rust // main.rs use maelbreaker::{ network::Network, node::Node, payload, runtime::Runtime, types::{Message, Try}, };
// We derive all the traits needed for our message types
// using the payload!
macro.
payload!(
enum Payload {
Echo { echo: String },
EchoOk { echo: String },
}
);
struct EchoNode {
// Network is used to send messages from our node
network: Network
impl Node
fn handle_message(&mut self, msg: Message<Payload>) -> Try {
let Payload::Echo { echo } = &msg.body.payload else {
bail!("expected echo");
};
let echo = echo.clone();
// we use our handy into_reply method to consume a request
// and produce a reply with the correct src, dest, and in_reply_to fields
let reply = msg.into_reply(Payload::EchoOk { echo });
// we send our response onto the network!
self.network.send(reply)
}
}
fn main() -> Try {
// we start the runtime with our Node and Payload implementations
Runtime::