第2章:Rust开发工具与环境
2.1 安装Rust开发环境
下面我们来动手安装Rust开发环境,并编写第一个Rust程序。
2.1.1 安装Rust
在Linux/macOS终端或Windows的WSL中,执行以下命令:
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
根据提示完成安装后,重启终端,输入:
rustc --version
cargo --version
如果能看到版本号,说明安装成功。
2.1.2 配置VSCode插件
推荐安装"rust-analyzer"插件,获得更好的代码补全和语法提示体验。 这个是官方文档:https://rust-analyzer.github.io/book/,里面提供了安装方法。
2.1.3 创建第一个Rust项目
使用cargo新建项目:
cargo new hello_rust
cd hello_rust
cargo run
你会看到输出:
Hello, world!
代码示例
src/main.rs
文件内容如下:
fn main() { println!("Hello, world!"); }
是不是很熟悉?和C语言的printf
类似,但Rust的println!
是一个宏,后续我们会详细讲解。
2.2 开发工具详解:从命令行到IDE
在开始Rust编程之旅之前,我们需要了解各种开发工具的特点和用途。就像木匠需要合适的工具才能做出精美的家具一样,程序员也需要合适的开发环境才能高效地编写代码。
2.2.1 什么是编辑器?什么是IDE?
编辑器(Editor) 就像是一个功能强大的记事本,主要用来编辑文本文件。它轻量、快速,但功能相对简单。 常见的编辑器包括Vim/Emacs、Sublime Text、Atom、Notepad++等。这些编辑器各有特色:Vim和Emacs是老牌编辑器, 功能强大但学习曲线陡峭,适合喜欢键盘操作的高手;Sublime Text界面美观,启动速度快,插件丰富; Atom是GitHub开发的编辑器,界面友好但已停止维护;Notepad++是Windows平台轻量级编辑器,适合简单的文本编辑任务。
IDE(集成开发环境) 则是一个"一站式"的开发平台,集成了编辑器、编译器、调试器、版本控制等多种工具。 它就像一个功能齐全的工作室,什么工具都有,但相对较重。常见的IDE包括Visual Studio、IntelliJ IDEA、Eclipse、CLion等。
Visual Studio 是微软开发的重量级IDE,功能强大但体积庞大,主要支持C#、C++等微软技术栈。 这个软件是很多计算机专业学生刚开始学习时推荐使用的,因为它强大的集成性让我们省去了很多让新手眼花缭乱的配置。 Visual Studio的优势在于与Windows生态的深度集成,调试功能强大,对微软技术栈支持最好。 但它也有明显的缺点:体积庞大(动辄几GB),启动缓慢,主要针对Windows平台,对其他平台支持有限,而且价格昂贵。
IntelliJ IDEA 是JetBrains开发的Java IDE,被誉为Java开发的首选工具。 它的优势在于智能代码补全、强大的重构功能、丰富的插件生态,以及对多种语言的良好支持。 IDEA的代码分析能力非常强大,能够实时发现潜在问题并提供修复建议。 但它同样存在启动慢、内存占用大的问题,而且完整版需要付费订阅,对初学者来说可能过于复杂。
Eclipse 是开源的Java IDE,在Java开发领域有着悠久的历史。它的优势是完全免费、插件丰富、社区活跃,特别适合Java企业级开发。 Eclipse的插件系统非常强大,几乎可以支持任何编程语言。但Eclipse的界面相对老旧,用户体验不如现代IDE, 配置复杂,而且性能问题一直存在,特别是在大型项目中。
CLion 是JetBrains专门为C/C++开发设计的IDE,对Rust支持也很好。它继承了JetBrains系列IDE的优秀传统: 智能代码分析、强大的重构功能、集成调试器、版本控制集成、数据库工具等。CLion的优势在于对C/C++生态的深度理解, 能够提供准确的代码补全和错误检查。但它需要付费订阅,而且对系统资源要求较高,在低配置机器上可能运行缓慢。
VSCode 比较特殊,它介于编辑器和IDE之间。虽然叫"编辑器",但通过插件可以拥有IDE的大部分功能,既轻量又强大,因此成为了很多开发者的首选。 VSCode的优势非常明显:启动速度快、内存占用小、插件生态丰富、跨平台支持好、完全免费。 它的设计理念是"轻量但可扩展",核心功能简单,但通过插件可以扩展出强大的功能。 VSCode对Rust的支持通过rust-analyzer插件实现,能够提供接近专业IDE的开发体验。 VSCode的缺点在于功能相对分散,需要自己配置插件,对初学者来说可能有些复杂,而且某些高级功能(如复杂的重构)不如专业IDE强大。
为什么有人选择Visual Studio? 主要是因为它的集成性和易用性。对于初学者来说,Visual Studio提供了"开箱即用"的体验,不需要复杂的配置就能开始编程。 它的调试功能非常强大,对微软技术栈的支持最好,特别适合Windows平台开发。很多企业级项目选择Visual Studio是因为它的稳定性和企业级支持。
为什么更多人选择VSCode? 主要是因为它的轻量性和灵活性。VSCode启动速度快,占用资源少,特别适合现代开发者的工作习惯。 它的插件生态非常丰富,几乎可以支持任何编程语言和框架。VSCode的跨平台支持很好,无论Windows、macOS还是Linux都能提供一致的使用体验。 对于Rust开发来说,VSCode + rust-analyzer的组合能够提供专业级的开发体验,而且完全免费。
对于Rust初学者,我推荐从VSCode开始,因为它轻量、免费、功能强大,而且有很好的Rust支持。 如果你已经熟悉Visual Studio或JetBrains系列IDE,也可以继续使用,这些IDE都有不错的Rust插件支持。 最重要的是选择你感觉舒适的工具,因为编程的核心是思维和逻辑,工具只是辅助。
2.2.2 命令行开发:回归本质
什么是终端?什么是命令行?
我们需要先打开终端,我们看到可以是一个黑框。
- 在Windows系统中,可以通过点击开始菜单中的“命令提示符”或“Windows PowerShell”,
或者使用快捷键
Win + R
输入cmd
或powershell
,以及通过任务管理器的“运行新任务”输入cmd
或powershell
来打开终端。 - 在macOS系统里,可从Launchpad的“其他”文件夹找到“终端”,或使用快捷键
Command + 空格
搜索“终端”后回车,以及通过Finder的“实用工具”文件夹打开“终端”。 - 对于Linux系统,以常见的桌面环境为例,GNOME桌面环境可按
Ctrl + Alt + T
快速打开终端,或者通过“活动”搜索“终端”。
终端(Terminal) 是一个程序,它提供了一个文本界面,让你能够与计算机进行交互。你可以把它想象成一个"文字版的桌面", 所有的操作都通过输入文字命令来完成。在Windows上,你可能见过"命令提示符"或"PowerShell";在macOS和Linux上,通常就叫"终端"或"Terminal"。
**命令行(Command Line)**是指在终端中输入的命令。比如ls
、cd
、mkdir
这些就是命令行命令。
命令行是计算机最原始也是最直接的交互方式,所有的图形界面程序最终都是通过调用命令行程序来实现功能的。
其实我们日常使用的话,终端和命令行可以看作是一个东西。后面我们提到两者就当作同一个概念就好了。
2.2.3 IDE与终端的关系是什么?
IDE和终端的关系可以用"前台"和"后台"来理解。IDE是前台,提供友好的图形界面,让你可以点击按钮、拖拽文件、可视化地管理项目。但IDE的很多功能实际上是在后台调用命令行程序来实现的。比如当你点击"运行"按钮时,IDE实际上是在后台执行了cargo run
这个命令。
这种关系的好处是,你既可以通过IDE的图形界面快速操作,也可以在需要时直接使用终端进行更精确的控制。很多高级开发者会同时使用IDE和终端:用IDE编写代码和调试,用终端执行一些特殊的命令或自动化脚本。
为什么需要同时掌握终端和IDE?
终端不可替代的原因有很多。首先,终端让你更清楚地知道每一步在做什么。 当你使用IDE点击“运行”时,很多操作被隐藏了,你不知道IDE在后台执行了什么命令。 但当你使用终端时,每一个命令都是你亲手输入的,你完全知道发生了什么。
其次,终端在服务器环境中是必需的。很多服务器没有图形界面,只能通过终端来操作。 如果你只会使用IDE,在服务器环境中就会束手无策。 而且,很多自动化脚本和CI/CD流程都是基于命令行的,掌握终端操作对于现代软件开发非常重要。
第三,终端在调试问题时往往更可靠。当IDE出现问题时,终端通常还能正常工作。
很多开发者都有这样的经历:IDE无法编译某个项目,但在终端中直接运行cargo build
却成功了。
2.2.4 现代开发工作流:终端与IDE的协作
在现代软件开发中,终端和IDE通常是协作工作的。一个典型的Rust开发工作流可能是这样的:
你使用VSCode(IDE)来编写代码,享受智能补全和实时错误检查。当你需要运行程序时,你可以按F5在IDE中调试运行,
也可以打开IDE的内置终端,输入cargo run
来运行。当你需要执行一些特殊的操作,比如格式化代码、运行特定的测试、
或者查看依赖信息时,你会在终端中使用cargo fmt
、cargo test
、cargo tree
等命令。
这种协作模式的好处是,你既享受了IDE的便利,又保持了终端的灵活性。IDE处理日常的编码任务,终端处理特殊的操作和自动化任务。 很多IDE(如VSCode、IntelliJ IDEA)都内置了终端,这样你就不需要在IDE和终端之间切换窗口了。
2.2.5 实用建议
不要害怕终端:很多初学者对终端有恐惧心理,觉得命令行很复杂。但实际上,终端命令就像学习一门新的语言,刚开始可能不熟悉,但用多了就会变得自然。从简单的命令开始,比如ls
在Rust中,我们主要使用以下命令行工具:
Rust工具链
# 检查Rust版本
rustc --version
cargo --version
# 创建新项目
cargo new my_project
# 编译项目
cargo build
# 运行项目
cargo run
# 运行测试
cargo test
# 检查代码(不生成可执行文件)
cargo check
# 格式化代码
cargo fmt
# 代码检查
cargo clippy
终端快捷键
# 清屏
clear # 或 Ctrl+L
# 列出当前目录下的文件
ls
2.3 VSCode:现代开发的首选
VSCode(Visual Studio Code)是微软开发的开源编辑器,凭借其轻量、快速、插件丰富的特点,成为了最受欢迎的代码编辑器之一。
安装和配置VSCode
我们按照如下的步骤来安装和配置VSCode
-
下载安装:从官网 https://code.visualstudio.com/ 下载适合你操作系统的版本
-
安装Rust插件:
- rust-analyzer:最重要的Rust语言服务器,提供代码补全、错误检查、重构等功能
- CodeLLDB:调试器,用于调试Rust程序
- crates:查看crate信息和版本
- Even Better TOML:TOML文件语法高亮(Cargo.toml配置文件使用TOML格式)
-
配置设置:在VSCode中按
Ctrl+,
(Windows/Linux)或Cmd+,
(macOS)打开设置,推荐配置:{ "editor.formatOnSave": true, "editor.rulers": [100], "files.trimTrailingWhitespace": true, "rust-analyzer.checkOnSave.command": "clippy" }
VSCode的Rust开发工作流
- 打开项目:
File -> Open Folder
选择你的Rust项目文件夹 - 编写代码:在
src/main.rs
中编写代码,rust-analyzer会实时提供错误提示和代码补全 - 运行程序:按
F5
调试运行,或使用内置终端执行cargo run
- 查看文档:将光标放在函数名上,按
F12
跳转到定义,Shift+F12
查看引用
VSCode内置了终端,在左上角点击终端->新建终端,即可获得一个当前工作目录为打开的文件夹的命令行,例如:
nju@njuyxz:~/learning-rust$
你可以在这里输入ls
,cd
等进行目录操作,也可以运用cargo run
运行程序
VSCode快捷键
Ctrl+Shift+P
:命令面板Ctrl+P
:快速打开文件F12
:跳转到定义Shift+F12
:查看引用Ctrl+Shift+F
:全局搜索Ctrl+/
:注释/取消注释
调试技巧
- 在代码中添加
println!
语句进行简单调试 - 使用
dbg!
宏打印变量值 - 在VSCode中设置断点进行调试
选择合适的开发工具是提高编程效率的关键。对于Rust初学者,我强烈推荐从VSCode + rust-analyzer开始,它既能提供足够的开发支持,又不会让你被复杂的配置困扰。随着经验的积累,你可以尝试其他工具,找到最适合自己的开发环境。
2.4 本章小结
本章我们了解了Rust的诞生背景、设计理念和实际应用,安装了开发环境,并详细介绍了各种开发工具。Rust作为一门现代化的系统级编程语言,在安全性、性能和开发体验方面都有显著优势。
重点回顾:
- 命令行和IDE的区别与选择
- VSCode的配置和使用技巧
实践:
- 确保Rust环境安装成功,能够运行"Hello, world!"程序
- 熟悉基本的cargo命令:
new
、build
、run
、test
- 配置好VSCode和rust-analyzer插件
- 尝试在命令行和VSCode中分别创建和运行项目