4 ms·
I wonder if this idea could be implemented in Rust with destructors.
by ibraheemdev 5y ago
I wonder if this idea could be implemented in Rust with destructors.
- staticassertion 5y agoDrop is synchronous, and it's unclear what async Drop would look like afaik, so not today.
- ibraheemdev 5y agoThe drop implementation could push to a worker queue running in the background.
- staticassertion 5y agoIf you don't wait for a response you're not really getting the same benefit.
- Matthias247 5y agoYou 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.