Linux如何安装使用Rust指南
目录
Rust是什么
系统级编程语言
设计目标
核心特点
1. 内存安全(无垃圾回收)
2. 所有权系统
3. fearless Concurrency(无畏并发)
4. 高性能
5. 丰富的类型系统和模式匹配
6. 现代化的工具链
环境搭建
系统环境
安装过程
验证安装
第一个程序经典时尚helloworld
前提
创建新项目
运行程序
Cargo常见命令
实用的一个项目
运行结果
项目结构
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 的安全特性,编译器会确保我们处理了所有可能的错误情况,避免了运行时崩溃。