Day 2:專案初始化與資料模型

學習目標

  • 建立 CLI 專案結構
  • 定義資料模型(Task)
  • 安裝依賴

今日重點

建立專案與依賴

cargo new todo-cli
cd todo-cli
cargo add clap --features derive
cargo add serde --features derive
cargo add serde_json
cargo add chrono
cargo add colored

資料模型:Task

use serde::{Deserialize, Serialize};

#[derive(Debug, Clone, Serialize, Deserialize)]
struct Task {
    id: u64,
    title: String,
    done: bool,
    created_at: String,   // chrono 產生的時間戳
}

impl Task {
    fn new(id: u64, title: String) -> Task {
        Task {
            id,
            title,
            done: false,
            created_at: chrono::Local::now().to_rfc3339(),
        }
    }
}

Serialize / Deserialize 讓 Task 能轉成 JSON 存檔。

儲存檔案格式(data.json)

[
  {"id": 1, "title": "學習 Rust", "done": false, "created_at": "..."}
]

練習

  1. cargo new todo-cli 並加入依賴,跑 cargo build 確認能吃。
  2. 建立上述 Task 結構與 Task::new
  3. 寫一個暫時的 main 建立一個 Task 印出 debug。

自我檢查

  • 專案能 build
  • 依賴安裝正確(clap/serde/chrono/colored)
  • Task 模型定義完成
  • 知道檔案格式