跳到主要内容
极客日志极客日志面向AI+效率的开发者社区
首页博客我的书AI学习GitHub 精选镜像AI工具UI配色美学关于
搜索内容 / 工具 / 仓库 / 镜像...⌘K搜索
注册
博客列表
Rust

Rust 语言入门:从环境搭建到发布第一个 CLI 工具

Rust 语言入门指南涵盖核心价值分析、多平台环境搭建及国内镜像源配置。通过 Cargo 构建首个 CLI 工具,演示了编译、运行、测试、调试及发布至 crates.io 的全流程。重点解析了变量可变性、Result 类型处理、所有权机制及生命周期管理等新手易错点,并提供具体代码示例与避坑方案,帮助开发者快速掌握 Rust 基础开发技能。

PhpPioneer发布于 2026/2/8更新于 2026/10/24109 浏览
Rust 语言入门:从环境搭建到发布第一个 CLI 工具

第 1 篇:Rust 语言入门全攻略——从'为什么选 Rust'到写出第一个可发布的 Hello, Rust!

一、为什么要学习 Rust?——理解 Rust 的核心价值与应用场景

1.1 新手最关心的三个问题

作为接触过大量刚入门或想转 Rust 的开发者,他们问得最多的三个问题是:

  1. Rust 难学吗?
    💡 客观讲,Rust 有一定学习门槛(主要是内存安全机制和所有权系统),但只要遵循循序渐进的学习路径,有其他语言基础(哪怕是 Python 这种非系统语言),通常 1-2 个月就能上手开发简单项目,3-6 个月能熟练写生产级代码。
  2. Rust 适合做什么?
    ✅ 系统级开发:操作系统内核(如 Redox)、驱动程序、嵌入式系统(ESP32/STM32 等支持 Rust)
    ✅ 网络编程:高性能服务器(如 Tokio 框架的异步服务器)、区块链(如 Solana)
    ✅ 工具开发:Docker Desktop、GitLab CI Runner、GitHub Copilot 的后端引擎
    ✅ WebAssembly:前端性能瓶颈优化(如 Yew/Tauri 框架开发桌面 Web 混合应用)
  3. Rust 比 C/C++ 好在哪?
    🚀 内存安全:通过所有权、借用、生命周期三大核心机制,在编译期就杜绝了空指针、野指针、内存泄漏等 C/C++ 常见的安全问题,无需 GC(垃圾回收)
    🚀 高性能:与 C/C++ 旗鼓相当,无运行时开销
    🚀 生态系统:Cargo 包管理工具非常强大,crates.io(Rust 的 PyPI)有超过 150 万个开源库
    🚀 语法现代化:支持模式匹配、泛型、异步编程、迭代器等现代语言特性
1.2 真实案例:Rust 在生产环境中的应用

📝 案例 1:Microsoft Azure 用 Rust 重构 Sway 防火墙
Microsoft Azure 的 Sway 防火墙原来用 C++ 开发,存在大量安全漏洞和内存泄漏问题。2021 年,Azure 团队用 Rust 重构了核心模块,安全漏洞减少了 90%,性能提升了 20%。

📝 案例 2:Cloudflare 用 Rust 开发 Wrangler CLI 工具
Cloudflare Workers 的官方 CLI 工具 Wrangler,原来用 Node.js 开发,下载依赖慢、启动时间长。2022 年,Cloudflare 团队用 Rust 重构了 Wrangler,启动时间从 30 秒缩短到 1 秒,下载依赖速度提升了 5 倍。

二、Rust 开发环境搭建全流程——Windows/macOS/Linux 通用方案

2.1 统一安装工具:rustup

💡 rustup 是 Rust 官方唯一推荐的安装工具,它可以:

  • 安装和管理多个 Rust 版本(如稳定版、测试版、nightly 版)
  • 安装和管理不同的工具链(如 x86_64-unknown-linux-gnu、wasm32-unknown-unknown)
  • 配置 Rust 的环境变量和镜像源
2.1.1 Windows 安装

