用 Rust 构建一个待办事项列
表应用程序
今天我们将用 Rust 构建一个简单的命令行待办事项列
表应用程序。
照片由 Erik Mclean 在 Unsplash 上拍摄
Rust 简介
Rust 是一种强类型和编译语言,最初在 Mozilla 开发,后来作
为开源语言发布。它使用 LLVM 作为后端编译器,并具有一系
列经典且独特的语言功能,这使其成为低级开发的热门选择。
Rust 的旗舰功能是它的借用检查系统,它有助于从应用程序开
发一开始就识别和删除程序中许多与内存安全相关的错误。它是
一种非垃圾收集语言,这意味着底层内存管理不像 java 和
python 等许多其他流行语言那样由垃圾收集器处理。然而,与 C
不同的是,Rust 并没有将内存管理的责任交给开发人员,而是
使用一种独特的方法,利用其所有权和借用系统。
Rust 的所有权和借用系统有任何数据都需要满足的 2 个主要
条件:
1. 每一条数据在任何时候都只能由一个变量拥有。
2. 一旦所有者变量超出执行范围,相关数据也会被删除。
所有权系统确保不存在两个变量试图指向同一数据块的竞争条
件。如果我们需要某个变量的值在其他地方,我们可以通过转移
所有权来完全移动数据,或者我们可以从原始所有者那里借用该
值一段时间,然后在一段时间后将其返回到程序的同一范围。修
改。这确保了在任何给定时间,只有一个信息所有者,并且没有
两个变量可以同时修改该信息。
应用程序的设计
我们的命令行应用程序将具有以下功能:
添加:将新任务添加到待办事项列表
Show:显示待办事项列表
更新状态:任务的状态将从未完成变为已完成。
更新名称:任务的名称将更改为其他名称,这将有助于更改任务
的名称,而无需每次我们想要对任务名称进行微小更改时添加新
任务。
删除:从待办事项列表中删除任务
exit:退出程序
help:显示帮助信息。
该应用程序将以二进制形式运行并显示自己的提示符。用户将通
过该提示添加命令并在该提示中获得响应。
应用范围完全局限于内存,不会有任何文件 IO 操作写入磁盘。
我们的程序将分为两个文件:
main.rs:将处理提示显示并从命令行获取参数。
lib.rs:将处理程序的整个逻辑,从解析从命令行获取的参数到显
示结果。
从基础开始
Rust 与许多编译语言一样,从 main 函数开始执行程序。它是
每个程序执行的入口点。
函数由 Rust 中的“fn”键定义,可以有返回类型,也可以没有返
回类型。 main 函数大多没有返回类型。
main.rs 文件的 main 函数如下所示:
// in main.rs
extern crate todo_list;