strides
A command-line UI library to enhance async programs with progress bars and spinners. It is async-first, opinionated, far from feature complete and absolutely not API stable. Use at your own risk.
The crate is built around two extension traits and one container:
future::FutureExtadds.progress(theme)to anyFuture, returning a builder that composes optional capabilities —with_message,with_messagesandwith_fraction.stream::StreamExtadds.progress(theme, fraction_fn)to anyStream, returning a builder withwith_messages.future::Groupruns many futures concurrently and renders one line per task. Bare futures convert intofuture::Taskimplicitly; configure withwith_label,with_messagesandwith_progress(mirrored onFutureExt).
A Theme bundles a spinner::Spinner and a bar::Bar and is
accepted everywhere a theme is expected; bare spinners convert
implicitly. See spinner::styles and bar::styles for predefined
variants.
use StreamExt as _;
use StreamExt;
Example
Three concurrently running futures with a customized spinner and elapsed time:
use Duration;
use Timer;
use ;
use ;
use spinner;
let mut group = new
.with_spinner_style
.with_elapsed_time;
group.push;
group.push;
group.push;
block_on;
See the examples directory for more elaborate uses including downloads, dynamic messages, and per-task progress bars.