⚠️ 注意:Windows 用户需要先安装 Visual Studio Build Tools(C++ 编译器),否则无法编译 Rust 程序。

  1. 访问 Rust 官方网站:https://www.rust-lang.org/zh-CN/
  2. 点击'下载 Rust 安装程序',选择'Windows (64-bit)'
  3. 运行下载的 rustup-init.exe,选择默认选项(按 1 键)

安装完成后,验证安装:
打开 PowerShell 或命令提示符,输入以下命令:

rustc --version
cargo --version

✅ 成功标志:显示 rustc 1.78.0 (9b00956e5 2024-04-29) 和 cargo 1.78.0 (54d8815d0 2023-03-26) 类似的版本信息

2.1.2 macOS 安装
  1. 打开终端(Terminal)
  2. 输入以下命令下载并运行 rustup 安装脚本:
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
  1. 按 1 键选择默认选项

验证安装:

rustc --version
cargo --version
2.1.3 Linux 安装(以 Ubuntu/Debian 为例)
  1. 打开终端
  2. 更新系统软件源并安装依赖:
sudo apt update && sudo apt install -y build-essential curl git
  1. 下载并运行 rustup 安装脚本:
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh

验证安装:

rustc --version
cargo --version
2.2 配置国内镜像源——加速依赖下载

⚠️ 警告:由于网络原因,直接从 crates.io 下载依赖可能会非常慢,甚至失败。建议配置国内镜像源。

  1. 创建或编辑 ~/.cargo/config.toml 文件(Windows 用户路径是 C:\Users\你的用户名\.cargo\config.toml)
  2. 保存并退出

输入以下内容:

[source.crates-io]
replace-with = 'ustc'
[source.ustc]
registry = "git://mirrors.ustc.edu.cn/crates.io-index"
# 如果 git 协议访问慢,可以尝试 https 协议
# registry = "https://mirrors.ustc.edu.cn/crates.io-index"
2.3 配置开发工具

推荐使用VS Code作为 Rust 开发 IDE,因为它有非常强大的 Rust 插件支持。

2.3.1 安装 VS Code

访问 VS Code 官方网站:https://code.visualstudio.com/,下载并安装对应系统的版本。

2.3.2 安装 Rust 相关插件

打开 VS Code,点击左侧的插件图标(Extensions),搜索并安装以下插件:

  1. Rust Analyzer:由 Rust 官方团队主导开发,提供代码补全、语法检查、定义跳转、重构等核心功能
  2. CodeLLDB:用于 Rust 程序的调试
  3. Cargo:Cargo 命令的集成支持
  4. Even Better TOML:用于格式化 Cargo.toml 等 TOML 配置文件

三、第一个 Rust 项目:从 Hello, World!到可发布的 CLI 工具

3.1 使用 Cargo 创建标准项目

⌨️ 操作步骤:

  1. 打开终端(或 VS Code 的终端)
  2. 进入你想存放项目的目录,比如 ~/projects
  3. 进入项目目录:
cd hello_rust_cli
  1. 输入以下命令创建项目:
cargo new hello_rust_cli
3.2 项目目录结构解析

📊 项目目录结构:

hello_rust_cli/
├── Cargo.lock # 项目依赖的精确版本锁定文件(自动生成,不要手动修改)
├── Cargo.toml # 项目配置文件(手动编辑)
└── src/
    └── main.rs # 主源码文件(入口函数所在位置)
3.2.1 Cargo.toml 内容解析
[package]
name = "hello_rust_cli" # 项目名称(必须符合 Rust 的命名规范:小写字母 + 下划线)
version = "0.1.0" # 项目版本(遵循语义化版本控制:MAJOR.MINOR.PATCH)
edition = "2021" # Rust 的版本(目前最新稳定版是 2021)
[dependencies] # 项目依赖的库(可以手动添加,也可以用 cargo add 命令)
3.2.2 src/main.rs 内容解析
// src/main.rs - Hello, Rust! 的标准写法
fn main() {
    println!("Hello, Rust World!");
}
  • fn main():Rust 程序的入口函数,Rust 会自动执行这个函数
  • println!():Rust 的宏(不是函数,注意后面的感叹号),用于向控制台输出内容
3.3 编译、运行、测试项目
3.3.1 编译项目
cargo build # 编译为 debug 版本(默认,用于开发和调试)
cargo build --release # 编译为 release 版本(优化后的,用于生产环境)

