本教程专为 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 不是内部或外部命令」,是环境变量未自动生效,手动配置步骤:

  1. 右键「此电脑」→「属性」→「高级系统设置」→「环境变量」;
  2. 在「用户变量」的「Path」中,添加路径:C:\Users\你的用户名\.cargo\bin(替换“你的用户名”为实际名称,比如 C:\Users\ZhangSan\.cargo\bin);
  3. 关闭所有终端,重新打开后执行 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 步:

  1. 打开项目根目录的 Cargo.toml,在 [dependencies] 下添加库名和版本(版本号可从 crates.io 查询):
    [dependencies]
    rand = "0.8.5"  # 引入 rand 库(用于生成随机数,新手示例)
    
  2. 执行 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 结构体语法 | 状态:❌ 未完成

五、后续学习建议

  1. 巩固基础:先熟练 Cargo 命令和变量、函数、结构体语法,再学习「所有权深入」「引用与借用」(Rust 内存安全的核心);
  2. 扩展实战:给“待办工具”加功能(如删除待办、标记完成),或尝试写“计算器”“单词本”等小工具;
  3. 查文档:遇到问题先查 Rust 官方文档(有中文版),或 crates.io 找第三方库解决需求。
Logo

新一代开源开发者平台 GitCode,通过集成代码托管服务、代码仓库以及可信赖的开源组件库,让开发者可以在云端进行代码托管和开发。旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