极速上手:Windows环境下Rust安装全攻略
1、Rust简介
Rust 是一种系统编程语言,由 Mozilla 研究院于 2010 年首次发布。它以安全性、并发性和高性能为核心设计目标,旨在提供类似于 C 和 C++ 的性能,同时避免这些语言中常见的内存安全问题(如空指针解引用、缓冲区溢出等)。Rust 通过其独特的所有权模型(Ownership Model)和借用检查器(Borrow Checker)在编译期强制执行内存安全,无需依赖垃圾回收机制。
Rust 的语法灵感来源于多种语言,包括 C++、Haskell 和 OCaml,具有现代化的开发体验,同时支持零成本抽象(Zero-Cost Abstractions),使得开发者可以在保持高性能的同时编写简洁易读的代码。
1.1、Rust能干什么?
Rust 的多功能性使其能够胜任多种任务,主要包括:
- 系统编程:开发操作系统内核、设备驱动程序、嵌入式系统等。
- Web 后端开发:构建高性能的 Web 服务器和 API 服务。
- 网络编程:实现低延迟、高吞吐量的网络应用。
- 数据处理与科学计算:处理大规模数据集或进行复杂的数学计算。
- 游戏开发:用于开发游戏引擎或其他高性能组件。
- 区块链开发:因其高效和安全的特性,广泛应用于智能合约和区块链框架。
应用场景:
- 系统软件开发:如操作系统、文件系统、虚拟机等。
- 云计算与分布式系统:构建可靠的分布式服务和微服务架构。
- 嵌入式开发:适用于资源受限的硬件环境。
- 工具链开发:如编译器、调试器和其他开发工具。
- WebAssembly:使用 Rust编写高效的前端逻辑。
- 数据库:如 TiKV、Sled 等高性能数据库的实现。
- 机器学习与人工智能:支持 TensorFlow 和 PyTorch 的扩展模块。
1.2、Rust优缺点
优点:
- 内存安全:通过所有权模型和严格编译时检查,避免了常见的内存错误。
- 高性能:接近 C/C++ 的运行效率,没有运行时开销。
- 并发友好:内置的线程安全机制使得多线程编程更加简单可靠。
- 现代化的工具链:Cargo(包管理器和构建工具)极大提升了开发体验。
- 跨平台支持:支持多种操作系统和硬件架构。
- 活跃的社区:拥有快速成长的开源生态系统。
缺点:
- 学习曲线陡峭:所有权和生命周期的概念对初学者来说较难掌握。
- 编译时间较长:相比其他语言,Rust 的编译速度相对较慢。
- 生态系统尚不完善:尽管增长迅速,但某些领域的库仍不如成熟语言丰富。
1.3、哪些公司在使用Rust
- Mozilla:用 Rust 开发了下一代浏览器引擎 Servo,以及 Firefox 浏览器的部分组件。
- 微软(Microsoft):在 Windows 操作系统的部分组件中引入 Rust,以提高安全性。使用 Rust 替代部分 C++代码,减少潜在的安全漏洞。
- 亚马逊 (Amazon):AWS Lambda 的新运行时 Firecracker 基于 Rust
构建,用于轻量级虚拟机管理。使用 Rust 开发云基础设施相关服务。
- 谷歌 (Google):Fuchsia OS 部分模块使用 Rust实现。探索将 Rust 引入 Android 系统的关键组件。
- Facebook / Meta:使用 Rust 开发 Libra(现为Diem)区块链项目。优化内部工具和服务。
- Dropbox:核心文件同步引擎从 Python 迁移到 Rust,显著提升了性能。
- Cloudflare:使用 Rust 构建高性能的边缘计算服务和防火墙规则引擎。
- 华为:将 Rust 应用于嵌入式设备和通信协议栈开发。
1.4、前景
随着对软件安全性需求的不断增加,Rust 正逐渐成为系统编程领域的首选语言之一。尤其是在需要兼顾性能和安全性的场景下,Rust 展现出了巨大的潜力。无论是传统的系统开发还是新兴的区块链、AI 领域,Rust 都有广阔的应用前景。
总结来说,Rust 是一种兼具现代特性和底层控制能力的语言,适合那些希望突破传统语言局限并追求极致性能与安全性的开发者。
2、安装Rust
Rust默认使用的是C语言环境,也就是Visual Studio,当我们直接点击rustup-init.exe文件进行安装时,Visual Studio会默认安装到我们的C盘,会占用大量的C盘空间。
所以,我们需要采用轻量级的依赖包:mingw64。
2.1、编译环境准备
直接访问GitHub进行下载,访问不了的可以选择翻墙😁。地址如下:https://github.com/niXman/mingw-builds-binaries/releases。
- x86_64表示压缩包适用于64位的x86处理器架构。
- posix:适用于符合POSIX标准的操作系统,如Linux、UNIX等;win32:适用于Windows操作系统。
- seh:压缩包使用结构化异常处理(Structured Exception Handling)来处理异常。
- msvcrt:MSVCRT是Microsoft Visual C++编译器的旧版运行时库,用于支持在Windows系统上使用Visual C++编译的程序。它提供了许多标准C库函数和C++运行时函数的实现,用于支持程序的运行和调试。MSVCRT通常与早期的Visual C++版本(如Visual Studio 2010及更早版本)相关联。
- ucrt:UCRT是自Windows 10起引入的新一代运行时库,旨在提供更好的兼容性和性能。UCRT是一个通用的C运行时库,用于支持使用C语言编译的程序,而不仅仅是限于Visual C++编译器。它提供了对标准C库函数的更新实现,并支持一些新的C标准(如C11标准)。UCRT与较新版本的Visual C++(如Visual Studio 2015及更新版本)相关联。
综上所述,UCRT更新推荐开发使用,如果考虑兼容则用MSVCRT
因为我的电脑是Windows10,所以下载的是:x86_64-14.2.0-release-win32-seh-ucrt-rt_v12-rev2.7z
(1)解压
将下载的x86_64-14.2.0-release-win32-seh-ucrt-rt_v12-rev2.7z解压到磁盘,尽量路径上不要存在中文字符。
(2)配置环境变量
在Path环境变量下新增一个环境项,指向压缩包中bin目录。
(3)验证
在CMD或者powerShell中输入命令gcc --version就可以查看是否配置成功。
2.2、Rust环境准备
在安装Rust时,Rust会将依赖包等信息默认放在C盘下的~/.cargo目录,这个目录会随着我们项目依赖的增多而变大,就像Java中的Maven一样,所以我们需要将它配置到其他磁盘。
需要在环境变量中增加两个配置:CARGO_HOME、RUSTUP_HOME。
两个变量的路径指向执行的文件位置:
配置好上述的环境变量后,Rust在安装时就会把相应的文件放在指定位置而不放在C盘。
2.3、Rust安装
先从官网将安装包下载下来:https://rust.p2hp.com/
下载下来后是一个rustup-init.exe可执行文件。
(1)双击启动安装程序
- 1)是要求必须安装C/C++的编译环境,默认是 visual studio安装器。
- 2)是使用已经准备好的编译环境,我们已经配置好了mingw64,所以我们选择这个选择。
(2)安装C++构建工具
直接选择 Y。
(3)自定义安装
选择 2 自定义安装。
(4)安装工具链
Rust默认的工具链是:x86_64-pc-windows-msvc。但是使用这个会在开发中碰到一些问题,所以我们不使用这个。
我们使用x86 64-pc-windows-gnu。
(5)剩下的步骤都是直接回车,等待安装完成。
看到上述步骤就是安装完毕。
(6)验证
在CMD或者PowerShell中使用rustup --version命令就可以查看Rust是否安装成功。
通过rustc --version命令也可以查看Rust是否安装成功。
2.4、修改Cargo镜像
在CARGO_HOME指定的目录下创建一个config.toml的配置文件。
文件内容如下:
[source.crates-io] registry = "https://github.com/rust-lang/crates.io-index" # 具体使用的源 replace-with = 'aliyun' ### 配置多个源地址 # rsproxy [source.rsproxy] registry = "https://rsproxy.cn/crates.io-index" [source.rsproxy-sparse] registry = "sparse+https://rsproxy.cn/index" [registries.rsproxy] index = "https://rsproxy.cn/crates.io-index" # 阿里源 [source.aliyun] registry = "sparse+https://mirrors.aliyun.com/crates.io-index/" # 清华大学 [source.tuna] registry = "https://mirrors.tuna.tsinghua.edu.cn/git/crates.io-index.git" # 中国科学技术大学 [source.ustc] registry = "https://mirrors.ustc.edu.cn/crates.io-index/" # 上海交通大学 [source.sjtu] registry = "https://mirrors.sjtug.sjtu.edu.cn/git/crates.io-index" # rustcc社区 [source.rustcc] registry = "https://code.aliyun.com/rustcc/crates.io-index.git" [net] git-fetch-with-cli=true
推荐两个Rust包的查询网站:
- https://crates.io/
- https://lib.rs/search