pub struct MultiBar<T: Write> { /* private fields */ }
Implementations
sourceimpl MultiBar<Stdout>
impl MultiBar<Stdout>
sourcepub fn new() -> MultiBar<Stdout>
pub fn new() -> MultiBar<Stdout>
Create a new MultiBar with stdout as a writer.
Examples
use std::thread;
use pbr::MultiBar;
use std::time::Duration;
let mut mb = MultiBar::new();
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();
sourceimpl<T: Write> MultiBar<T>
impl<T: Write> MultiBar<T>
sourcepub fn on(handle: T) -> MultiBar<T>
pub fn on(handle: T) -> MultiBar<T>
Create a new MultiBar with an arbitrary writer.
Examples
use pbr::MultiBar;
use std::io::stderr;
let mut mb = MultiBar::on(stderr());
// ...
// see full example in `MultiBar::new`
// ...
sourcepub fn println(&self, s: &str)
pub fn println(&self, s: &str)
println used to add text lines between the bars. for example: you could add a header to your application, or text separators between bars.
Examples
use pbr::MultiBar;
let mut mb = MultiBar::new();
mb.println("Application header:");
let mut p1 = mb.create_bar(count);
// ...
mb.println("Text line between bar1 and bar2");
let mut p2 = mb.create_bar(count);
// ...
mb.println("Text line between bar2 and bar3");
// ...
// ...
mb.listen();
sourcepub fn create_bar(&self, total: u64) -> ProgressBar<Pipe>ⓘNotable traits for ProgressBar<T>impl<T: Write> Write for ProgressBar<T>
pub fn create_bar(&self, total: u64) -> ProgressBar<Pipe>ⓘNotable traits for ProgressBar<T>impl<T: Write> Write for ProgressBar<T>
create_bar creates new ProgressBar
with Pipe
as the writer.
The ordering of the method calls is important. it means that in the first call, you get a progress bar in level 1, in the 2nd call, you get a progress bar in level 2, and so on.
ProgressBar that finish its work, must call finish()
(or finish_print
)
to notify the MultiBar
about it.
Examples
use pbr::MultiBar;
let mut mb = MultiBar::new();
// progress bar in level 1
let mut p1 = mb.create_bar(count1);
// ...
// progress bar in level 2
let mut p2 = mb.create_bar(count2);
// ...
// progress bar in level 3
let mut p3 = mb.create_bar(count3);
// ...
mb.listen();
sourcepub fn listen(&self)
pub fn listen(&self)
listen start listen to all bars changes.
ProgressBar
that finish its work, must call finish()
(or finish_print
)
to notify the MultiBar
about it.
This is a blocking operation and blocks until all bars will finish. To ignore blocking, you can run it in a different thread.
Examples
use std::thread;
use pbr::MultiBar;
let mut mb = MultiBar::new();
// ...
// create some bars here
// ...
thread::spawn(move || {
mb.listen();
println!("all bars done!");
});
// ...
Auto Trait Implementations
impl<T> RefUnwindSafe for MultiBar<T>
impl<T> Send for MultiBar<T> where
T: Send,
impl<T> Sync for MultiBar<T> where
T: Send,
impl<T> Unpin for MultiBar<T> where
T: Unpin,
impl<T> UnwindSafe for MultiBar<T>
Blanket Implementations
sourceimpl<T> BorrowMut<T> for T where
T: ?Sized,
impl<T> BorrowMut<T> for T where
T: ?Sized,
const: unstable · sourcefn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more