4 个版本 (破坏性更新)
0.4.0 | 2019 年 12 月 20 日 |
---|---|
0.3.0 | 2019 年 12 月 19 日 |
0.2.0 | 2019 年 4 月 17 日 |
0.1.0 | 2019 年 3 月 16 日 |
#878 in 异步
用于 fie-ffi
17KB
298 行
tokio-global
以简单方式创建全局 tokio 运行时,可在代码的任何地方使用
用法
启动运行时并使用 AutoRuntime
特性来启动你的 futures
use tokio_global::{Runtime, AutoRuntime};
use tokio::io::{AsyncWriteExt, AsyncReadExt};
async fn server() {
let mut listener = tokio::net::TcpListener::bind("127.0.0.1:8080").await.expect("To bind");
let (mut socket, _) = listener.accept().await.expect("To accept connection");
async move {
let mut buf = [0; 1024];
loop {
match socket.read(&mut buf).await {
// socket closed
Ok(0) => return,
Ok(_) => continue,
Err(_) => panic!("Error :("),
};
}
}.spawn().await.expect("Finish listening");
}
async fn client() {
let mut stream = tokio::net::TcpStream::connect("127.0.0.1:8080").await.expect("Connect");
// Write some data.
stream.write_all(b"hello world!").await.expect("Write");
//Stop runtime
Runtime::stop();
}
let _guard = Runtime::default();
let runner = std::thread::spawn(|| {
Runtime::run();
});
server().spawn();
client().spawn();
依赖项
~3.5MB
~49K SLoC