Expand description
Provides you with global tokio runtimes
It can be used from any point in code without need to manually pass around runtime itself Or being forced to use tokio macros
§Example
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();Re-exports§
pub extern crate tokio;
Structs§
- Runtime
- Tokio runtime guard
Traits§
- Auto
Runtime - Trait to bootstrap your futures.