1、Rust入门:从零开始认识这门语言

说实话,我第一次接触Rust是在2018年。那时候我还在用C++写一个网络服务,内存泄漏问题搞得我焦头烂额。同事推荐说「有个新语言,编译时就能帮你检查内存问题」,我当时半信半疑——直到真正上手Rust,才发现这玩意儿确实有点东西。

这一章,咱们就从头捋一捋Rust的来龙去脉。不扯虚的,全是干货。

1.1 Rust语言发展史

Rust诞生于Mozilla研究院,最初是Graydon Hoare的个人项目。2009年Mozilla开始赞助,2015年发布了第一个稳定版——1.0。为什么Mozilla要搞这个?说白了,他们需要一个比C++更安全的系统编程语言,用来写Firefox的渲染引擎。

我记得当时有个段子:Firefox的C++代码里,有将近一半的bug都是内存问题。Rust的目标就是把这些bug扼杀在编译期。

年份 里程碑
2006 Graydon Hoare开始个人项目
2009 Mozilla正式赞助
2015 Rust 1.0稳定版发布
2018 Rust 2018 Edition(模块系统大改)
2021 Rust 2021 Edition(闭包、泛型增强)
2023 进入Linux内核,AWS、Google等大厂广泛采用

1.2 核心特性:凭什么说它安全?

Rust最让我服气的,就是它的内存安全机制。你想想看,C/C++里最常见的段错误、空指针、野指针,在Rust里几乎绝迹。怎么做到的?靠的是所有权系统。

核心三原则:

  • 每个值在Rust中都有一个所有者(owner)
  • 同一时刻只能有一个所有者
  • 当所有者离开作用域,值会被自动释放

举个例子,你在C++里写个函数返回一个指针,调用方得小心翼翼记着释放。在Rust里,编译器直接帮你盯着——谁借了谁的东西,什么时候还,清清楚楚。

另一个让我拍大腿的特性是零成本抽象。说白了就是:你用高级语法写代码,编译出来的机器码跟手写汇编一样高效。Rust的迭代器、闭包、泛型,在编译时都会被优化掉,运行时没有任何额外开销。

💡 我在项目中遇到过:用Rust的迭代器链式操作处理百万级数据,性能跟手写for循环几乎一样。这在Python里想都不敢想。

1.3 应用场景:Rust能干啥?

Rust不是万能的,但它的适用面确实很广。我总结了三类最典型的场景:

  • 系统编程:操作系统、嵌入式、驱动开发。Linux内核6.1开始支持Rust,这就是最好的背书。
  • WebAssembly:Rust编译成Wasm,体积小、速度快。前端性能敏感的部分,用Rust重写效果立竿见影。
  • CLI工具:像ripgrep、fd、bat这些爆款工具,都是Rust写的。启动快、内存稳、跨平台。

嗯,这里要注意:Rust不太适合快速原型开发。如果你要三天搭个Web应用,还是用Python或Go更顺手。Rust的强项是「一次写好,稳定运行十年」的场景。

1.4 开发环境搭建:从零开始

搭建环境其实很简单,别被网上那些教程吓到。我建议你按这个顺序来:

1.4.1 安装rustup

rustup是Rust的版本管理工具,类似nvm之于Node.js。打开终端,执行:

curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh

安装完成后,重启终端,输入rustc --version验证。如果看到版本号,说明搞定了。

⚠️ 我曾经在Windows上踩过坑:安装时忘了勾选「添加到PATH」,结果命令行找不到rustc。如果你也遇到这问题,手动把%USERPROFILE%\.cargo\bin加到环境变量就行。

1.4.2 认识cargo

cargo是Rust的包管理器和构建工具。你想想看,写C++时最头疼的就是链接库、管理依赖,cargo把这些全包了。

常用命令一览:

命令 作用
cargo new hello 创建新项目
cargo build 编译项目
cargo run 编译并运行
cargo check 只检查语法,不生成二进制(比build快)
cargo add 添加依赖(Rust 1.62+)

我个人习惯是:开发时频繁用cargo check,只有确认没问题了才cargo build。因为check只做语法分析,速度能快一倍。

1.4.3 VS Code插件配置

编辑器我推荐VS Code,装上这几个插件,体验直接起飞:

  • rust-analyzer:代码补全、跳转、类型提示,Rust的官方LSP
  • CodeLLDB:调试器,支持断点、变量查看
  • Even Better TOML:高亮Cargo.toml配置文件
  • crates:在Cargo.toml里显示依赖的最新版本

装好之后,打开一个Rust项目,你会看到编辑器底部出现「Rust Analyzer: 已加载」的提示。这时候写代码,体验跟TypeScript差不多——智能提示、错误红线、一键修复,全都有。

1.5 知识体系总览

下面这张图,是我自己梳理的Rust入门知识结构。你可以把它当成一张地图,学完一章就回来看看,心里有个谱。

Rust入门 发展史 2006-2023 核心特性 内存安全 · 零成本抽象 应用场景 系统编程 · Wasm · CLI 环境搭建 rustup · cargo · VS Code 工具链 rustc · clippy · rustfmt Rust入门知识体系总览

这张图把本章内容串起来了。左边是「是什么」——发展史、特性、场景;右边是「怎么用」——环境搭建、工具链。学完这一章,你应该能回答这三个问题:Rust从哪来?它牛在哪?我怎么开始写?

💡 一个小建议:别急着看完所有理论。装好环境后,直接cargo new hello,写个println!("Hello, Rust!");跑起来。先有手感,再深入理解,效果更好。


专注资料整理