大家好,接上一篇 Rust 入门文章,我们已经用rustc写出了 Hello World,但在真实开发中,几乎没人只用rustc写项目 。就像前端不会手写原生 JS 而不用 npm、webpack 一样,Rust 工程化开发,全靠一个核心工具 ------Cargo。
前言:为什么前端一定要学 Cargo?
如果你是前端,一定离不开npm/yarn:初始化项目、安装依赖、打包构建、运行开发服务。
而Cargo 就是 Rust 官方自带的「全能工具」,它一个顶俩:
- 包管理工具(对应前端 npm/yarn)
- 构建打包工具(对应前端 webpack/vite)
安装 Rust 的时候,Cargo 就自动装好了,不用额外配置。
上一篇我们用rustc main.rs编译单文件,那只是玩具 Demo;想做正式项目、引入第三方库、团队协作、打包发布,Cargo 是唯一选择。
对于想做 WebAssembly、前端工具链、跨端开发的前端同学,Cargo 是必须掌握的基础技能。
一、先验证:你的电脑有 Cargo 吗?
打开终端(Windows 用 PowerShell,Mac/Linux 用自带终端),输入一行命令:
bash
运行
css
cargo --version
如果能出版本号,说明环境正常;如果报错,回头重新安装 Rust 环境即可。
这就和前端检查npm -v一模一样,是不是瞬间有亲切感了?
二、用 Cargo 创建项目:比 npm init 还简单
前端初始化项目用npm init,Rust 用:
bash
运行
arduino
cargo new my_first_rust_project
一行命令,直接生成标准 Rust 工程,连文件夹、配置文件、入口代码全都帮你建好,全自动。
生成的目录结构长这样,我给你翻译成前端能秒懂的版本:
plaintext
csharp
my_first_rust_project
├── src/ # 源码目录(对应前端src文件夹)
│ └── main.rs # 项目入口文件(对应前端main.js/index.js)
├── .gitignore # Git忽略文件(和前端完全一样)
├── Cargo.toml # 项目配置文件【核心!对应前端package.json】
└── Cargo.lock # 依赖版本锁定文件【对应前端package-lock.json/yarn.lock】
target/文件夹:第一次编译后自动生成,存放编译后的可执行文件(对应前端 dist)- 所有源码必须放在 src 里,这是 Rust 的强制规范,和前端约定大于配置一个道理。
三、核心文件 Cargo.toml:Rust 的 package.json
前端靠package.json管理项目信息和依赖,Rust 靠Cargo.toml。
打开它,默认内容长这样,我逐行给前端同学解释:
toml
ini
[package]
name = "my_first_rust_project" # 项目名(对应前端package.json name)
version = "0.1.0" # 版本号(和前端完全一致)
edition = "2021" # Rust版本(固定写2021就行)
[dependencies] # 第三方依赖(对应前端dependencies)
太干净了吧!比package.json清爽得多。
[package]:存放项目基本信息[dependencies]:你想引入的 Rust 第三方库(Rust 里叫 crate),全都写在这里- 格式是
库名 = "版本号",和前端"axios": "^1.6.0"几乎一样
举个例子:
toml
ini
[dependencies]
rand = "0.8.5"
这就等于前端执行npm install rand,Cargo 会自动下载、安装、配置好这个库。
四、Cargo.lock:前端同学最熟悉的文件
第一次编译项目后,Cargo 会自动生成Cargo.lock。
它的作用和前端的package-lock.json完全一样:
- 锁定所有依赖的精确版本
- 保证团队所有人、所有环境编译出来的依赖完全一致
- 绝对不要手动修改,全部交给 Cargo 自动管理
前端同学看到这里,是不是已经完全不陌生了?
五、Cargo 5 个最常用命令:前端开发背熟就行
Cargo 的命令非常少,日常开发只用 5 个,我用前端场景类比讲解:
1. cargo check:代码语法检查(最快!)
bash
运行
sql
cargo check
作用 :只检查代码语法对不对,不生成可执行文件 。对应前端:eslint语法检查。
优点:速度极快,写代码的时候频繁运行,提前发现错误,比编译快 10 倍都不止。
2. cargo build:开发环境编译
bash
运行
cargo build
作用 :编译项目,生成开发版可执行文件。对应前端:npm run build(开发模式)。
编译产物在:target/debug/目录下。开发模式不会做性能优化,编译快,适合本地调试。
3. cargo run:一键编译 + 运行(开发最常用)
bash
运行
arduino
cargo run
作用 :先检查代码 → 编译 → 自动运行程序。对应前端:npm run dev / vite。
这是你日常写 Rust 代码最常用的命令,不用分开执行编译 + 运行,一行搞定。如果代码没修改,Cargo 会直接运行上次编译结果,超级快。
4. cargo build --release:生产环境打包
bash
运行
arduino
cargo build --release
作用 :编译正式发布版本,开启极致性能优化。对应前端:npm run build(生产模式)。
产物在:target/release/目录下。正式给别人用的程序,必须用--release模式,性能比开发版高几十倍。
5. cargo update:更新依赖版本
bash
运行
sql
cargo update
对应前端:npm update,自动更新依赖到最新版本。
六、小知识:把旧的 rustc 项目改成 Cargo 项目
如果你之前写了单文件.rs,想用 Cargo 管理,两步搞定:
- 新建
src文件夹,把你的.rs文件放进去,改名为main.rs - 在根目录新建
Cargo.toml,写上基础配置
toml
ini
[package]
name = "my_project"
version = "0.1.0"
edition = "2021"
[dependencies]
然后直接用cargo run运行,完美切换成标准工程。
七、前端视角总结:Cargo 到底好在哪?
对比我们上一节用的rustc,Cargo 的优势前端同学一眼就能懂:
- 不用手动执行
rustc,命令更简单 - 自动管理依赖,像 npm 一样方便
- 自动生成标准目录,团队协作统一规范
- 开发 / 生产模式分离,和前端构建逻辑一致
- 编译、运行、检查、更新一条龙,不用配乱七八糟的插件
Rust 之所以现在这么火,Cargo 这种开箱即用、零配置的工程化体验,占了一大半功劳。
对比前端工具链:
- npm = Cargo 依赖管理
- webpack/vite = Cargo 构建打包
- eslint = cargo check
- package.json = Cargo.toml
- package-lock.json = Cargo.lock
是不是100% 对应?前端同学学 Cargo,真的没有任何门槛。
结语
到这里,你已经完全掌握了 Rust 工程化的核心工具 Cargo:会创建项目、看懂配置文件、会用核心命令、理解目录结构。
这就等于前端掌握了 npm+webpack 基础,已经可以正式开始写 Rust 项目了。
Rust 并没有那么难,只要用前端的思维去类比,所有概念都能瞬间打通。
下一篇我们会继续用前端视角,学习 Rust 的变量、数据类型,全程类比 JS/TS,让你无痛入门系统级编程语言。
我是前端转型 Rust 的开发者,持续输出通俗 Rust 教程,欢迎关注~