Crate prodash

source ·
Expand description

Prodash is a dashboard for displaying the progress of concurrent application.

It consists of two parts

  • a Tree to gather progress information and messages
  • a terminal user interface which displays this information, along with optional free-form information provided by the application itself

Even though the Tree is not async, it’s meant to be transparent and non-blocking performance wise, and benchmarks seem to indicate this is indeed the case.

The terminal user interface seems to be the least transparent part, but can be configured to refresh less frequently.

Terminal User Interface

By default, a TUI is provided to visualize all state. Have a look at the example provided in the tui module.

Please note that it is behind the render-tui feature toggle, which is enabled by default.

Logging

If the feature progress-tree-log is enabled (default), most calls to progress will also be logged. That way, even without a terminal user interface, there will be progress messages. Please note that logging to stdout should not be performed with this feature enabled and a terminal user interface is shown, as this will seriously interfere with the TUI.

A demo application

Please have a look at the dashboard demo.

asciicast

Run it with cargo run --example dashboard and see what else it can do by checking out cargo run --example dashboard -- --help.

Modules

Macros

  • Logs a message at the info level.
  • Logs a message at the warn level.

Structs

Traits

  • A thread-safe read-only counter, with unknown limits.
  • An object-safe trait for describing hierarchical progress.
  • A trait for describing hierarchical progress.
  • A trait for describing non-hierarchical progress.
  • The top level of a progress task hierarchy, with progress::Tasks identified with progress::Keys
  • The top-level root as weak handle, which needs an upgrade to become a usable root.

Type Aliases