Crate yapb [] [src]

Yet Another Progress Bar

This library provides lightweight tools for rendering Unicode progress indicators. Unlike most similar libraries, it performs no IO internally, instead providing Display implementations. Handling the details of any particular output device is left to the user.

Examples

The termion crate can be used to implement good behavior on an ANSI terminal:

extern crate yapb;
extern crate termion;
use std::{thread, time};
use std::io::{self, Write};
use yapb::{Bar, Progress};

fn main() {
  let mut bar = yapb::Bar::new();
  print!("{}", termion::cursor::Save);
  for i in 0..100 {
    bar.set(i * (u32::max_value() / 100));
    let (width, _) = termion::terminal_size().unwrap();
    print!("{}{}[{:width$}]",
           termion::clear::AfterCursor, termion::cursor::Restore,
           bar, width = width as usize - 2);
    io::stdout().flush().unwrap();
    thread::sleep(time::Duration::from_millis(100));
  }
}

Structs

Bar

A high-resolution progress bar using block elements

Counter16

A spinner that cycles through 16 states by counting in binary using block elements

Counter256

A spinner that cycles through 256 states by counting in binary using braille

Snake

A spinner that cycles through 8 states with a snake made of 1-6 braille dots

Spinner4

A spinner that cycles through 4 states with a single spinning block element

Spinner8

A spinner that cycles through 8 states with a single spinning braille dot

Traits

Progress

Types that can display a progress state