#spinner #terminal #shared #multiple #multi-thread

multi-spinner

A simple multi-threaded spinner for the terminal

1 unstable release

0.1.0 Jan 23, 2024

#23 in #multi-thread

MIT license

11KB
179 lines

multi-spinner

A simple terminal spinner library that uses a shared stdout.

setup

Smack this into your toml

[dependencies]
multi-spinner = "0.1.0"

Throw this on your code

use std::{thread, time::Duration};
use multi_spinner::{Spinner, spinners::Animation};

fn main() {
    let mut spinner = Spinner::builder()
        .msg("awesome".into())
        .start();

    thread::sleep(Duration::from_secs(3));

    spinner.stop().expect("");
}

If you need full control over stdout, you can create a mutexed arc

    let stdout = Arc::new(Mutex::new(stdout()));

    let mut spinner = Spinner::builder()
        .stdout(stdout)
        .msg("splendid".into())
        .start();

You can if you want to, change the awesome spinner

    let mut spinner = Spinner::builder()
        .spinner(Animation::Bars10(0))
        .build();

    spinner.start() // <-- in case you need to await the start

Dependencies

~1–5.5MB
~22K SLoC