目录
[1. 内存安全(无垃圾回收)](#1. 内存安全(无垃圾回收))
[2. 所有权系统](#2. 所有权系统)
[3. fearless Concurrency(无畏并发)](#3. fearless Concurrency(无畏并发))
[4. 高性能](#4. 高性能)
[5. 丰富的类型系统和模式匹配](#5. 丰富的类型系统和模式匹配)
[6. 现代化的工具链](#6. 现代化的工具链)
Rust是什么
系统级编程语言
Rust 是一门专注于速度、内存安全和并行性的系统级编程语言。它由Mozilla研究院在2006年发起并开发,旨在创建一个能够替代C++的、更安全、更现代的语言。
设计目标
在保证C/C++级别的高性能和底层控制能力的同时,通过其独特的编译时所有权系统,从根本上解决内存管理和并发编程中的常见错误。
核心特点
1. 内存安全(无垃圾回收)
传统上,内存管理主要有两种方式:
手动管理(C/C++): 性能极高,但极易出现内存泄漏、悬空指针等问题。
垃圾回收(Java, Go, Python): 自动管理内存,减少了错误,但会在运行时带来性能开销和不确定性暂停。
Rust采取了第三种方式:通过一套在编译时强制执行的 "所有权系统" 来管理内存。编译器会在编译阶段就检查所有内存访问是否安全,如果代码违反了所有权规则,程序将无法通过编译。这意味着:
零成本抽象: 内存管理没有运行时开销。
无悬空指针、无缓冲区溢出、无内存泄漏(在安全代码中)。
2. 所有权系统
这是Rust的基石,由三个核心规则组成:
1.Rust中的每一个值都有一个被称为其所有者的变量。
2.值在任一时刻有且只有一个所有者。
3.当所有者(变量)离开作用域,这个值将被丢弃(内存被自动释放)。
为了实现所有权的灵活转移和共享,Rust还提供了 "借用" 和 "生命周期" 的概念,它们与所有权系统协同工作,确保数据的引用始终有效。
3. fearless Concurrency(无畏并发)
Rust的所有权系统同样适用于并发编程。编译器会阻止数据竞争的发生。数据竞争通常发生在:
1.两个或更多指针同时访问同一数据。
2.至少有一个指针被用来写入数据。
2.没有同步数据访问的机制。
Rust在编译时就能捕获这些问题,迫使开发者在编写并发代码时就必须处理好数据访问的同步与安全,从而写出更可靠的多线程程序。
4. 高性能
由于没有垃圾回收器和运行时,Rust的性能与C/C++在同一级别。它可以直接操作硬件,适合开发操作系统、游戏引擎、浏览器组件(如Firefox的Stylo引擎就是用Rust重写的)等对性能要求极高的领域。
5. 丰富的类型系统和模式匹配
Rust拥有强大而富有表现力的类型系统,并集成了功能强大的 match 模式匹配,能强制处理所有可能的情况,有效避免了空指针异常(在Rust中叫 Option<T> 类型)和其他常见的逻辑错误。
6. 现代化的工具链
Rust拥有一个非常出色的工具链,其中最著名的是 Cargo。
Cargo: 是Rust的构建系统和包管理器。它可以轻松地管理依赖、编译项目、运行测试和生成文档。
Rustfmt: 自动格式化工具,确保代码风格一致。
Clippy: 代码检查工具,能发现常见的错误和可优化的代码模式。
环境搭建
系统环境

安装过程
修改 ~/.bashrc
(Bash) 或 ~/.zshrc
(Zsh) 文件来添加常驻环境变量配置:
export RUSTUP_DIST_SERVER='https://mirror.xuanwu.openatom.cn'
export RUSTUP_UPDATE_ROOT='https://mirror.xuanwu.openatom.cn/rustup'
运行 source
命令使环境变量更改立即生效 (以 Bash shell 为例)。
source ~/.bashrc
运行以下命令获取并运行 rustup-init:
curl --proto '=https' --tlsv1.2 -sSf https://mirror.xuanwu.openatom.cn/rustup-init.sh | sh
按回车键 直接使用默认选项安装或输入 2
开始自定义安装
选项 | 说明 | 默认 |
---|---|---|
Default host triple | 目标平台架构 | (因平台而异) |
Default toolchain | 工具链版本 | stable |
Profile | 安装组件集 | default |
Modify PATH | 是否将 Rust 添加到系统 PATH | y |
验证安装
运行 source
命令使环境变量更改立即生效,并且验证是否安装成功
source ~/.bashrc
rustc --version
cargo --version
如果看到版本号输出,说明安装成功。
第一个程序经典时尚helloworld
前提
由于系统缺少 C 编译器(链接器)。Rust 需要系统工具链来链接最终的可执行文件。
yum groupinstall "Development Tools"
yum install gcc
创建新项目
cargo new hello_world
cd hello_world
运行程序
# 编译并运行
cargo run
# 只编译不运行
cargo build
# 编译发布版本(优化)
cargo build --release
运行成功

Cargo常见命令
# 构建项目
cargo build
# 构建发布版本
cargo build --release
# 运行项目
cargo run
# 运行特定二进制目标
cargo run --bin variables
# 检查代码(不生成可执行文件)
cargo check
# 运行测试
cargo test
# 生成文档
cargo doc --open
# 格式化代码
cargo fmt
# 代码检查
cargo clippy
# 更新依赖
cargo update
实用的一个项目
创建一个更实用的命令行工具 src/word_counter.rs
使用vim创建word_counter.rs
use std::fs;
//从 Rust 标准库中导入文件系统模块,让我们能够进行文件操作
fn main() {
let args: Vec<String> = std::env::args().collect();
if args.len() < 2 {
eprintln!("Usage: {} <filename>", args[0]);
std::process::exit(1);
}
let filename = &args[1];
// 读取文件
let content = match fs::read_to_string(filename) {
Ok(text) => text,
Err(e) => {
eprintln!("Error reading file {}: {}", filename, e);
std::process::exit(1);
}
};
// 统计信息
let lines = content.lines().count();
let words = content.split_whitespace().count();
let characters = content.chars().count();
let bytes = content.len();
println!("File: {}", filename);
println!("Lines: {}", lines);
println!("Words: {}", words);
println!("Characters: {}", characters);
println!("Bytes: {}", bytes);
}
将文件移动到正确位置
# 创建 bin 目录(如果不存在)
mkdir -p src/bin
# 移动文件到正确位置
mv word_counter.rs src/bin/
# 创建一个测试文件
echo "Hello Rust World!
This is a test file.
We are learning Rust programming." > test.txt
# 运行我们的单词计数工具
cargo run --bin word_counter test.txt
运行结果

项目结构

这个程序展示了 Rust 的安全特性,编译器会确保我们处理了所有可能的错误情况,避免了运行时崩溃。