Async Rust can be complex and often requires `Send + Sync + 'static` bounds, leading to extensive use of `Arc`s and `Mutex`es. However, using structured concurrency and thread-per-core runtimes can simplify async Rust by avoiding these bounds. Structured concurrency makes futures scope-bound, enabling Rust's borrow checker to handle cleanup automatically. Thread-per-core architectures, such as those supported by runtimes like `glommio`, remove the need for `Send` bounds, allowing resources to remain unwrapped and reducing the need for clones. This approach can significantly improve developer experience and, in some cases, even performance.
Table of contents
Async Rust can be a pleasure to work with (without `Send + Sync + 'static`)Async without 'staticStructured ConcurrencyStructured Concurrency in RustAsync without Send + SyncThread-per-coreThe spectrum from share-nothing to work-stealingGranularity of load balancingBenchmarking work-stealing and thread-per-coreAsync without Send + Sync + 'staticAre we thread-per-core web yet?ConclusionFuture work1 Comment
Sort: