report progress of concurrent applications and display it in various ways
399
stars
623
commits
Rust
primary language
Sep 1, 2026
updated
prodash allows to integrate progress reporting into concurrent applications and provides renderers for displaying it in various ways.
It's easy to integrate thanks to a pragmatic API, and comes with a terminal user interface by default.
Be sure to read the documentation at https://docs.rs/prodash, it contains various examples on how to get started.
Or run the demo application like so cd prodash && cargo run --all-features --example dashboard.
This crate comes with various cargo features to tailor it to your needs.
Progress and Root trait implementation for use with the render-line and render-tui backed by dashmap.log crate is initialized, a log will be used to output all messages provided to
tree::Item::message(…) and friends. No actual progress is written.render-tui or render-line, or any renderer outputting to the console.Progress implementation which logs messages and progress using the log craterender-tui will be using the local time, not UTCrender-line will be using the local time, not UTCrender-tui or render-line respectivelyrender::line::Options::auto_configure() will configure the display based on whether or not we are in a terminal
and set its color mode based on what's possible or desired.hide_cursor line renderer option is set, the cursor will be hidden and SIG_INT and SIG_TERM handlers will be
installed to reset the cursor on exit. Otherwise you have to make sure to call shutdown_and_wait() on the JoinHandle returned
to give the renderer a chance to undo the terminal changes. Failing to do so will leave the cusor hidden once the program has already
finished.crossterm crate as terminal backendcargo build --features render-tui-crossterm,crossterm/event-streamtermion crate as terminal backendunix systemsrender-tui and render-tui-termion.bytesize crate.human_format crate.jiff crate's friendly duration format.dashmap, does not document every use of unsafe
evmap, which has 25% less uses of unsafe, but a more complex interface.drop() is not garantueed to be called when the future returns Ready and is in the futures::executor::ThreadPool
futures::future::abortable() works (by stopping the polling), but doesn't as cleanup is not performed,
even though it clearly would be preferred.select() might not work with complex futures - these should then be boxed() if Unpin isn't implemented.Rust
99.2%
report progress of concurrent applications and display it in various ways
399
stars
623
commits
Rust
primary language
Sep 1, 2026
updated
prodash allows to integrate progress reporting into concurrent applications and provides renderers for displaying it in various ways.
It's easy to integrate thanks to a pragmatic API, and comes with a terminal user interface by default.
Be sure to read the documentation at https://docs.rs/prodash, it contains various examples on how to get started.
Or run the demo application like so cd prodash && cargo run --all-features --example dashboard.
This crate comes with various cargo features to tailor it to your needs.
Progress and Root trait implementation for use with the render-line and render-tui backed by dashmap.log crate is initialized, a log will be used to output all messages provided to
tree::Item::message(…) and friends. No actual progress is written.render-tui or render-line, or any renderer outputting to the console.Progress implementation which logs messages and progress using the log craterender-tui will be using the local time, not UTCrender-line will be using the local time, not UTCrender-tui or render-line respectivelyrender::line::Options::auto_configure() will configure the display based on whether or not we are in a terminal
and set its color mode based on what's possible or desired.hide_cursor line renderer option is set, the cursor will be hidden and SIG_INT and SIG_TERM handlers will be
installed to reset the cursor on exit. Otherwise you have to make sure to call shutdown_and_wait() on the JoinHandle returned
to give the renderer a chance to undo the terminal changes. Failing to do so will leave the cusor hidden once the program has already
finished.crossterm crate as terminal backendcargo build --features render-tui-crossterm,crossterm/event-streamtermion crate as terminal backendunix systemsrender-tui and render-tui-termion.bytesize crate.human_format crate.jiff crate's friendly duration format.dashmap, does not document every use of unsafe
evmap, which has 25% less uses of unsafe, but a more complex interface.drop() is not garantueed to be called when the future returns Ready and is in the futures::executor::ThreadPool
futures::future::abortable() works (by stopping the polling), but doesn't as cleanup is not performed,
even though it clearly would be preferred.select() might not work with complex futures - these should then be boxed() if Unpin isn't implemented.Rust
99.2%