3 ms·
You can do it for Rust threads - but it gets tricky with Rust coroutines (async functions). I made an attempt of implementing it for async Rust in https://git
by Matthias247 5y ago
You can do it for Rust threads - but it gets tricky with Rust coroutines (async functions).
I made an attempt of implementing it for async Rust in
https://github.com/tokio-rs/tokio/issues/1879 https://github.com/tokio-rs/tokio/issues/1879
with a concrete implementation in
https://github.com/tokio-rs/tokio/pull/2579 https://github.com/tokio-rs/tokio/pull/2579
It mostly follows the Kotlin model of structured concurrency. However it has its sets of drawbacks due to Rust Futures being immediately cancellable, which then leads to problem if a parent task gets simply dropped.
In order to handle that case better I've written a proposal for async functions that run to completion with https://rust-lang.zulipchat.com/#narrow/stream/187312-wg-async-foundations/topic/run.20to.20completion.20async.20fn https://rust-lang.zulipchat.com/#narrow/stream/187312-wg-asy... . However that is all theoretical, and might never see the light of the day.