Linux如何安装使用Rust指南

目录

Rust是什么

系统级编程语言

设计目标

核心特点

[1. 内存安全(无垃圾回收)](#1. 内存安全(无垃圾回收))

[2. 所有权系统](#2. 所有权系统)

[3. fearless Concurrency(无畏并发)](#3. fearless Concurrency(无畏并发))

[4. 高性能](#4. 高性能)

[5. 丰富的类型系统和模式匹配](#5. 丰富的类型系统和模式匹配)

[6. 现代化的工具链](#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 的安全特性,编译器会确保我们处理了所有可能的错误情况,避免了运行时崩溃。

相关推荐
千百元6 小时前
centos怎么查看磁盘是机械还是固态
linux·运维·centos
LoneEon6 小时前
CentOS 7 系统安装教程
linux·运维·centos
2301_793167996 小时前
网络基础总结
运维·网络·hcia
ssswywywht6 小时前
搭建本地时间同步服务器
linux·运维·服务器
广商 小轩6 小时前
自动化实战 Playwright破解滑块验证码的完整实战指南
运维·自动化
你想考研啊6 小时前
自动化部署脚本
linux·服务器·自动化
超Pro7 小时前
MAC M芯片安装配置VMware+Ubuntu
linux·ubuntu
Gss7777 小时前
jenkins介绍与部署
运维·jenkins
熙xi.7 小时前
Linux I²C 总线驱动开发:从架构到实战的完整指南
linux·c语言·驱动开发