5个版本
0.0.5 | 2024年7月3日 |
---|---|
0.0.4 | 2024年7月3日 |
0.0.3 | 2024年7月3日 |
0.0.2 | 2024年6月27日 |
0.0.1 | 2024年6月27日 |
#9 in #ready
53KB
2K SLoC
Span是一个网络库,目前实现了基于研究论文的高级共识。
它尚未完成,并且不适合实验性使用;然而,这是目前共识API的样子
use span::*;
use serde::*;
#[data("62dc1b7c-6849-43a9-9f47-ecfc8ee1da0b")]
#[derive(Serialize, Deserialize)]
pub enum Command {
Example(String)
}
#[tokio::main]
async fn main() {
//this has to be changed manually to the socket addrs of peers for this example
let peers = vec![
//change these
"0.0.0.0:0".parse().unwrap(),
"0.0.0.0:0".parse().unwrap()
];
let mut cluster = Cluster::connect("0.0.0.0:0".parse().unwrap(), peers);
let mut set = Dataset::create(&mut cluster, b"these bytes can be used to identify a channel").await.expect("failed to create or find dataset");
loop {
if matches!(set.status().state, State::Leader) {
set.send(&Command::Example("hello, span!".into()));
}
while let Ok(Some(Command::Example(string))) = set.recv().await {
assert_eq!(string, "hello, span!")
}
}
}
依赖项
~17–47MB
~829K SLoC