安装并创建项目
工具链概念
安装 Rust 实际上是安装一套工具链,包含三个核心组件:
| 组件 | 作用 |
|---|---|
rustup | 工具链管理器,负责安装/更新/切换 Rust 版本 |
rustc | Rust 编译器,将 .rs 源代码编译成可执行文件 |
cargo | 构建工具 + 包管理器,日常开发几乎只和它打交道 |
实际开发中你几乎不会直接调用
rustc,而是通过cargo来管理整个项目的编译、依赖和测试。
安装
Linux / macOS:
bash
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | shWindows:
- 前往 https://rustup.rs/ 下载并运行安装程序
- 安装完成后在终端执行
rustc --version验证安装成功
VSCode 扩展(推荐安装):
rust-analyzer:提供代码补全、类型推断、错误提示等功能,是 Rust 开发的必备扩展
创建项目
bash
cargo new hello_rust # 创建二进制项目(可执行程序)
cargo new mylib --lib # 创建库项目执行 cargo new hello_rust 后会生成以下结构:
hello_rust/
├── Cargo.toml # 项目配置文件(类似 package.json)
└── src/
└── main.rs # 程序入口Cargo.toml
toml
[package]
name = "hello_rust" # 项目名
version = "0.1.0" # 版本号
edition = "2024" # Rust 版本
[dependencies]
# 在这里添加依赖rust
fn main() {
// 打印 "Hello, world!" 到控制台
println!("Hello, world!");
}edition表示使用的 Rust 语法版本,目前是2024- 添加依赖推荐使用
cargo add <crate-name>命令,会自动写入此文件
cargo 常用命令
构建与运行
| 命令 | 说明 |
|---|---|
cargo run / cargo r | 编译并运行(Debug 模式) |
cargo run --release | 编译并运行(Release 模式,开启优化) |
cargo build | 仅编译,不运行 |
cargo build --release | 编译 Release 版本 |
cargo check | 只做语法检查,不生成可执行文件,速度更快 |
Debug 和 Release 的区别:
- Debug:编译快,包含调试信息,运行慢;开发阶段默认使用
- Release:编译慢,开启优化,运行快;发布时使用
开发时用
cargo run,发布时用cargo build --release。
依赖管理
| 命令 | 说明 |
|---|---|
cargo add <crate-name> | 添加依赖(自动写入 Cargo.toml,推荐使用) |
cargo update | 更新所有依赖到最新兼容版本 |
cargo tree | 查看依赖树,排查依赖冲突 |
代码质量
| 命令 | 说明 |
|---|---|
cargo fmt | 格式化代码(使用官方 rustfmt) |
cargo clippy | Lint 检查,给出代码质量建议(比编译器提示更丰富) |
cargo doc --open | 生成并在浏览器中打开项目文档 |
其他
| 命令 | 说明 |
|---|---|
cargo test | 运行单元测试 |
cargo clean | 清理构建产物(删除 target/ 目录) |
cargo publish | 发布到 crates.io |
cargo --help | 查看帮助信息 |
rustup 工具链管理
bash
rustup update # 更新到最新稳定版
rustup show # 查看已安装的工具链
rustup toolchain install nightly # 安装 nightly 版本
rustup target add wasm32-unknown-unknown # 添加编译目标(如 WebAssembly)cargo test 进阶
cargo test 命令的参数分为两部分,由 -- 分隔:
cargo test [Cargo参数] -- [测试程序参数]--左边的参数由 Cargo 处理(控制编译行为)--右边的参数由测试程序本身处理(控制运行行为)
常用命令对比
| 命令 | 说明 |
|---|---|
cargo test --lib | 仅运行库测试 |
cargo test -- --nocapture | 显示测试中的 print! 输出 |
cargo test -- --test-threads=1 | 单线程运行测试(避免并发干扰) |
cargo test --release -- --nocapture | Release 模式下运行并显示输出 |