1个不稳定版本
0.1.0 | 2023年1月16日 |
---|
#447 in 日期和时间
18KB
319 行
Trata番茄计时器
基于Rust的番茄计时器库

安装
如何安装
如何使用
您可以使用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");
}
欢迎任何形式的贡献或反馈!
贡献
许可证
待办事项
- Crates信息