2 releases
0.1.1 | Jul 27, 2020 |
---|---|
0.1.0 | Jul 27, 2020 |
#34 in #scoped
6KB
60 lines
safe-async-scoped
is a minimal wrapper around FuturesUnordered
in the futures
crate that simulates scoped tasks. Unlike async-scoped
and even crossbeam-scoped
etc, safe-async-scoped
- Is completely safe to use
- Has no
unsafe
code in its implementation - Has no dependencies other than
futures
- Is completely runtime-agnostic
Note that "tasks" spawned with safe-async-scoped
will not be sent to the executor as separate tasks, and will thus only run on one thread. On the plus side, none of the futures have to be Send
.
Example
let listener = Async::new(TcpListener::bind("127.0.0.1:8080").unwrap()).unwrap();
let lala = String::from("hello");
{
let scope = Scope::new();
scope
.start(async {
loop {
let (client, _) = listener.accept().await.unwrap();
scope.spawn(async {
handle(client, &lala).await;
});
}
})
.await;
}
Dependencies
~1MB
~15K SLoC