Rust 命令速查表 - Rust 与 Cargo 常用命令大全
这套速查给写 Rust 的开发者,尤其围绕每天都要碰的 Cargo 工具链:项目脚手架、debug 与 release 两态编译、跑测试、生成文档、用 Clippy 扫 lint、用 rustfmt 统一格式、按目标平台交叉编译。与逐个罗列 cargo 子命令不同,条目沿"编辑→编译/检查→测试→lint→格式化→发布"的真实节奏组织。读完应能把一个新 crate 从 cargo new 一路带到 green 的 Clippy+测试和可交付的 release 构建。
项目管理 9
cargo new project_name创建可执行(二进制)新项目并初始化 git 仓库,默认使用你的 git 配置
cargo new --lib project_name创建库(lib)型项目,入口是 src/lib.rs 而非 main.rs,适合封装可复用 crate
cargo init在当前目录初始化 Cargo 项目,适合已有源码目录补脚手架
cargo build编译为 debug 版本(产物在 target/debug),不经优化、编译快,符合日常开发
cargo build --release以 release 优化编译(target/release),产物更小运行更快,上线用这个构建
cargo run编译并直接运行二进制,省略先 build 再手动执行,开发快捷键
cargo run --release编译并运行发布版本,用于验证优化后的实际性能
cargo check只做类型检查不生成二进制,最快验证代码能否通过借位检查与类型系统,适合频繁改动时用
cargo clean清空 target 目录全部构建缓存,解决陈旧的增量编译问题时再重编
依赖管理 6
cargo add serde把最新兼容版本的 serde 写入 Cargo.toml 并可直接 use,无需手工编辑清单
cargo add serde --features derive添加依赖并同时开启其 derive feature,便于后续派生宏(如 #[derive(Serialize)])
cargo remove serde从 Cargo.toml 移除依赖声明,同时清理不再需要的引用
cargo update按 Cargo.toml 约束把 Cargo.lock 中的依赖升级到当前满足的最新版本
cargo tree以树形打印依赖关系,直观看到传递依赖与版本来源
cargo tree --invert反向查询到底哪些 crate 依赖着某个具体包,查连锁升级影响面用它
测试与文档 5
cargo test运行所有测试
cargo test -- --nocapture显示 println 输出
cargo test test_name运行指定测试
cargo doc --open生成并打开文档
cargo doc --no-deps仅生成当前 crate 文档
代码质量 4
cargo clippy运行 Clippy lint 检查
cargo clippy --fix自动修复 Clippy 警告
cargo fmt格式化代码
cargo fmt -- --check检查格式(CI 用)
发布与跨平台 6
cargo publish发布到 crates.io
cargo publish --dry-run模拟发布
cargo build --target x86_64-unknown-linux-musl交叉编译到 Linux
rustup target list列出可用目标平台
rustup target add x86_64-pc-windows-gnu添加 Windows 目标
cargo install cargo-edit安装全局命令
语法核心 14
let s2 = s1;所有权转移(move 语义)
let r = &s;不可变引用(借用)
let r = &mut s;可变引用
fn foo<'a>(x: &'a str) -> &'a str显式生命周期标注
fn foo(x: &str) -> &str生命周期省略规则
match x { Some(v) => v, None => 0 }match 模式匹配
if let Some(v) = opt {}if let 简化匹配
while let Some(v) = iter.next() {}while let 循环匹配
let Ok(v) = res else { return; };let-else 语法(不匹配则返回)
Result<T, E>结果类型(成功或错误)
Option<T>可空类型(Some/None)
fn foo() -> Result<T, E>返回 Result 便于错误传播
result?错误传播运算符(出错则提前返回)
#[derive(Debug, Clone, PartialEq)]自动派生 trait 实现
模块系统 7
use std::collections::HashMap;导入模块
use std::io::{self, Read};导入多个项(含重命名 self)
mod my_module;声明子模块(从文件加载)
pub fn foo() {}公开可见性
pub(crate) fn internal()仅 crate 内可见
pub use crate::utils::helper;重导出(re-export)
crate::module::func()绝对路径引用
提示
- cargo check 比 cargo build 快很多,日常开发用它检查编译错误。
- cargo clippy 是官方 lint 工具,建议加入 CI 流程。
- 发布前务必运行 cargo publish --dry-run 验证。
- 同一时间只能有一个可变引用或多个不可变引用,二者不可共存。
- ? 运算符只能在返回 Result 的函数中使用,自动将 Err 向上传播。
- 生命周期省略规则适用于常见模式,复杂场景需显式标注 lifetime 参数。
由 巧匠 维护
公开更新于 2026年7月21日,内容持续校对官方文档。