pub struct MultiProgress {
    state: RwLock<MultiProgressState>,
    joining: AtomicBool,
    tx: Sender<(usize, ProgressDrawState)>,
    rx: Receiver<(usize, ProgressDrawState)>,
}
Expand description

Manages multiple progress bars from different threads.

Fields§

§state: RwLock<MultiProgressState>§joining: AtomicBool§tx: Sender<(usize, ProgressDrawState)>§rx: Receiver<(usize, ProgressDrawState)>

Implementations§

§

impl MultiProgress

pub fn new() -> MultiProgress

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.

pub fn with_draw_target(draw_target: ProgressDrawTarget) -> MultiProgress

Creates a new multi progress object with the given draw target.

pub fn set_draw_target(&self, target: ProgressDrawTarget)

Sets a different draw target for the multiprogress bar.

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.

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.

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.

pub fn join(&self) -> Result<(), Error>

Waits for all progress bars to report that they are finished.

You need to call this as this will request the draw instructions from the remote progress bars. Not calling this will deadlock your program.

pub fn join_and_clear(&self) -> Result<(), Error>

Works like join but clears the progress bar in the end.

Trait Implementations§

§

impl Debug for MultiProgress

§

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

Formats the value using the given formatter. Read more
§

impl Default for MultiProgress

§

fn default() -> MultiProgress

Returns the “default value” for a type. Read more
§

impl Sync for MultiProgress

Auto Trait Implementations§

Blanket Implementations§

source§

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

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

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

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

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

source§

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

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

§

impl<T> Instrument for T

§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided [Span], returning an Instrumented wrapper. Read more
§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
source§

impl<T, U> Into<U> for Twhere 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.

§

impl<T> Pointable for T

§

const ALIGN: usize = _

The alignment of pointer.
§

type Init = T

The type for initializers.
§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
source§

impl<T> Same<T> for T

§

type Output = T

Should always be Self
source§

impl<T, U> TryFrom<U> for Twhere 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 Twhere 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.
§

impl<V, T> VZip<V> for Twhere V: MultiLane<T>,

§

fn vzip(self) -> V

§

impl<T> WithSubscriber for T

§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a [WithDispatch] wrapper. Read more
§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a [WithDispatch] wrapper. Read more