Expand description
Utilities for writing completion-based asynchronous code.
A completion future is a future that must be run to completion, unlike regular futures which
can be dropped and stopped at any time without the future’s knowledge. This allows for more
flexibility for the implementer of the future and allows APIs like io_uring and IOCP to be
wrapped in a zero-cost way.
This is based off this RFC by Matthias247.
§Features
std: Enables features that require the standard library, on by default.alloc: Enables features that require allocation, on by default.macro: Enables thecompletion,completion_async,completion_async_moveandcompletion_streammacros, on by default.
Re-exports§
pub use completion_core::CompletionFuture;pub use completion_core::CompletionStream;pub use self::future::BoxCompletionFuture;pub use self::future::LocalBoxCompletionFuture;pub use self::future::CompletionFutureExt;pub use self::future::FutureExt;pub use self::stream::BoxCompletionStream;pub use self::stream::LocalBoxCompletionStream;pub use self::stream::CompletionStreamExt;pub use self::stream::StreamExt;
Modules§
- future
- Utilities for the
CompletionFuturetrait. - io
std - Utilities for programming with asynchronous I/O.
- stream
- Utilities for the
CompletionStreamtrait.
Macros§
- completion_
async macroandstd - A bang macro to generate completion
asyncblocks. - completion_
async_ move macroandstd - A bang macro to generate completion
async moveblocks. - completion_
stream macroandstd - A bang macro to generate completion async streams.
Structs§
- Adapter
- Helper type to implement
CompletionFutureorCompletionStreamfor a type that only implementsFutureorStream. - Assert
Completes - Unsafely assert that the inner future or stream will complete.
- Must
Complete - Make sure that a future or stream will complete, created by
CompletionFutureExt::must_completeandCompletionStreamExt::must_complete.
Attribute Macros§
- completion
macroandstd - An attribute macro to generate completion
async fns. These async functions evaluate to aCompletionFuture, and you can.awaitotherCompletionFutures inside of them.