1个不稳定版本

0.1.0 2023年1月16日

#447 in 日期和时间

Apache-2.0

18KB
319

Trata番茄计时器

基于Rust的番茄计时器库

Demo on windows terminal

安装

如何安装

如何使用

您可以使用Trata通过首先创建一个配置对象

 let config = Config {
        work_length_minutes: 20,
        short_break_length_minutes: 5,
        long_break_length_minutes: 30,
        has_long_break: true,
        timer_mode_will_rollover: false,
        work_sessions_before_long_break: 2,
    }

在这里,您可以设置计时器的各种配置设置,然后再将其传递给new函数中的TrataTimer

 let mut timer = TrataTimer::new(&config, display, timer_end_callback);

TrataTimer必须持续泵送才能工作

loop {
    timer.pump_timer();
}

在这个循环中,您还可以允许计时器中的控制输入

fn main() {
    let config = setup_config();
    let mut timer = TrataTimer::new(&config, display, timer_end_callback);

    timer.start_timer();

    loop {
        //checks for input
        if poll(Duration::from_millis(10)).unwrap() {
            if let Ok(Event::Key(KeyEvent {
                code: KeyCode::Char(c),
                ..
            })) = event::read()
            {
                match c {
                    'q' | 'Q' => break,
                    'p' | 'P' => timer.play_pause_timer(),
                    's' | 'S' => timer.end_section_early(),
                    _ => {}
                }
            }
        } else {
        }

        //conducts timer operation (ticking, changing mode, etc)
        timer.pump_timer();
    }
}

此外,您还可以通过使用显示回调计时器结束回调来向用户反馈

//display callback
fn display_callback(duration: Duration, mode: &TimerMode, timer_is_running: bool) {
    //clears the screen
    print!("\x1B[2J\x1B[1;1H");

    //formatting
    let minutes = duration.as_secs() / 60;
    let seconds = duration.as_secs() % 60;

    //prints the time remaining in seconds
    println!("{:0>2}:{:0>2}", minutes, seconds);

    if timer_is_running {
        println!("Mode: {}", mode.get_string());
    } else {
        println!("Mode: {} (Paused)", mode.get_string());
    }
    println!("Press Q to quit, S to end current timer early, & P to pause the timer.");
}


fn timer_end_callback(mode: &TimerMode) {
    //bell character
    print!("\x07");
}

欢迎任何形式的贡献或反馈!

贡献

许可证

Apache 2.0


待办事项

  • Crates信息

没有运行时依赖项