MCPcopy Index your code
hub / github.com/a8m/pb

github.com/a8m/pb @v1.0.3

Chat with this repo
repository ↗ · DeepWiki ↗ · release v1.0.3 ↗ · + Follow
74 symbols 210 edges 13 files 32 documented · 43%
What it actually does AI analysis from the code graph — generated when you open this
loading…
README

Terminal progress bar for Rust

Latest version License Docs Build Status Gitter

Console progress bar for Rust Inspired from pb, support and tested on MacOS, Linux and Windows

Screenshot

Documentation

Examples

  1. simple example
extern crate pbr;

use pbr::ProgressBar;
use std::thread;

fn main() {
    let count = 1000;
    let mut pb = ProgressBar::new(count);
    pb.format("╢▌▌░╟");
    for _ in 0..count {
        pb.inc();
        thread::sleep_ms(200);
    }
    pb.finish_print("done");
}
  1. MultiBar example. see full example here
extern crate pbr;

use std::thread;
use pbr::MultiBar;
use std::time::Duration;

fn main() {
    let mut mb = MultiBar::new();
    let count = 100;
    mb.println("Application header:");

    let mut p1 = mb.create_bar(count);
    let _ = thread::spawn(move || {
        for _ in 0..count {
            p1.inc();
            thread::sleep(Duration::from_millis(100));
        }
        // notify the multibar that this bar finished.
        p1.finish();
    });

    mb.println("add a separator between the two bars");

    let mut p2 = mb.create_bar(count * 2);
    let _ = thread::spawn(move || {
        for _ in 0..count * 2 {
            p2.inc();
            thread::sleep(Duration::from_millis(100));
        }
        // notify the multibar that this bar finished.
        p2.finish();
    });

    // start listen to all bars changes.
    // this is a blocking operation, until all bars will finish.
    // to ignore blocking, you can run it in a different thread.
    mb.listen();
}
  1. Broadcast writing (simple file copying)
#![feature(io)]
extern crate pbr;

use std::io::copy;
use std::io::prelude::*;
use std::fs::File;
use pbr::{ProgressBar, Units};

fn main() {
    let mut file = File::open("/usr/share/dict/words").unwrap();
    let n_bytes = file.metadata().unwrap().len() as usize;
    let mut pb = ProgressBar::new(n_bytes);
    pb.set_units(Units::Bytes);
    let mut handle = File::create("copy-words").unwrap().broadcast(&mut pb);
    copy(&mut file, &mut handle).unwrap();
    pb.finish_print("done");
}

License

MIT

Core symbols most depended-on inside this repo

inc
called by 17
src/pb.rs
message
called by 11
src/pb.rs
tick
called by 10
src/pb.rs
format
called by 9
src/pb.rs
add
called by 8
src/pb.rs
finish_println
called by 7
src/pb.rs
tick_format
called by 6
src/pb.rs
set_width
called by 6
src/pb.rs

Shape

Function 34
Method 31
Class 8
Enum 1

Languages

Rust100%

Modules by API surface

src/pb.rs34 symbols
src/multi.rs11 symbols
tests/lib.rs7 symbols
src/lib.rs5 symbols
src/tty/unix.rs4 symbols
src/tty/windows.rs3 symbols
src/tty/wasi.rs2 symbols
src/tty/mod.rs2 symbols
examples/multi.rs2 symbols
examples/simple.rs1 symbols
examples/npm_bar.rs1 symbols
examples/multi_bg.rs1 symbols

For agents

$ claude mcp add pb \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact