当前位置: 首页 > news >正文

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 添加到系统 PATHy

验证安装

运行 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 的安全特性,编译器会确保我们处理了所有可能的错误情况,避免了运行时崩溃。

http://www.dtcms.com/a/515638.html

相关文章:

  • 田块处方图可视化(PyQt5)
  • Rust算法复杂度-大O分析
  • 2510rs,rust清单4
  • 大型网站开发考试移动商城的推广方法
  • FastAPI之 自动化的文档
  • 日常开发20251022,传统HTML表格实现图片+视频+预览
  • 标题:鸿蒙Next音频开发新篇章:深入解析Audio Kit(音频服务)
  • 湖滨区建设局网站app开发公司排行榜做软件的公司
  • UDP实现客服与客户的咨询对话
  • 学习HAL库STM32F103C8T6(实时时钟项目、WIFI天气预报项目)
  • npm、yarn、pnpm的对比和优略
  • 离散卷积,小demo(小波信号分析)
  • Java 大视界 -- Java 大数据在智能教育学习社区互动模式创新与用户活跃度提升中的应用(426)
  • 建设比较好网站服务器用来做网站和数据库
  • C# iText7与iTextSharp导出PDF对比
  • HARDWARE 属性的Bitmap与普通Bitmap,GPU与RenderThread渲染与处理方式异同比较,Android
  • 东营市做网站的公司h5学习教程
  • 不同类型的金融产品(如股票、期货、加密货币)双时间尺度优化的差异化调整
  • xtuoj Repeat One
  • ENSP Pro Lab笔记:配置STP/RSTP/MSTP(3)
  • **发散创新:模拟计算的高级应用与实现**随着科技的飞速发展,模拟计算已经成为了众多领域的核心工
  • EasyGBS如何在平安乡村搭建无线视频联网监控系统?
  • 上新!联软科技发布新一代LeagView平台,用微服务重塑终端安全
  • 【以太来袭】2. 节点设计与部署
  • 增加网站广告位建网站首页图片哪里找
  • Yolo分割数据集错误数据删除
  • Redis原理篇(一)数据结构
  • 1022作业
  • 北京商城型网站建设网上商城的意义
  • 《3D端游云原生日志:开放世界资源加载卡顿的实战与经验沉淀》