Struct indicatif::MultiProgress
source · pub struct MultiProgress { /* private fields */ }
Expand description
Manages multiple progress bars from different threads
Implementations§
source§impl MultiProgress
impl MultiProgress
sourcepub fn new() -> Self
pub fn new() -> Self
Creates a new multi progress object.
Progress bars added to this object by default draw directly to stderr, and refresh a maximum of 15 times a second. To change the refresh rate set the draw target to one with a different refresh rate.
sourcepub fn with_draw_target(draw_target: ProgressDrawTarget) -> Self
pub fn with_draw_target(draw_target: ProgressDrawTarget) -> Self
Creates a new multi progress object with the given draw target.
sourcepub fn set_draw_target(&self, target: ProgressDrawTarget)
pub fn set_draw_target(&self, target: ProgressDrawTarget)
Sets a different draw target for the multiprogress bar.
Use MultiProgress::with_draw_target
to set the draw target during creation.
sourcepub fn set_move_cursor(&self, move_cursor: bool)
pub fn set_move_cursor(&self, move_cursor: bool)
Set whether we should try to move the cursor when possible instead of clearing lines.
This can reduce flickering, but do not enable it if you intend to change the number of progress bars.
sourcepub fn set_alignment(&self, alignment: MultiProgressAlignment)
pub fn set_alignment(&self, alignment: MultiProgressAlignment)
Set alignment flag
sourcepub fn add(&self, pb: ProgressBar) -> ProgressBar
pub fn add(&self, pb: ProgressBar) -> ProgressBar
Adds a progress bar.
The progress bar added will have the draw target changed to a
remote draw target that is intercepted by the multi progress
object overriding custom ProgressDrawTarget
settings.
The progress bar will be positioned below all other bars currently
in the MultiProgress
.
Adding a progress bar that is already a member of the MultiProgress
will have no effect.
sourcepub fn insert(&self, index: usize, pb: ProgressBar) -> ProgressBar
pub fn insert(&self, index: usize, pb: ProgressBar) -> ProgressBar
Inserts a progress bar.
The progress bar inserted at position index
will have the draw
target changed to a remote draw target that is intercepted by the
multi progress object overriding custom ProgressDrawTarget
settings.
If index >= MultiProgressState::objects.len()
, the progress bar
is added to the end of the list.
Inserting a progress bar that is already a member of the MultiProgress
will have no effect.
sourcepub fn insert_from_back(&self, index: usize, pb: ProgressBar) -> ProgressBar
pub fn insert_from_back(&self, index: usize, pb: ProgressBar) -> ProgressBar
Inserts a progress bar from the back.
The progress bar inserted at position MultiProgressState::objects.len() - index
will have the draw target changed to a remote draw target that is
intercepted by the multi progress object overriding custom
ProgressDrawTarget
settings.
If index >= MultiProgressState::objects.len()
, the progress bar
is added to the start of the list.
Inserting a progress bar that is already a member of the MultiProgress
will have no effect.
sourcepub fn insert_before(
&self,
before: &ProgressBar,
pb: ProgressBar,
) -> ProgressBar
pub fn insert_before( &self, before: &ProgressBar, pb: ProgressBar, ) -> ProgressBar
Inserts a progress bar before an existing one.
The progress bar added will have the draw target changed to a
remote draw target that is intercepted by the multi progress
object overriding custom ProgressDrawTarget
settings.
Inserting a progress bar that is already a member of the MultiProgress
will have no effect.
sourcepub fn insert_after(&self, after: &ProgressBar, pb: ProgressBar) -> ProgressBar
pub fn insert_after(&self, after: &ProgressBar, pb: ProgressBar) -> ProgressBar
Inserts a progress bar after an existing one.
The progress bar added will have the draw target changed to a
remote draw target that is intercepted by the multi progress
object overriding custom ProgressDrawTarget
settings.
Inserting a progress bar that is already a member of the MultiProgress
will have no effect.
sourcepub fn remove(&self, pb: &ProgressBar)
pub fn remove(&self, pb: &ProgressBar)
Removes a progress bar.
The progress bar is removed only if it was previously inserted or added
by the methods MultiProgress::insert
or MultiProgress::add
.
If the passed progress bar does not satisfy the condition above,
the remove
method does nothing.
sourcepub fn println<I: AsRef<str>>(&self, msg: I) -> Result<()>
pub fn println<I: AsRef<str>>(&self, msg: I) -> Result<()>
Print a log line above all progress bars in the MultiProgress
If the draw target is hidden (e.g. when standard output is not a terminal), println()
will not do anything.
sourcepub fn suspend<F: FnOnce() -> R, R>(&self, f: F) -> R
pub fn suspend<F: FnOnce() -> R, R>(&self, f: F) -> R
Hide all progress bars temporarily, execute f
, then redraw the MultiProgress
Executes ‘f’ even if the draw target is hidden.
Useful for external code that writes to the standard output.
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
.
pub fn clear(&self) -> Result<()>
Trait Implementations§
source§impl Clone for MultiProgress
impl Clone for MultiProgress
source§fn clone(&self) -> MultiProgress
fn clone(&self) -> MultiProgress
1.0.0 · source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source
. Read moresource§impl Debug for MultiProgress
impl Debug for MultiProgress
Auto Trait Implementations§
impl Freeze for MultiProgress
impl RefUnwindSafe for MultiProgress
impl Send for MultiProgress
impl Sync for MultiProgress
impl Unpin for MultiProgress
impl UnwindSafe for MultiProgress
Blanket Implementations§
source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
source§default unsafe fn clone_to_uninit(&self, dst: *mut T)
default unsafe fn clone_to_uninit(&self, dst: *mut T)
clone_to_uninit
)