引言
本节将开始「Talent Plan 之 Rust 网络编程实践」系列课程学习啦,该系列课程的最终目标是使用 Rust 语言编写一个高性能的单机日志类型(log-structured) key/value 存储服务,分为客户端和服务端两个部分,并使用自定义的协议进行通信,能够使用命令行进行操作。
需要注意的是,该系列课程并非面向初级编程爱好者。参与该系列课程学习和实践前,最好已经有过其它语言编程经验,并且对 Rust 语言有基本了解,写过一些 Rust 代码。笔者强烈建议阅读 The Rust Book 或者《Rust 编程之道》这样的书籍来打好基础。Rust 中引入的所有权、生命周期等概念需要转变思维来理解它,这样才能更好地领悟到这门语言的精髓。
大纲
以下是 Rust 网络编程实践课程大纲,总共分为六个部分(最后一个部分还没完成),循序渐进地引导我们阅读一些博客,掌握最佳编程实践,通过不断实践来加深对这门语言的理解。
学习姿势
GitHub talent-plan 仓库中存放了课程中安排的编程项目,位于 /rust/projects
目录下。这里的每一个项目都是基于前一个项目进行改造的,在每个项目中都会增量应用一些新的 Rust 知识,比如学习引入第三方 crates,使用标准网络库,使用多线程编程改进服务性能等。
在进行每个项目实践之前,会有一个针对性的 Building Block,可以看成是一些预备知识。在预备知识中,会针对和接下来要实践的项目有关的话题,提供一些阅读材料和练习题,在阅读完成后可以通过练习题巩固下学习到的知识,这样在进行项目实践时会更加得心应手,提升效率。
开发环境准备
我们可以通过 rustup
管理 Rust 版本及相关的工具链。如果还没有安装 Rust 编译器,可以通过下面的命令行完成(Linux 或者 macOS 环境):
1 | curl https://sh.rustup.rs -sSf | sh |
rustup
工具会为我们安装最新稳定版本的 Rust 编译器。之后也可以通过 rustup update
进行版本更新,或者使用 rustup self uninstall
完成 Rust 编译器和 rustup
卸载。详细操作不再赘述,可参见 Rust Getting Started。
下面笔者将要安利两款神器级插件,便于提升 Rust 编程体验。早期的 Rust IDE 支持比较差,明显没有其它语言在 IDE 中体验舒服(笔者曾经在 Clion 中尝试 Rust 插件,但是效果欠佳)。不过社区一直都在努力改进这一点,下面介绍下笔者的开发环境,仅供参考。
- Rust 版本:1.42
- 代码编辑器:Visual Studio Code
- 插件:
- rust-analyzer:这个是用来替代 RLS(Rust Language Server)的实验产品,目标是提供更加优秀的 IDE 功能支持。目前虽然处于 alpha 阶段,不过相对已有的其它插件,已经非常实用了。支持代码自动补齐、文档提示、函数实现跳转、
main
函数识别、单元测试识别等。推荐使用~ - TabNine:这是一款智能代码自动补全工具,采用深度学习技术加速代码编写,支持主流编程语言。值得一提的是,TabNine 服务本身是使用 Rust 编写,所以它的很多付费功能都是对 Rust 语言开放的,所以尽管使用吧。
- rust-analyzer:这个是用来替代 RLS(Rust Language Server)的实验产品,目标是提供更加优秀的 IDE 功能支持。目前虽然处于 alpha 阶段,不过相对已有的其它插件,已经非常实用了。支持代码自动补齐、文档提示、函数实现跳转、
关于调试
掌握调试技能,对于排查程序问题非常有帮助。那么如何在 Visual Studio Code 中调试我们的 Rust 项目呢?下面将以一个简单的例子来演示下如何进行调试。
首先,在工程目录下新建一个示例项目 cargo new miao
,然后输入如下代码,并执行 cargo build
,生成的可执行文件位于 target/debug
目录下。
1 | fn main() { |
接下来,点击 vscode 左侧工具栏中的「调试」按钮,并且点击「create a launch.json file」按钮,创建启动配置文件。在弹出的候选框中选择「C++ (GDB/LLDB)」。
紧接着,编辑生成的 .vscode/launch.json
文件,修改其中的程序启动配置,即 configurations.program
指向可执行文件 ${workspaceFolder}/target/debug/miao
。
接下来,在代码中添加断点,然后执行 cargo build
(默认会以 debug 模式构建),最后启动调试即可。
当然,也可以使用命令行工具 rust-lldb
执行调试,感兴趣的话,可以前往 Rust LLDB 调试入门指北 了解更多细节。
小结
本节对「Talent Plan 之 Rust 网络编程实践」系列课程进行了简单介绍,了解课程的具体安排,并在最后给出了 Rust 开发环境搭建的一些参考。