9个不稳定版本
0.5.2 | 2021年3月5日 |
---|---|
0.5.1 | 2021年3月5日 |
0.4.1 | 2020年4月25日 |
0.4.0 | 2020年2月10日 |
0.1.0 | 2019年1月3日 |
#33 in #dht
每月 22 次下载
用于 wireguard-p2p
18KB
355 行
OpenDHT的Rust API。
#![feature(await_macro, async_await, futures_api)]
extern crate opendht;
extern crate futures;
#[macro_use] extern crate tokio;
use std::net::ToSocketAddrs;
use tokio::prelude::*;
use opendht::OpenDht;
async fn run(dht: OpenDht) {
println!("Bootstrapping...");
let addrs: Vec<_> = "bootstrap.ring.cx:4222".to_socket_addrs().unwrap().collect();
let f = dht.bootstrap(&addrs);
await!(f).unwrap();
let key = &b"foo"[..];
println!("Storing...");
let f = dht.put(key, &[9,9,9]);
await!(f).unwrap();
let mut f = dht.get(key); // dht.listen(key) is also available
while let Some(item) = await!(f.next()) {
println!("Found {:?}", item);
}
dht.join();
println!("Done: All threads joined.");
}
fn main() {
tokio::run_async(async {
let dht = OpenDht::new(4222).unwrap();
let dht2 = dht.clone();
tokio::spawn_async(async move {
while let Some(next) = dht2.tick() {
let f = tokio::timer::Delay::new(next);
let _ = await!(f);
}
});
await!(run(dht));
});
}
依赖关系
~8MB
~248K SLoC