//! Task abstraction and built-in task types.
//!
//! All tasks implement the [`Task`] trait. The crate ships five ready-made
//! implementations covering common workflow shapes:
//!
//! | Type | Purpose |
//! |------|---------|
//! | [`BasicTask`] | run an async closure |
//! | [`StatefulTask`] | checkpoint state to [`crate::storage::Storage`] |
//! | [`ConditionalTask`] | branch based on a predicate |
//! | [`LoopTask`] | repeat a body with a break condition |
//! | [`EventDrivenTask`] | wait for an event, then run |
// `trait` is a reserved word, so the module is a raw identifier.
pub use BasicTask;
pub use ConditionalTask;
pub use EventDrivenTask;
pub use LoopTask;
pub use r#trait::;
pub use ;