project-1
Project 1 主要是熟悉 Rust 项目的基础操作。与 CS3210 给定代码框架实现函数不同的是,Talent-Plan 只提供了测试代码和对项目结构与依赖的描述,在 Project 开头指导创建一个新项目并且编写足够的函数声明以使测试代码能够通过编译(编译而不运行)。
项目内容是通过对 Map 的封装实现一个非持久型命令行 KV 二进制文件,说人话就是把 Map 的删查改封装成了命令行参数还不存文件。
难点除了第一次从零写 Rust 项目的不熟悉之外,就是 crate 的使用,解析命令行参数是一个比较麻烦的工作,Project 1 最初建议使用clap
解析命令行参数,最后又建议换为基于clap
的structopt
解析命 令行参数,比较之下structopt
使用起来要简单明白许多,其中很大程度上是structopt
提供的宏的功劳。
另一个在 Project 中着墨不多但是我认为比较重要的事就是代码注释,在添加了#![deny(missing_docs)]
选项之后我就没有再删除,在这时需要写的代码注释很简单。但在后面的 Project 中随着代码量增加,代码注释也逐渐多起来了,那时我对于如何描述一个 trait、一个成员、甚至一个函数毫无头绪,在代码中留下了很多TODO
,后来通过参考示例代码和一些 crate 写出了还算像样的注释