✅ 成功标志:编译完成后,会在 target/debug/ 或 target/release/ 目录下生成可执行文件。

3.3.2 运行项目
cargo run # 同时完成编译和运行 debug 版本
cargo run --release # 同时完成编译和运行 release 版本

✅ 成功标志:输出 Hello, Rust World!。

3.3.3 测试项目

Rust 的测试功能非常强大,我们可以在 src/main.rs 中添加测试代码,也可以创建专门的测试文件。
⌨️ 测试代码示例:
在 src/main.rs 的末尾添加以下代码:

#[cfg(test)]
mod tests {
    #[test]
    fn test_hello_world() {
        assert_eq!(1 + 1, 2); // 简单的测试断言
    }
}

运行测试:

cargo test # 运行所有测试

✅ 成功标志:显示 test tests::test_hello_world ... ok。

3.4 扩展项目:添加命令行参数支持

现在,我们要将 Hello, Rust! 扩展为一个支持命令行参数的 CLI 工具,比如:

cargo run -- --name "张三"

输出:Hello, 张三!

⌨️ 操作步骤:

修改 src/main.rs:

use clap::Parser;

/// 一个简单的 Hello, Rust! CLI 工具
#[derive(Parser, Debug)]
#[command(author, version, about, long_about = None)]
struct Args {
    /// 你的名字
    #[arg(short, long)]
    name: String,
}

fn main() {
    let args = Args::parse();
    println!("Hello, {}!", args.name);
}

添加依赖:我们需要使用 clap 库来处理命令行参数

cargo add clap --features derive

运行扩展后的项目:

cargo run -- --name "张三"

✅ 成功标志:输出 Hello, 张三!。

3.5 调试项目

我们可以使用 VS Code 的 CodeLLDB 插件来调试 Rust 程序。
⌨️ 操作步骤:

  1. 在 VS Code 中打开项目
  2. 在 src/main.rs 的 println!() 一行设置断点(点击行号左侧的空白处)
  3. 点击左侧的运行图标(Run and Debug)
  4. 点击'创建 launch.json 文件',选择'LLDB: Launch'
  5. 点击'运行'按钮
  6. 程序会在断点处停止,我们可以查看变量值、调用栈等信息

修改 launch.json 文件:

{
  "version": "0.2.0",
  "configurations": [
    {
      "name": "(lldb) Launch",
      "type": "lldb",
      "request": "launch",
      "program": "${workspaceFolder}/target/debug/hello_rust_cli",
      "args": ["--name", "张三"],
      "cwd": "${workspaceFolder}",
      "preLaunchTask": "cargo build"
    }
  ]
}
3.6 发布项目

我们可以使用 Cargo 将项目发布到 crates.io 上,供其他开发者使用。
⚠️ 注意:发布项目之前,你需要先在 crates.io 上注册账号,并配置 API 密钥。
⌨️ 操作步骤:

  1. 在 crates.io 上注册账号:https://crates.io/users/sign_up

发布项目:

cargo publish

✅ 成功标志:显示 Updating crates.io index 和 Published hello_rust_cli v0.1.0。

创建 README.md 文件:

# hello_rust_cli

一个简单的 Hello, Rust! CLI 工具。

## 安装

```bash
cargo install hello_rust_cli

使用

hello_rust_cli --name "张三"

输出:Hello, 张三!

许可证

MIT


修改 Cargo.toml 文件:  
添加作者、描述、仓库地址等信息:

```toml
[package]
name = "hello_rust_cli"
version = "0.1.0"
edition = "2021"
authors = ["你的名字 <你的邮箱>"]
description = "一个简单的 Hello, Rust! CLI 工具"
repository = "https://github.com/你的用户名/hello_rust_cli"
readme = "README.md"
license = "MIT"
[dependencies]
clap = { version = "4.5.4", features = ["derive"] }

配置 API 密钥:
在终端中输入以下命令:

cargo login

然后输入你在 crates.io 上获得的 API 密钥。

四、Rust 新手常见陷阱与避坑指南

4.1 混淆变量的可变性与不可变性

