[1]Todo-rs

命令行版的 TodoList 工具

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

用 rust 语言实现的一个基于控制台的 todolist，主要用于对事件的记录 & 打卡，目前实现了基础的增删改查功能。
后续计划用 [表格化输出 + emoji 符号] 来美化一下输出结果，比如：
✅🟢【已经完成】 🟡⏸️【待定】

逻辑处理

Copy
添加=>
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

添加任务的完成类型，例如 ——
每年 | 月 | 周 | 日 | 累计 X 次 | 指定日期前完成

应用可以在桌面托盘中或者后台运行

多窗口，例如查看指定组的任务详情，就会在新窗口中显示

关键词查找，可以按关键词查找任务。

批量操作：输入一次指令，编辑多个任务，比如批量完成任务。

操作记录，完成记录：记录用户的每条成功执行的命令，以及用时间戳的形式记录任务完成时间，以及可以在应用内查看记录

性能优化：目前内存占用 12MB 左右觉得有些高，打算尽可能的降低资源占用。

⏸️任务日历：可以输出当月日历