#progress-bar #yield #async-task #events

no-std yield-progress

Combined progress reporting and cooperative task yielding

5 releases

new 0.1.6 Apr 28, 2024
0.1.5 Dec 26, 2023
0.1.4 Sep 30, 2023
0.1.0 Aug 23, 2023

#713 in Asynchronous

Download history 11/week @ 2024-01-06 42/week @ 2024-01-13 66/week @ 2024-01-20 25/week @ 2024-01-27 57/week @ 2024-02-03 133/week @ 2024-02-10 73/week @ 2024-02-17 136/week @ 2024-02-24 42/week @ 2024-03-02 50/week @ 2024-03-09 63/week @ 2024-03-16 81/week @ 2024-03-23 72/week @ 2024-03-30 5/week @ 2024-04-06 30/week @ 2024-04-13 19/week @ 2024-04-20

130 downloads per month
Used in 7 crates (3 directly)

MIT/Apache

33KB
479 lines

YieldProgress

This library, yield-progress, provides the YieldProgress type, which allows a long-running async task to report its progress, while also yielding to the scheduler (e.g. for the single-threaded web/Wasm environment) and introducing cancellation points.

These things go together because the rate at which it makes sense to yield (to avoid event loop hangs) is similar to the rate at which it makes sense to report progress, at least for human interfaces.

Compatibility

  • YieldProgress is executor-independent; when it is constructed, the caller may provide a function for yielding using executor-specific mechanisms such as tokio::task::yield_now(), or may use the built-in simple yielder.
  • The library is no_std compatible if default features are disabled. See the library documentation for details on the consequences.

Project status and stability

yield-progress has been split out of my larger project all-is-cubes so that I can use it for other applications; its functionality and applicability may be limited, but I believe it is free of bugs.

License

Licensed under either of

at your option.

Contribution

Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.

Dependencies

~0–270KB