diff --git a/src/lib.rs b/src/lib.rs index 0c1cd71..735592d 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -179,6 +179,17 @@ impl Progress { self.bars[bar.0].curr = value; } + /// Set a particular [`Bar`]'s progress target value. + /// Useful in cases where you don't know the total ahead of time. + pub fn set_target(&mut self, bar: &Bar, total: usize) { + self.bars[bar.0].total = total; + } + + /// Set a particular [`Bar`]'s label. + pub fn set_label>(&mut self, bar: &Bar, label: S) { + self.bars[bar.0].label = label.into(); + } + /// Force the drawing of a particular [`Bar`]. /// /// **Note 1:** Drawing will only occur if there is something meaningful to @@ -265,6 +276,20 @@ impl Progress { self.draw(bar); } + /// Set a particular [`Bar`]'s progress target value and immediately + /// try to draw it. + pub fn set_target_and_draw(&mut self, bar: &Bar, total: usize) { + self.set_target(bar, total); + self.draw(bar); + } + + /// Set a particular [`Bar`]'s label and immediately try to + /// draw it. + pub fn set_label_and_draw>(&mut self, bar: &Bar, label: S) { + self.set_label(bar, label); + self.draw(bar); + } + /// Increment a given [`Bar`]'s progress, but don't draw it. pub fn inc(&mut self, bar: &Bar, value: usize) { self.set(bar, self.bars[bar.0].curr + value)