第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 命令行开发:回归本质

什么是终端?什么是命令行?

我们需要先打开终端,我们看到可以是一个黑框。

  1. 在Windows系统中,可以通过点击开始菜单中的“命令提示符”或“Windows PowerShell”, 或者使用快捷键Win + R输入cmdpowershell,以及通过任务管理器的“运行新任务”输入cmdpowershell来打开终端。
  2. 在macOS系统里,可从Launchpad的“其他”文件夹找到“终端”,或使用快捷键Command + 空格搜索“终端”后回车,以及通过Finder的“实用工具”文件夹打开“终端”。
  3. 对于Linux系统,以常见的桌面环境为例,GNOME桌面环境可按Ctrl + Alt + T快速打开终端,或者通过“活动”搜索“终端”。

终端(Terminal) 是一个程序,它提供了一个文本界面,让你能够与计算机进行交互。你可以把它想象成一个"文字版的桌面", 所有的操作都通过输入文字命令来完成。在Windows上,你可能见过"命令提示符"或"PowerShell";在macOS和Linux上,通常就叫"终端"或"Terminal"。

**命令行(Command Line)**是指在终端中输入的命令。比如lscdmkdir这些就是命令行命令。 命令行是计算机最原始也是最直接的交互方式,所有的图形界面程序最终都是通过调用命令行程序来实现功能的。

其实我们日常使用的话,终端和命令行可以看作是一个东西。后面我们提到两者就当作同一个概念就好了。

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 fmtcargo testcargo 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

  1. 下载安装:从官网 https://code.visualstudio.com/ 下载适合你操作系统的版本

  2. 安装Rust插件

    • rust-analyzer:最重要的Rust语言服务器,提供代码补全、错误检查、重构等功能
    • CodeLLDB:调试器,用于调试Rust程序
    • crates:查看crate信息和版本
    • Even Better TOML:TOML文件语法高亮(Cargo.toml配置文件使用TOML格式)
  3. 配置设置:在VSCode中按Ctrl+,(Windows/Linux)或Cmd+,(macOS)打开设置,推荐配置:

    {
      "editor.formatOnSave": true,
      "editor.rulers": [100],
      "files.trimTrailingWhitespace": true,
      "rust-analyzer.checkOnSave.command": "clippy"
    }
    

VSCode的Rust开发工作流

  1. 打开项目File -> Open Folder 选择你的Rust项目文件夹
  2. 编写代码:在src/main.rs中编写代码,rust-analyzer会实时提供错误提示和代码补全
  3. 运行程序:按F5调试运行,或使用内置终端执行cargo run
  4. 查看文档:将光标放在函数名上,按F12跳转到定义,Shift+F12查看引用

VSCode内置了终端,在左上角点击终端->新建终端,即可获得一个当前工作目录为打开的文件夹的命令行,例如:

nju@njuyxz:~/learning-rust$ 

你可以在这里输入lscd等进行目录操作,也可以运用cargo run运行程序

VSCode快捷键

  • Ctrl+Shift+P:命令面板
  • Ctrl+P:快速打开文件
  • F12:跳转到定义
  • Shift+F12:查看引用
  • Ctrl+Shift+F:全局搜索
  • Ctrl+/:注释/取消注释

调试技巧

  1. 在代码中添加println!语句进行简单调试
  2. 使用dbg!宏打印变量值
  3. 在VSCode中设置断点进行调试

选择合适的开发工具是提高编程效率的关键。对于Rust初学者,我强烈推荐从VSCode + rust-analyzer开始,它既能提供足够的开发支持,又不会让你被复杂的配置困扰。随着经验的积累,你可以尝试其他工具,找到最适合自己的开发环境。

2.4 本章小结

本章我们了解了Rust的诞生背景、设计理念和实际应用,安装了开发环境,并详细介绍了各种开发工具。Rust作为一门现代化的系统级编程语言,在安全性、性能和开发体验方面都有显著优势。

重点回顾

  • 命令行和IDE的区别与选择
  • VSCode的配置和使用技巧

实践

  1. 确保Rust环境安装成功,能够运行"Hello, world!"程序
  2. 熟悉基本的cargo命令:newbuildruntest
  3. 配置好VSCode和rust-analyzer插件
  4. 尝试在命令行和VSCode中分别创建和运行项目