Spinner

Struct Spinner 

Source
pub struct Spinner { /* private fields */ }
Expand description

§Example:

use multi_spinner::{Spinner, spinners::Animation};
use std::{ thread::{self}, time::Duration, sync::{Arc, Mutex}, };

fn main() {
   let stdout = Arc::new(Mutex::new(std::io::stdout()));
   let files = ["file1", "file2", "file3", "file4", "file5"];
   let handles = files.iter().enumerate().map(|(i, file)|{
       let file = file.to_owned();
       let stdout = stdout.clone(); 
       thread::spawn(move ||{

           let mut spinner = Spinner::builder()
               .spinner(Animation::Bars10(0))
               .msg(format!("downloading {file}\n"))
               .row(i)
               .stdout(stdout)
               .build();

           spinner.start();
           thread::sleep(Duration::from_secs(3));
           spinner.stop().expect("stopped");
       })
   }).collect::<Vec<_>>();

   for handle in handles {
       let () = handle.join().expect("join thread");
   }
}

Implementations§

Source§

impl Spinner

Source

pub fn builder() -> SpinnerBuilder

Source

pub fn start(&mut self)

Starts the spinner in a separate thread.

§Panics

Will panic if active, stdout or handle is poisoned.

Source

pub fn stop(&mut self) -> Result<()>

Stops the spinner

§Panics

Panics if either active, handle or stdout is poisoned or if joining thread panics.

§Errors

Fails if crossterm fails to execute or if conversion of usize to u16 fails.

Trait Implementations§

Source§

impl Clone for Spinner

Source§

fn clone(&self) -> Spinner

Returns a duplicate of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more

Auto Trait Implementations§

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> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

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> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

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

Source§

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.