banner
[面包]MrTwoC

[面包]MrTwoC

你好,欢迎来到这个基于区块链的个人博客 名字:面包 / MrTwoc 爱好:跑步(5/10KM)、拿铁咖啡、游戏(Minecraft、Warframe、CS) 兴趣方向:Rust、区块链、图形学、游戏设计与开发
bilibili
steam
email
github

[1]待辦事項-rs

命令行版的 TodoList 工具#

项目地址:https://github.com/MrTwoc/todo-rs

image

用 rust 語言實現的一個基於控制台的 todolist,主要用於對事件的記錄 & 打卡,目前實現了基礎的增刪改查功能。
後續計劃用 [表格化輸出 + emoji 符號] 來美化一下輸出結果,比如:
✅🟢【已經完成】 🟡⏸️【待定】

邏輯處理#

添加=>
 command_add()=>接收用戶輸入,判斷第一個參數是否為add,然後判斷參數長度,參數<3 則提示參數不足,
然後調用Target::add()=>方法接收四個參數,包括<任務名稱><截止日期>[描述][分組],[]為可選參數,
所以只需要輸入任務名和日期就能添加任務,其他參數都會被設默認值
添加之前會先遍歷文件中所有任務的id,然後 +1 給新的任務,隨後寫入json
                                           
刪除=>
將json文件讀取出來,定義個變量存儲長度,調用.retain方法,作用=>
遍歷tasks向量中的每個元素
對每個元素執行閉包|task| task.id != Some(id)
保留閉包返回true的元素,移除返回false的元素
然後比較刪除前和刪除後的長度,小於前長度就刪除成功了。
                                           
查詢=>
讀取json然後遍歷

編輯=>
接收用戶輸入,判斷指令長度<3 或者 (指令長度 - 1) % 2 == 0 則會提示不匹配,因為第0、1是edit和任務ID,
2是字段名 2+1則為修改內容,所以能這樣匹配,然後進入Target::edit()=>方法
判斷id是否合法與存在,然後按id取出該任務,進入for循環,定義:字段和參數兩變量,進入match匹配字段,
符合後修改,然後寫入json文件
// 獲取可變任務引用
        let task = &mut tasks[task_index];

        // 解析並應用字段更新(從索引1開始,每兩個參數為一組)
        for i in (2..args.len()).step_by(2) {
            let field = args[i];
            let value = args[i + 1];

            // 任務狀態可用指令單獨修改
            match field {
                "name" => task.target_name = value.to_string(),
                "deadline" => task.deadline = value.to_string(),
                "description" => task.description = Some(value.to_string()),
                "group" => task.group = Some(value.to_string()),

                _ => eprintln!("不支持的字段: {}", field),
            }
        }

項目 TODO#

  1. 添加任務的完成類型,例如 ——
    每年 | 月 | 周 | 日 | 累計 X 次 | 指定日期前完成
  2. 應用可以在桌面托盤中或者後台運行
  3. 多窗口,例如查看指定組的任務詳情,就會在新窗口中顯示
  4. 關鍵詞查找,可以按關鍵詞查找任務。
  5. 批量操作:輸入一次指令,編輯多個任務,比如批量完成任務。
  6. 操作記錄,完成記錄:記錄用戶的每條成功執行的命令,以及用時間戳的形式記錄任務完成時間,以及可以在應用內查看記錄
  7. 性能優化:目前內存佔用 12MB 左右覺得有些高,打算盡可能的降低資源佔用。
  8. ⏸️任務日曆:可以輸出當月日曆
載入中......
此文章數據所有權由區塊鏈加密技術和智能合約保障僅歸創作者所有。