⚠️ 陷阱:在 Rust 中,变量默认是不可变的(immutable),如果你尝试修改一个不可变变量,会导致编译错误。
⌨️ 错误示例:

fn main() {
    let x = 5;
    x = 6; // 编译错误:x is declared as immutable
}

✅ 避坑方法:如果你需要修改一个变量,必须在声明时添加 mut 关键字:

fn main() {
    let mut x = 5;
    x = 6;
    println!("x = {}", x); // 输出 x = 6
}
4.2 忘记处理 Result 类型

⚠️ 陷阱:Rust 中的很多函数会返回 Result 类型,它表示操作成功或失败。如果你忘记处理 Result 类型,会导致编译错误。
⌨️ 错误示例:

use std::fs::File;
fn main() {
    let file = File::open("test.txt"); // 返回 Result<File, io::Error>
}

✅ 避坑方法:有三种方法处理 Result 类型:

使用 ? 运算符:

use std::fs::File;
use std::io;
fn read_file() -> io::Result<()> {
    let _file = File::open("test.txt")?;
    Ok(())
}
fn main() {
    if let Err(e) = read_file() {
        println!("文件操作失败:{}", e);
    }
}

使用 if let 表达式:

use std::fs::File;
fn main() {
    if let Ok(f) = File::open("test.txt") {
        println!("文件打开成功");
    } else {
        println!("文件打开失败");
    }
}

使用 match 表达式:

use std::fs::File;
use std::io::ErrorKind;
fn main() {
    let file = File::open("test.txt");
    match file {
        Ok(f) => println!("文件打开成功"),
        Err(e) => match e.kind() {
            ErrorKind::NotFound => println!("文件不存在"),
            _ => println!("文件打开失败:{}", e),
        },
    }
}
4.3 混淆引用与所有权

⚠️ 陷阱:Rust 的所有权系统是它最核心的内存安全机制,也是最容易让新手困惑的地方。简单来说,每个值都有且仅有一个所有者,当所有者离开作用域时,值会被自动释放。
⌨️ 错误示例:

fn main() {
    let s = String::from("hello");
    takes_ownership(s); // s 的所有权转移到 takes_ownership 函数
    println!("{}", s); // 编译错误:s 已经没有所有权了
}
fn takes_ownership(s: String) {
    println!("{}", s);
}

✅ 避坑方法:如果我们不想转移所有权,可以使用引用(reference):

fn main() {
    let s = String::from("hello");
    borrows_ownership(&s); // 传递 s 的引用
    println!("{}", s); // 编译成功:s 的所有权还在
}
fn borrows_ownership(s: &String) {
    println!("{}", s);
}
4.4 忘记处理生命周期

⚠️ 陷阱:Rust 的生命周期系统用于确保引用的有效性,防止出现悬垂引用。如果我们忘记处理生命周期,会导致编译错误。
⌨️ 错误示例:

fn main() {
    let r;
    {
        let x = 5;
        r = &x; // 编译错误:x 的生命周期比 r 短
    }
    println!("{}", r);
}

✅ 避坑方法:确保引用的生命周期不超过所有者的生命周期:

fn main() {
    let x = 5;
    let r = &x;
    println!("{}", r);
}

五、总结与展望

5.1 总结

✅ 完成了 Rust 开发环境的完整搭建(Windows/macOS/Linux),配置了国内镜像源加速依赖下载
✅ 理解了 Cargo 作为 Rust 标准构建系统和包管理器的核心功能
✅ 成功创建了第一个 Rust 项目 Hello, Rust!,并将其扩展为支持命令行参数的 CLI 工具
✅ 掌握了 Rust 程序的编译、运行、测试、调试、发布流程
✅ 了解了 Rust 新手常见的陷阱与避坑方法

5.2 展望

下一篇文章,我们将深入学习 Rust 的基本数据类型和变量系统,包括:

  • 标量类型(整数、浮点数、布尔值、字符)
  • 复合类型(元组、数组、切片)
  • 字符串类型(String 和&str)
  • 变量的作用域和 shadowing(变量隐藏)
  • 类型转换

通过学习这些内容,我们将能够编写更复杂的 Rust 程序。

