1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
//! Utilities for long-running, resilient tasks.
//!
//! This library contains code I wrote, found useful, and want to keep using.
//! It aims to provide quick and re-usable scaffolding for building daemons.
//! It is heavily optimized for my preferred dev ergonomics, and is not heavily
//! optimized for performance.
//!
//! The general style is focused on spawning long-lived worker loops, which use
//! channels to communicate.
//!
//! ```no_compile
//! impl Boulder for MyWorkerTask {
//! fn spawn(self) -> JoinHandle<Fall<Self>> {
//! tokio::spawn(async move {
//! while let Some(item) = self.pipe.next().await {
//! // work happens here :)
//! }
//! });
//! }
//! }
//!
//! let task = MyWorkerTask::new().run_forever();
//! ```
/// Pipe with process-once semantics
/// Resumable, never-ending, tasks
/// Crate-internal utils
pub use crate;
pub use ;