Rust 入门级基础教程:从环境搭建到 Cargo 实战
本教程专为 Rust 零基础新手设计,聚焦「环境搭建(全系统覆盖)、核心语法(新手必学)、Cargo 工具链(项目管理)」三大核心模块,每个知识点都配「step-by-step 操作+代码示例+验证方法」,跟着做就能快速上手 Rust 基础开发。
一、环境搭建:3分钟搞定全系统(避坑版)
Rust 官方提供 rustup 工具,可一键管理版本和环境,不同系统操作差异小,新手只需按步骤执行即可。
1. 各系统安装步骤
| 系统类型 | 安装操作 | 验证方法 |
|---|---|---|
| Windows | 1. 打开 Rust 官网 下载 rustup-init.exe 2. 双击运行,按提示输入 1(默认安装,无需手动配置) |
打开 cmd/PowerShell,输入 rustc --version,显示 rustc x.y.z (abcdefg yyyy-mm-dd) 即成功 |
| macOS/Linux | 打开终端,直接输入命令: `curl --proto ‘=https’ --tlsv1.2 -sSf https://sh.rustup.rs |
sh<br> 按提示输入1` 确认安装 |
2. 新手必踩坑:Windows 环境变量配置
若安装后提示「rustc 不是内部或外部命令」,是环境变量未自动生效,手动配置步骤:
- 右键「此电脑」→「属性」→「高级系统设置」→「环境变量」;
- 在「用户变量」的「Path」中,添加路径:
C:\Users\你的用户名\.cargo\bin(替换“你的用户名”为实际名称,比如C:\Users\ZhangSan\.cargo\bin); - 关闭所有终端,重新打开后执行
rustc --version,即可正常显示版本。
3. 版本管理(备用操作)
- 更新 Rust:终端输入
rustup update(保持版本最新,避免语法兼容问题); - 卸载 Rust:终端输入
rustup self uninstall(按需执行,无需确认即可卸载干净)。
二、Cargo 工具链:Rust 项目管理“神器”
Cargo 是 Rust 官方自带的「项目创建+编译+依赖管理」工具,新手只需掌握 5 个核心命令,就能搞定 90% 基础开发场景。
1. 命令1:创建项目(二进制/库项目)
Rust 项目分两种类型,新手先从「二进制项目」(可直接运行的程序,如控制台工具)入手:
# 创建二进制项目(默认,推荐新手)
cargo new rust-demo # 项目名:rust-demo,会自动生成标准目录结构
# 创建库项目(后续写工具库时用,暂不涉及)
# cargo new rust-lib --lib
创建后项目目录结构(重点关注 3 个核心文件):
rust-demo/
├── Cargo.toml # 项目配置文件(管理依赖、项目名称、版本)
├── Cargo.lock # 依赖版本锁定文件(自动生成,不要手动修改)
└── src/ # 源代码目录(所有代码放这里)
└── main.rs # 主程序入口(二进制项目默认有 Hello World 代码)
2. 命令2:编译+运行(一步到位)
进入项目目录后,无需手动调用 rustc 编译,Cargo 可一键完成「编译+运行」:
# 进入项目目录(替换为你的项目名)
cd rust-demo
# 编译并运行项目
cargo run
首次运行会看到输出:Hello, world!——这代表你的第一个 Rust 项目成功跑通!
3. 命令3:仅编译(不运行)
若只需生成可执行文件(比如后续部署),用 cargo build 仅编译:
# 编译开发版本(默认,速度快,适合调试)
cargo build
# 编译发布版本(优化性能,体积小,适合交付,速度较慢)
# cargo build --release
编译后的可执行文件路径:
- 开发版本:
target/debug/rust-demo.exe(Windows)或target/debug/rust-demo(macOS/Linux); - 发布版本:
target/release/rust-demo.exe(性能比开发版本高 20%-50%)。
4. 命令4:添加依赖(引入第三方库)
Rust 生态的第三方库都托管在 crates.io(类似 Python 的 PyPI),用 Cargo 添加依赖只需 2 步:
- 打开项目根目录的
Cargo.toml,在[dependencies]下添加库名和版本(版本号可从 crates.io 查询):[dependencies] rand = "0.8.5" # 引入 rand 库(用于生成随机数,新手示例) - 执行
cargo run,Cargo 会自动下载依赖并编译,无需手动安装。
5. 命令5:检查代码(快速排错)
写代码时想快速验证语法是否正确,不用完整编译,用 cargo check(速度比 cargo build 快 5-10 倍):
cargo check
- 无输出 → 语法无错;
- 有错误 → 会提示具体行号和原因(比如“变量未使用”“语法错误”)。
三、语法入门:新手必学 4 个核心知识点
Rust 语法有“内存安全”的独特设计(如所有权),但新手只需先掌握以下 4 个核心知识点,就能写简单程序。
1. 知识点1:变量(不可变/可变+所有权基础)
Rust 变量默认不可变(保证内存安全的核心设计),若要修改需加 mut 关键字;“所有权”是 Rust 的特色,新手先记住“一个值同一时间只有一个所有者”的基础规则。
// src/main.rs 中替换代码,执行 cargo run 查看效果
fn main() {
// 1. 不可变变量(默认):值不能修改
let x = 5;
println!("不可变变量 x:{}", x); // 输出:不可变变量 x:5
// x = 6; // 报错!不可变变量不能修改,去掉注释会触发编译错误
// 2. 可变变量:加 mut 关键字,值可修改
let mut y = 10;
println!("修改前 y:{}", y); // 输出:修改前 y:10
y = 20;
println!("修改后 y:{}", y); // 输出:修改后 y:20
// 3. 所有权基础:x_str 的所有权转移给 z_str 后,x_str 不能再用
let x_str = String::from("Hello Rust"); // String 类型(堆上存储,有所有权)
let z_str = x_str; // 所有权转移:x_str 失效,z_str 成为新所有者
// println!("x_str:{}", x_str); // 报错!x_str 已无所有权,去掉注释会出错
println!("z_str:{}", z_str); // 输出:z_str:Hello Rust
}
2. 知识点2:函数(定义+调用)
Rust 函数用 fn 定义,语法简洁,参数和返回值类型必须显式声明(新手容易忽略的点)。
// 定义函数:计算两个整数的和(参数 a/b 是 i32 类型,返回值也是 i32 类型)
fn add(a: i32, b: i32) -> i32 {
a + b // Rust 函数最后一行表达式无需加 return,表达式结果即返回值
}
fn main() {
// 调用函数,接收返回值
let sum = add(3, 5);
println!("3 + 5 = {}", sum); // 输出:3 + 5 = 8
// 无返回值的函数(返回值类型可省略,或写 ())
fn print_hello() {
println!("Hello Rust Function!");
}
print_hello(); // 输出:Hello Rust Function!
}
3. 知识点3:控制流(if-else + for 循环)
Rust 控制流语法贴近主流语言,重点注意「if 条件无需加括号」「for 循环更适合遍历集合」。
fn main() {
// 1. if-else 分支(条件表达式无需加括号)
let age = 18;
if age >= 18 {
println!("已成年");
} else if age >= 12 {
println!("青少年");
} else {
println!("未成年");
} // 输出:已成年
// 2. for 循环(遍历集合,新手最常用)
let numbers = [1, 2, 3, 4, 5]; // 数组
println!("遍历数组:");
for num in numbers {
println!("数字:{}", num); // 依次输出 1-5
}
// 3. for 循环遍历范围(用 .. 表示左闭右开区间)
println!("遍历 1-3:");
for i in 1..4 {
println!("i = {}", i); // 输出 1、2、3
}
}
4. 知识点4:结构体(自定义数据类型)
当需要组合多个数据(如“用户”包含姓名、年龄、邮箱)时,用 struct 定义结构体,方便管理复杂数据。
// 定义结构体:User(代表用户)
struct User {
name: String, // 姓名(String 类型,支持变长字符串)
age: u32, // 年龄(u32:无符号 32 位整数,非负)
email: String, // 邮箱
}
fn main() {
// 1. 创建结构体实例(顺序无需和定义一致,但字段名必须匹配)
let mut user1 = User {
name: String::from("小明"),
age: 22,
email: String::from("xiaoming@example.com"),
};
// 2. 修改结构体字段(需实例加 mut 可变)
user1.age = 23; // 修改年龄
user1.email = String::from("xiaoming_new@example.com"); // 修改邮箱
// 3. 访问结构体字段并打印
println!("用户名:{},年龄:{},邮箱:{}",
user1.name, user1.age, user1.email);
// 输出:用户名:小明,年龄:23,邮箱:xiaoming_new@example.com
}
四、综合实战:用 Cargo 写一个“待办事项”小工具
结合前面的知识点,我们用 Cargo 写一个简单的“待办事项列表”工具,功能:添加待办、展示待办,巩固环境、Cargo 和语法基础。
1. 步骤1:创建项目
cargo new rust-todo # 创建项目
cd rust-todo # 进入项目目录
2. 步骤2:编写代码(替换 src/main.rs)
// 定义待办事项结构体
struct Todo {
id: u32, // 待办ID(唯一标识)
content: String, // 待办内容
done: bool, // 是否完成(true=完成,false=未完成)
}
fn main() {
// 创建待办列表(用 Vec 动态数组存储,支持添加元素)
let mut todos: Vec<Todo> = Vec::new();
// 1. 添加 3 个待办事项
todos.push(Todo {
id: 1,
content: String::from("学习 Rust 环境搭建"),
done: true, // 已完成
});
todos.push(Todo {
id: 2,
content: String::from("掌握 Cargo 核心命令"),
done: true,
});
todos.push(Todo {
id: 3,
content: String::from("学习 Rust 结构体语法"),
done: false, // 未完成
});
// 2. 展示所有待办事项
println!("=== 我的待办事项列表 ===");
for todo in todos {
// 根据 done 状态显示不同图标
let status = if todo.done { "✅ 已完成" } else { "❌ 未完成" };
println!("ID:{} | 内容:{} | 状态:{}",
todo.id, todo.content, status);
}
}
3. 步骤3:运行程序
cargo run
最终输出结果:
=== 我的待办事项列表 ===
ID:1 | 内容:学习 Rust 环境搭建 | 状态:✅ 已完成
ID:2 | 内容:掌握 Cargo 核心命令 | 状态:✅ 已完成
ID:3 | 内容:学习 Rust 结构体语法 | 状态:❌ 未完成
五、后续学习建议
新一代开源开发者平台 GitCode,通过集成代码托管服务、代码仓库以及可信赖的开源组件库,让开发者可以在云端进行代码托管和开发。旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。
更多推荐


所有评论(0)