dwipe 0.1.4

Fast, cross-platform disk cleanup tool with interactive UI
Documentation
#[derive(Debug)]
pub struct Spinner {
    symbols: Vec<char>,
    done: char,
    current: usize,
}

impl Spinner {
    fn new() -> Self {
        Spinner {
            symbols: vec!['', '', '', '', '', '', '', ''],
            done: '',
            current: 0,
        }
    }

    fn move_position(&mut self, steps: isize) {
        let len = self.symbols.len() as isize;
        self.current = (((self.current as isize + steps) % len + len) % len) as usize;
    }

    pub fn get_icons(&mut self, is_loaded: bool) -> (char, char) {
        if is_loaded {
            return (self.done, self.done);
        }
        self.move_position(1);

        let right_symbol = self.symbols[self.current];
        let left_symbol_index = (self.current + self.symbols.len() / 2) % self.symbols.len();
        let left_symbol = self.symbols[left_symbol_index];
        (left_symbol, right_symbol)
    }
}

impl Default for Spinner {
    fn default() -> Self {
        Self::new()
    }
}