目录

  1. 第 1 篇:Rust 语言入门全攻略——从“为什么选 Rust”到写出第一个可发布的 Hello, Rust!
  2. 一、为什么要学习 Rust?——理解 Rust 的核心价值与应用场景
  3. 1.1 新手最关心的三个问题
  4. 1.2 真实案例:Rust 在生产环境中的应用
  5. 二、Rust 开发环境搭建全流程——Windows/macOS/Linux 通用方案
  6. 2.1 统一安装工具:rustup
  7. 2.1.1 Windows 安装
  8. 2.1.2 macOS 安装
  9. 2.1.3 Linux 安装(以 Ubuntu/Debian 为例)
  10. 2.2 配置国内镜像源——加速依赖下载
  11. 如果 git 协议访问慢,可以尝试 https 协议
  12. registry = "https://mirrors.ustc.edu.cn/crates.io-index"
  13. 2.3 配置开发工具
  14. 2.3.1 安装 VS Code
  15. 2.3.2 安装 Rust 相关插件
  16. 三、第一个 Rust 项目:从 Hello, World!到可发布的 CLI 工具
  17. 3.1 使用 Cargo 创建标准项目
  18. 3.2 项目目录结构解析
  19. 3.2.1 Cargo.toml 内容解析
  20. 3.2.2 src/main.rs 内容解析
  21. 3.3 编译、运行、测试项目
  22. 3.3.1 编译项目
  23. 3.3.2 运行项目
  24. 3.3.3 测试项目
  25. 3.4 扩展项目:添加命令行参数支持
  26. 3.5 调试项目
  27. 3.6 发布项目
  28. hellorustcli
  29. 安装
  30. 使用
  31. 许可证
  32. 四、Rust 新手常见陷阱与避坑指南
  33. 4.1 混淆变量的可变性与不可变性
  34. 4.2 忘记处理 Result 类型
  35. 4.3 混淆引用与所有权
  36. 4.4 忘记处理生命周期
  37. 五、总结与展望
  38. 5.1 总结
  39. 5.2 展望

更多推荐文章

查看全部
  • AI 辅助下的多链 imToken 钱包架构设计与安全实践
  • Java 基础面试考点精讲
  • 渗透测试流程详解:从信息收集到内网渗透实战指南
  • Python 脚本打包成 EXE 的 6 种主流方案对比与选型指南
  • Docker 安装部署全流程使用指南(Linux 通用版)
  • Spring Web MVC 核心原理与实战应用
  • Mac 开发者指南:从零搭建 VSCode + Git + 阿里云效环境
  • 31 岁转行软件测试:一位 34 岁从业者的经历与感悟
  • 渐进式 AIGC 系统:多模态大模型与 Agent 智能体私有化部署方案
  • AI 大模型通信机制:流式传输与数据封装逻辑
  • Java 类与对象初探:从定义到实例化
  • AI 产品经理如何拥抱大模型时代:生态、应用与职业路径
  • 豆包 AI 视频去水印方法及工具推荐
  • Go 语言工程师如何进阶为云原生高级开发工程师
  • AI 产品经理转型指南:角色职责与学习路径
  • Java Stream API 并行流中的副作用陷阱与顺序敏感操作
  • 鸿蒙 Flutter 智能家居应用开发实战指南
  • 开源大模型 MGeo 实现高精度地址对齐
  • OpenClaw 安装配置与多平台接入实战
  • ARINC 429 航空总线协议原理与实现

相关免费在线工具

  • Base64 字符串编码/解码

    将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online

  • Base64 文件转换器

    将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online

  • Markdown转HTML

    将 Markdown(GFM)转为 HTML 片段,浏览器内 marked 解析;与 HTML转Markdown 互为补充。 在线工具,Markdown转HTML在线工具,online

  • HTML转Markdown

    将 HTML 片段转为 GitHub Flavored Markdown,支持标题、列表、链接、代码块与表格等;浏览器内处理,可链接预填。 在线工具,HTML转Markdown在线工具,online

  • JSON 压缩

    通过删除不必要的空白来缩小和压缩JSON。 在线工具,JSON 压缩在线工具,online

  • JSON美化和格式化

    将JSON字符串修饰为友好的可读格式。 在线工具,JSON美化和格式化在线工具,online