This commit adds an on_drop
method to Spinner, the method is a
"Builder method" (called on a Spinner taking ownership and returns a new
Spinner instance). The existing Spinner API therefore continue to work
as they did before with no changes to methods or their parameters.
By default, i.e. when on_drop
is not used to set the default behavior
of a Spinner, its behavior remains the same as prior to this commit.
When on_drop
is called on a Spinner, a new Spinner instance is
returned. If this instance is dropped without any of its stop*
methods
having been called, then the StopBehavior
set in the on_drop
call is
triggered.
This change allows the following simple construction:
{
let sp = Spinner::new(...).on_drop(StopBehavior::Message("Failed!".into()));
do_something_fallible()?;
sp.stop_with_message("Yay, it worked".into());
}
If do_something_fallible()
returns a Result::Ok
the Spinner is
stopped with the "success" message. Conversely, if
do_something_fallible()
returns a Result::Err
, the Spinner is
stopped with the "Failed!" message when it is dropped.
All feedback is very welcome!