Struct prodash::tree::Item

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

A Tree represents an element of the progress tree.

It can be used to set progress and send messages.

let tree = prodash::tree::Root::new();
let mut progress = tree.add_child("task 1");

progress.init(Some(10), Some("elements".into()));
for p in 0..10 {
    progress.set(p);
}
progress.done("great success");
let mut  sub_progress = progress.add_child_with_id("sub-task 1", *b"TSK2");
sub_progress.init(None, None);
sub_progress.set(5);
sub_progress.fail("couldn't finish");

Implementations§

source§

impl Item

source

pub fn init(&self, max: Option<usize>, unit: Option<Unit>)

Initialize the Item for receiving progress information.

If max is Some(…), it will be treated as upper bound. When progress is set(…) it should not exceed the given maximum. If max is None, the progress is unbounded. Use this if the amount of work cannot accurately be determined.

If unit is Some(…), it is used for display purposes only. It should be using the plural.

If this method is never called, this Item will serve as organizational unit, useful to add more structure to the progress tree.

Note that this method can be called multiple times, changing the bounded-ness and unit at will.

source

pub fn set_name(&self, name: impl Into<String>)

Set the name of this task’s progress to the given name.

source

pub fn name(&self) -> Option<String>

Get the name of this task’s progress

source

pub fn id(&self) -> Id

Get the stable identifier of this instance.

source

pub fn step(&self) -> Option<Step>

Returns the current step, as controlled by inc*(…) calls

source

pub fn max(&self) -> Option<Step>

Returns the maximum about of items we expect, as provided with the init(…) call

source

pub fn set_max(&self, max: Option<Step>) -> Option<Step>

Set the maximum value to max and return the old maximum value.

source

pub fn unit(&self) -> Option<Unit>

Returns the (cloned) unit associated with this Progress

source

pub fn set(&self, step: Step)

Set the current progress to the given step.

Note: that this call has no effect unless init(…) was called before.

source

pub fn inc_by(&self, step: Step)

Increment the current progress by the given step.

Note: that this call has no effect unless init(…) was called before.

source

pub fn inc(&self)

Increment the current progress by one.

Note: that this call has no effect unless init(…) was called before.

source

pub fn blocked(&self, reason: &'static str, eta: Option<SystemTime>)

Call to indicate that progress cannot be indicated, and that the task cannot be interrupted. Use this, as opposed to halted(…), if a non-interruptable call is about to be made without support for any progress indication.

If eta is Some(…), it specifies the time at which this task is expected to make progress again.

The halted-state is undone next time tree::Item::running(…) is called.

source

pub fn halted(&self, reason: &'static str, eta: Option<SystemTime>)

Call to indicate that progress cannot be indicated, even though the task can be interrupted. Use this, as opposed to blocked(…), if an interruptable call is about to be made without support for any progress indication.

If eta is Some(…), it specifies the time at which this task is expected to make progress again.

The halted-state is undone next time tree::Item::running(…) is called.

source

pub fn running(&self)

Call to indicate that progress is back in running state, which should be called after the reason for calling blocked() or halted() has passed.

source

pub fn add_child(&mut self, name: impl Into<String>) -> Item

Adds a new child Tree, whose parent is this instance, with the given name.

Important: The depth of the hierarchy is limited to tree::Key::max_level. Exceeding the level will be ignored, and new tasks will be added to this instance’s level instead.

source

pub fn add_child_with_id(&mut self, name: impl Into<String>, id: Id) -> Item

Adds a new child Tree, whose parent is this instance, with the given name and id.

Important: The depth of the hierarchy is limited to tree::Key::max_level. Exceeding the level will be ignored, and new tasks will be added to this instance’s level instead.

source

pub fn message(&self, level: MessageLevel, message: impl Into<String>)

Create a message of the given level and store it with the progress tree.

Use this to provide additional,human-readable information about the progress made, including indicating success or failure.

source

pub fn done(&mut self, message: impl Into<String>)

Create a message indicating the task is done

source

pub fn fail(&mut self, message: impl Into<String>)

Create a message indicating the task failed

source

pub fn info(&mut self, message: impl Into<String>)

Create a message providing additional information about the progress thus far.

Trait Implementations§

source§

impl Count for Item

source§

fn set(&self, step: usize)

Set the current progress to the given step. The cost of this call is negligible, making manual throttling not necessary. Read more
source§

fn step(&self) -> usize

Returns the current step, as controlled by inc*(…) calls
source§

fn inc_by(&self, step: usize)

Increment the current progress to the given step. The cost of this call is negligible, making manual throttling not necessary.
source§

fn counter(&self) -> StepShared

Return an atomic counter for direct access to the underlying state. Read more
source§

fn inc(&self)

Increment the current progress to the given 1. The cost of this call is negligible, making manual throttling not necessary.
source§

impl Debug for Item

source§

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

Formats the value using the given formatter. Read more
source§

impl Drop for Item

source§

fn drop(&mut self)

Executes the destructor for this type. Read more
source§

impl NestedProgress for Item

§

type SubProgress = Item

The type of progress returned by [add_child()][Progress::add_child()].
source§

fn add_child(&mut self, name: impl Into<String>) -> Self

Adds a new child, whose parent is this instance, with the given name. Read more
source§

fn add_child_with_id(&mut self, name: impl Into<String>, id: Id) -> Self

Adds a new child, whose parent is this instance, with the given name and id. Read more
source§

impl Progress for Item

source§

fn init(&mut self, max: Option<Step>, unit: Option<Unit>)

Initialize the Item for receiving progress information. Read more
source§

fn unit(&self) -> Option<Unit>

Returns the (cloned) unit associated with this Progress
source§

fn max(&self) -> Option<usize>

Returns the maximum about of items we expect, as provided with the init(…) call
source§

fn set_max(&mut self, max: Option<Step>) -> Option<Step>

Set the maximum value to max and return the old maximum value.
source§

fn set_name(&mut self, name: String)

Set the name of the instance, altering the value given when crating it with add_child(…) The progress is allowed to discard it.
source§

fn name(&self) -> Option<String>

Get the name of the instance as given when creating it with add_child(…) The progress is allowed to not be named, thus there is no guarantee that a previously set names ‘sticks’.
source§

fn id(&self) -> Id

Get a stable identifier for the progress instance. Note that it could be unknown.
source§

fn message(&self, level: MessageLevel, message: String)

Create a message of the given level and store it with the progress tree. Read more
source§

fn info(&self, message: String)

Create a message providing additional information about the progress thus far.
source§

fn done(&self, message: String)

Create a message indicating the task is done successfully
source§

fn fail(&self, message: String)

Create a message indicating the task failed
source§

fn show_throughput(&self, start: Instant)

A shorthand to print throughput information
source§

fn show_throughput_with( &self, start: Instant, step: Step, unit: Unit, level: MessageLevel )

A shorthand to print throughput information, with the given step and unit, and message level.

Auto Trait Implementations§

§

impl !RefUnwindSafe for Item

§

impl Send for Item

§

impl Sync for Item

§

impl Unpin for Item

§

impl !UnwindSafe for Item

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, SubP> DynNestedProgress for T
where T: NestedProgress<SubProgress = SubP> + ?Sized, SubP: NestedProgress + 'static,

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 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, 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.
§

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