Struct indicatif::ProgressBar

source ·
pub struct ProgressBar { /* private fields */ }
Expand description

A progress bar or spinner

The progress bar is an Arc around its internal state. When the progress bar is cloned it just increments the refcount (so the original and its clone share the same state).

Implementations§

source§

impl ProgressBar

source

pub fn new(len: u64) -> Self

Creates a new progress bar with a given length

This progress bar by default draws directly to stderr, and refreshes a maximum of 15 times a second. To change the refresh rate, set the draw target to one with a different refresh rate.

source

pub fn hidden() -> Self

Creates a completely hidden progress bar

This progress bar still responds to API changes but it does not have a length or render in any way.

source

pub fn with_draw_target( len: Option<u64>, draw_target: ProgressDrawTarget, ) -> Self

Creates a new progress bar with a given length and draw target

source

pub fn style(&self) -> ProgressStyle

Get a clone of the current progress bar style.

source

pub fn with_style(self, style: ProgressStyle) -> Self

A convenience builder-like function for a progress bar with a given style

source

pub fn with_tab_width(self, tab_width: usize) -> Self

A convenience builder-like function for a progress bar with a given tab width

source

pub fn with_prefix(self, prefix: impl Into<Cow<'static, str>>) -> Self

A convenience builder-like function for a progress bar with a given prefix

For the prefix to be visible, the {prefix} placeholder must be present in the template (see ProgressStyle).

source

pub fn with_message(self, message: impl Into<Cow<'static, str>>) -> Self

A convenience builder-like function for a progress bar with a given message

For the message to be visible, the {msg} placeholder must be present in the template (see ProgressStyle).

source

pub fn with_position(self, pos: u64) -> Self

A convenience builder-like function for a progress bar with a given position

source

pub fn with_elapsed(self, elapsed: Duration) -> Self

A convenience builder-like function for a progress bar with a given elapsed time

source

pub fn with_finish(self, finish: ProgressFinish) -> Self

Sets the finish behavior for the progress bar

This behavior is invoked when ProgressBar or ProgressBarIter completes and ProgressBar::is_finished() is false. If you don’t want the progress bar to be automatically finished then call with_finish(Abandon).

source

pub fn new_spinner() -> Self

Creates a new spinner

This spinner by default draws directly to stderr. This adds the default spinner style to it.

source

pub fn set_style(&self, style: ProgressStyle)

Overrides the stored style

This does not redraw the bar. Call ProgressBar::tick() to force it.

source

pub fn set_tab_width(&mut self, tab_width: usize)

Sets the tab width (default: 8). All tabs will be expanded to this many spaces.

source

pub fn enable_steady_tick(&self, interval: Duration)

Spawns a background thread to tick the progress bar

When this is enabled a background thread will regularly tick the progress bar in the given interval. This is useful to advance progress bars that are very slow by themselves.

When steady ticks are enabled, calling ProgressBar::tick() on a progress bar does not have any effect.

source

pub fn disable_steady_tick(&self)

source

pub fn tick(&self)

Manually ticks the spinner or progress bar

This automatically happens on any other change to a progress bar.

source

pub fn inc(&self, delta: u64)

Advances the position of the progress bar by delta

source

pub fn is_hidden(&self) -> bool

A quick convenience check if the progress bar is hidden

source

pub fn is_finished(&self) -> bool

Indicates that the progress bar finished

source

pub fn println<I: AsRef<str>>(&self, msg: I)

Print a log line above the progress bar

If the progress bar is hidden (e.g. when standard output is not a terminal), println() will not do anything. If you want to write to the standard output in such cases as well, use ProgressBar::suspend() instead.

If the progress bar was added to a MultiProgress, the log line will be printed above all other progress bars.

source

pub fn update(&self, f: impl FnOnce(&mut ProgressState))

Update the ProgressBar’s inner ProgressState

source

pub fn set_position(&self, pos: u64)

Sets the position of the progress bar

source

pub fn set_length(&self, len: u64)

Sets the length of the progress bar

source

pub fn inc_length(&self, delta: u64)

Increase the length of the progress bar

source

pub fn set_prefix(&self, prefix: impl Into<Cow<'static, str>>)

Sets the current prefix of the progress bar

For the prefix to be visible, the {prefix} placeholder must be present in the template (see ProgressStyle).

source

pub fn set_message(&self, msg: impl Into<Cow<'static, str>>)

Sets the current message of the progress bar

For the message to be visible, the {msg} placeholder must be present in the template (see ProgressStyle).

source

pub fn downgrade(&self) -> WeakProgressBar

Creates a new weak reference to this ProgressBar

source

pub fn reset_eta(&self)

Resets the ETA calculation

This can be useful if the progress bars made a large jump or was paused for a prolonged time.

source

pub fn reset_elapsed(&self)

Resets elapsed time and the ETA calculation

source

pub fn reset(&self)

Resets all of the progress bar state

source

pub fn finish(&self)

Finishes the progress bar and leaves the current message

source

pub fn finish_with_message(&self, msg: impl Into<Cow<'static, str>>)

Finishes the progress bar and sets a message

For the message to be visible, the {msg} placeholder must be present in the template (see ProgressStyle).

source

pub fn finish_and_clear(&self)

Finishes the progress bar and completely clears it

source

pub fn abandon(&self)

Finishes the progress bar and leaves the current message and progress

source

pub fn abandon_with_message(&self, msg: impl Into<Cow<'static, str>>)

Finishes the progress bar and sets a message, and leaves the current progress

For the message to be visible, the {msg} placeholder must be present in the template (see ProgressStyle).

source

pub fn finish_using_style(&self)

Finishes the progress bar using the behavior stored in the ProgressStyle

See ProgressBar::with_finish().

source

pub fn set_draw_target(&self, target: ProgressDrawTarget)

Sets a different draw target for the progress bar

This can be used to draw the progress bar to stderr (this is the default):

let pb = ProgressBar::new(100);
pb.set_draw_target(ProgressDrawTarget::stderr());

Note: Calling this method on a ProgressBar linked with a MultiProgress (after running MultiProgress::add()) will unlink this progress bar. If you don’t want this behavior, call MultiProgress::set_draw_target() instead.

Use ProgressBar::with_draw_target() to set the draw target during creation.

source

pub fn suspend<F: FnOnce() -> R, R>(&self, f: F) -> R

Hide the progress bar temporarily, execute f, then redraw the progress bar

Useful for external code that writes to the standard output.

If the progress bar was added to a MultiProgress, it will suspend the entire MultiProgress.

Note: The internal lock is held while f is executed. Other threads trying to print anything on the progress bar will be blocked until f finishes. Therefore, it is recommended to avoid long-running operations in f.

let mut pb = ProgressBar::new(3);
pb.suspend(|| {
    println!("Log message");
})
source

pub fn wrap_iter<It: Iterator>(&self, it: It) -> ProgressBarIter<It>

Wraps an Iterator with the progress bar

let v = vec![1, 2, 3];
let pb = ProgressBar::new(3);
for item in pb.wrap_iter(v.iter()) {
    // ...
}
source

pub fn wrap_read<R: Read>(&self, read: R) -> ProgressBarIter<R>

Wraps an io::Read with the progress bar

let source = File::open("work.txt")?;
let mut target = File::create("done.txt")?;
let pb = ProgressBar::new(source.metadata()?.len());
io::copy(&mut pb.wrap_read(source), &mut target);
source

pub fn wrap_write<W: Write>(&self, write: W) -> ProgressBarIter<W>

Wraps an io::Write with the progress bar

let mut source = File::open("work.txt")?;
let target = File::create("done.txt")?;
let pb = ProgressBar::new(source.metadata()?.len());
io::copy(&mut source, &mut pb.wrap_write(target));
source

pub fn position(&self) -> u64

Returns the current position

source

pub fn length(&self) -> Option<u64>

Returns the current length

source

pub fn eta(&self) -> Duration

Returns the current ETA

source

pub fn per_sec(&self) -> f64

Returns the current rate of progress

source

pub fn duration(&self) -> Duration

Returns the current expected duration

source

pub fn elapsed(&self) -> Duration

Returns the current elapsed time

source

pub fn message(&self) -> String

Current message

source

pub fn prefix(&self) -> String

Current prefix

Trait Implementations§

source§

impl Clone for ProgressBar

source§

fn clone(&self) -> ProgressBar

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for ProgressBar

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for T
where T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for T
where T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> CloneToUninit for T
where T: Clone,

source§

default unsafe fn clone_to_uninit(&self, dst: *mut T)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dst. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

source§

impl<T, U> Into<U> for T
where U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

source§

impl<T> ToOwned for T
where T: Clone,

§

type Owned = T

The resulting type after obtaining ownership.
source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

§

type Error = Infallible

The type returned in the event of a conversion error.
source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.