1 unstable release
0.1.0 | Jan 23, 2022 |
---|
#462 in Testing
17KB
285 lines
maelstrom-rs
A crate that is providing an Actor model to develop toy distributed systems using Maelstrom.
What is Maelstrom?
Maelstrom is a workbench for learning distributed systems by writing your own. It uses the Jepsen testing library to test toy implementations of distributed systems.
Getting started
Examples following the official documentations can be found in the examples folder.
The crate exposes:
Examples
use maelstrom_rs::actor::Actor;
use maelstrom_rs::message::{Request, Response};
use maelstrom_rs::error::Error;
use maelstrom_rs::runtime::Runtime;
fn main() {
let node = EchoActor { node_id: None };
let mut runtime = Runtime::new(Box::new(node));
// runtime.start();
}
struct EchoActor {
node_id: Option<String>,
}
impl Actor for EchoActor {
fn init(&mut self, node_id: &str, _node_ids: Vec<String>) -> Result<(), Error> {
self.node_id = Some(String::from(node_id));
eprintln!("node {} initiated", node_id);
Ok(())
}
fn receive(&mut self, message: &Request) -> Result<Vec<Response>, Error> {
match message.message_type.as_str() {
"echo" => unimplemented!(),
_ => unimplemented!(),
}
}
}
Dependencies
~0.7–1.4MB
~33K SLoC