Skip to content

Navigation Menu

Sign in
Sign up

Latest commit

History

174 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

nutmeg - an unopinionated progress bar library

https://github.com/sourcefrog/cargo-mutants

Tests docs.rs crates.io libs.rs Maturity: Beta

Nutmeg draws terminal progress indicators while giving the application complete control over their appearance and content.

For more information: https://docs.rs/nutmeg

License: MIT

Example

From examples/basic.rs:

use std::io::Write; // to support write!()
// 1. Define a struct holding all the application state necessary to
// render the progress bar.
#[derive(Default)]
struct Model {
 i: usize,
 total: usize,
 last_file_name: String,
}
// 2. Define how to render the progress bar as a String.
impl nutmeg::Model for Model {
 fn render(&mut self, _width: usize) -> String {
 format!("{}/{}: {}", self.i, self.total, self.last_file_name)
 }
}
fn main() -> std::io::Result<()> {
 // 3. Create a View when you want to draw a progress bar.
 let mut view = nutmeg::View::new(Model::default(),
 nutmeg::Options::default());
 // 4. As the application runs, update the model via the view.
 let total_work = 100;
 view.update(|model| model.total = total_work);
 for i in 0..total_work {
 view.update(|model| {
 model.i += 1;
 model.last_file_name = format!("file{}.txt", i);
 });
 // 5. Interleave text output lines by writing to the view.
 if i % 10 == 3 {
 writeln!(view, "reached {}", i)?;
 }
 std::thread::sleep(std::time::Duration::from_millis(100));
 }
 // 5. The bar is automatically erased when dropped.
 Ok(())
}

asciicast

About

A flexible model/view Rust progress bar library

Topics

Resources

Stars

8 stars

Watchers

1 watching

Forks

Releases

Used by

Contributors

Languages

AltStyle によって変換されたページ (->オリジナル) /