[−][src]Crate tokio_global
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
AutoRuntime | Trait to bootstrap your futures. |