tasks_rs/
task.rs

1use clap::ValueEnum;
2use owo_colors::OwoColorize;
3use serde::{Deserialize, Serialize};
4use std::fmt::Display;
5
6#[derive(Deserialize, Serialize)]
7pub struct Task {
8    pub id: u16,
9    pub content: String,
10    pub status: TaskStatus,
11}
12
13impl Display for Task {
14    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
15        write!(f, "{}. {}", self.id.green(), self.content.bright_purple())
16    }
17}
18
19#[derive(Clone, Copy, Default, Deserialize, PartialEq, Serialize, ValueEnum)]
20pub enum TaskStatus {
21    Complete,
22    InProgress,
23    #[default]
24    ToDo,
25}
26
27impl Display for TaskStatus {
28    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
29        match self {
30            TaskStatus::Complete => write!(f, "Complete"),
31            TaskStatus::InProgress => write!(f, "In Progress"),
32            TaskStatus::ToDo => write!(f, "TO-DO"),
33        }
34    }
35}