【一起学Rust】Rust介绍与开发环境搭建

本文最后更新于:1 年前


前言

Rust 语言是一种高效、可靠的通用高级语言。其高效不仅限于开发效率,它的执行效率也是令人称赞的,是一种少有的兼顾开发效率和执行效率的语言。

官方对Rust是这么评价的。对于现在网络来说,Rust 被广泛了解主要是由于两件事。一是安全性,Rust 语言因其并发安全性而深受众多开发者的喜爱,曾在多个榜单上获评最受欢迎编程语言。一是 Linux 内核将引入 Rust 。但是不管怎么说,Rust 能够流行,和它本身是否优秀是脱不开干系的。

本系列文章旨在通过理论和实践的结合,让读者更快的、更高效的学习 Rust 并解决学习过程中所遇到的问题。本系列文章还随布置各种学习的小案例作为作业,让读者更深入的学习和理解 Rust 的相关概念。最后会带领读者实战开发几个项目,让读者上手 Rust 开发。本篇文章最主要的两个目的就是为了说明你为什么要学习 Rust 和搭建 Rust 的开发环境。


一、Rust的优点和应用

Rust 语言由 Mozilla 开发,最早发布于 2014 年 9 月。Rust 的编译器是在 MIT License 和 Apache License 2.0 双重协议声明下的免费开源软件。

当前编译器版本号:1.62.0

1. Rust的优点

这也就是为什么选择 Rust 的原因所在。在 Rust 官网这么写着 Rust 的优点:

高性能

Rust 速度惊人且内存利用率极高。由于没有运行时和垃圾回收,它能够胜任对性能要求特别高的服务,可以在嵌入式设备上运行,还能轻松和其他语言集成。

可靠性

Rust 丰富的类型系统和所有权模型保证了内存安全和线程安全,让您在编译期就能够消除各种各样的错误。

生产力

Rust 拥有出色的文档、友好的编译器和清晰的错误提示信息, 还集成了一流的工具 —— 包管理器和构建工具, 智能地自动补全和类型检验的多编辑器支持, 以及自动格式化代码等等。


Rust 每一个版本都有一个核心主题或重点。将 1.0 视为“Rust 2015”,现在

  • Rust 2015:稳定性
  • Rust 2018:生产力

短短几年时间,Rust官方以及对Rust进行了全年的改进,并且明确了Rust的主要方向。此外,更是创建了连接并授权 Rust 的全球社区。


2. Rust的应用

Rust 语言可以用于开发:

传统命令行程序

Rust 编译器可以直接生成目标可执行程序,不需要任何解释程序。相比较传统的命令行开发,使用 Rust 强大的生态系统快速实现命令行工具。Rust 可助您放心维护,轻松分发应用程序。Rust拥有以下特点:

  • 可靠且速度惊人: 即便只是编写简短的一次性脚本,您也能确信它是快速且易于测试的,并可以提供有用的输出。
  • 易于分发: 将所有内容编译为单个可执行文件,用户无需安装运行时和库。
  • 健壮的配置: 轻松处理跨平台的配置文件。Rust 将为您处理命名空间和格式。
  • 帮助手册?轻松生成。: 为应用自动生成手册。只要对生成的文件打包即可轻松获得手册。
  • 数据输入,数据输出: 除了与人沟通之外,Rust 还提供了绝佳的工具来帮助您与机器对话。
  • 灵活的日志记录: 添加日志很方便,将其配置到不同的目标或设置为不同的格式也相当容易。

除此以外,Rust 还有优秀的错误处理,能够当场 捕获错误。Rust 还能让您灵活地组织代码。从一个文件开始,当您需要更多功能时,有信心重构应用程序而不会破坏任何内容。

以上内容将在随后的开发中非常明显的体现出来,如果你跟着本系列文章一起学习 Rust ,相信你很快就会了解到以上特点。

Web 应用

Rust 可以被编译成 WebAssembly,WebAssembly 是一种 JavaScript 的高效替代品。使用 Rust 来逐个增强您的 JavaScript 模块。发布到 npm,使用 webpack 打包,即可感受到惊人的速度提升。

使用 Rust 做 Web 开发,他拥有以下特点:

  • 可预见的性能: 没有难以预料的 GC 暂停,也没有 JIT 编译器造成性能抖动,只有底层控制与上层人体工程学的完美结合。
  • 更小的代码尺寸: 代码尺寸越小,页面加载速度就越快。Rust 生成的 .wasm 模块不含类似于垃圾回收器这样的额外成本。高级优化和 Tree Shaking 优化可移除无用代码。
  • 现代设施: 充满活力的库生态系统助您旗开得胜。Rust 拥有丰富的表达能力和零成本的抽象,以及助力您学习的友好社区。

对于 JavaScript 来说,Rust 做的并不是取代,而是增强,是 JavaScript 的最佳搭档:

  • 增强,而非取代: WebAssembly 的梦想不是扼杀 JavaScript,而是与其并存,帮助处理一些繁重或底层的任务。Rust 以性能为先,这些任务也可以受益。
  • 友好的工具链: 您可以将 Rust WebAssembly 包发布到 npm 之类的包仓储中心上。使用 webpack、Parcel 或其它工具来打包并分发它们。使用 npm audit 之类的工具和 Greenkeeper 来维护它们。
  • 无缝的互操作性: 自动生成 Rust、WebAssembly 和 JavaScript API 之间的绑定代码。充分利用 web-sys 之类的库为整个 Web 平台提供预打包的绑定。

网络服务器

Rust 用极低的资源消耗做到安全高效,且具备很强的大规模并发处理能力,十分适合开发普通或极端的服务器程序。可预见的性能,极小的资源占用,坚如磐石的可靠性。Rust 极其适合网络服务。在网络方便的优点,是 Rust 广泛被了解的原因之一,他的特点如下:

  • 低资源占用: 控制资源使用,将内存和 CPU 占用降到最低。编译器的帮助可确保您所做正确。同时,通过生产效率高、使用体验宜人的生态系统来实现这一点。
  • 安全可靠: Rust 强大的类型检查可以防止多种级别的 Bug。确保您在何时何地都可确切地知道状态是共享还是可变。在部署之前通过捕捉故障点来获得帮助。
  • 大规模并发: 可以混合使用任何适合于您的并发方式。Rust 会确保您不会在线程或任务之间意外地共享状态。它能让您无所畏惧地压榨任意规模的性能。

嵌入式设备

Rust 同时具有JavaScript 一般的高效开发语法和 C 语言的执行效率,支持底层平台的开发。针对资源匮乏的设备?需要底层控制而又不失上层抽象的便利?Rust 包您满意!

Rust 开发嵌入式设备有以下六大优点是:

  • 强大的静态分析: 在编译时强制要求引脚和外设配置,以确保资源不会被您应用程序中非预期的部分使用。
  • 灵活的内存管理: 动态内存分配是可选的。可使用全局分配器和动态数据结构,也可以不采用堆而全部静态分配。
  • 无畏并发: Rust 使得线程之间不可能意外地共享状态。无论使用哪种喜欢的方式实现并发,都能获得 Rust 提供的强力保障。
  • 互操作性: 可将 Rust 集成到现有的 C 代码库中,也可利用现有的 SDK 编写 Rust 应用程序。
  • 可移植性: 只需要一次编写库或驱动,就能在各种系统中使用它。不管是非常小的微控制器,还是强大的单板计算机,都可直接使用。
  • 社区驱动: 作为 Rust 开源项目的一部分,嵌入式系统由一流的并拥有商业伙伴支持的开源社区驱动。

现在的 Rust 有着广泛的应用,庞大的生态系统,活跃的社区,以及大量的参考资料,Rust 现在不只是有前途的编程语言,更是有可靠前途的编程语言。


二、搭建开发环境

搭建 Rust 开发环境,并且编写一个小应用。

当前环境:

项目
操作系统 Windows 11
Rust版本 1.62.0
编程工具 vscode

1. 安装 Rust

如果你觉得安装较为麻烦,只想体验一下的话,可以进入演练场在线使用。

  1. 安装VC++生成工具(已安装可跳过)

点击链接进入页面后,点击下载生成工具,然后就和正常安装包一样安装即可。

  1. 安装 Rustup

由于笔者使用的是 Windows 系统,因此目前就在 Windows 上进行学习,如果你不是 Windows 可以从这里找到对应的安装方式。

安装 Rust 的主要方式是通过 Rustup 这一工具,它既是一个 Rust 安装器又是一个版本管理工具。如果你有兴趣,可以去官网下载,当然我这里也是提供了最新版的下载地址。

Rustup下载
32位 64位

官方下载
打开官网后,选择适合你的操作系统的版本进行下载:

  1. 安装 Rust

打开下载好的 rustup-init.exe ,界面如下所示:

按照提示,给出三个选项,分别是

1. 默认安装
2. 自定义安装
3. 取消安装

此时输入需要 1 默认安装,就会自动安装好 Rust。

  1. 检查是否安装了 Rust 和 Cargo

cmd 中运行命令 cargo --version ,如果得到以下结果,而不是 命令未找到 的话就是安装成功了。

2. 配置 vscode 开发环境

配置开发环境相当简单,只要安装以下插件即可。

3. 创建新项目

  1. 随便找个地方,比如桌面,按 shift + 鼠标右键 ,选择 此处打开命令行 ,运行以下命令:

    1
    cargo new hello-rust

    看到以下内容,表示项目创建完成。

  2. 现在进入这个新建的目录,在空白处 鼠标右键 ,然后选择 使用vscode打开如果没有问题,界面应该是下面的样子:

此时,文件夹目录是这样的,Cargo 已经帮我们创建好默认项目了,还创建了个git的本地仓库,还有一些配置文件,以后会说到。你只要知道 src/main.rs 为编写应用代码的地方。

  1. 运行项目

新建项目已经为我们创建好了默认的 Hello World 项目,我们直接在 vscode 的终端中运行 cargo run 命令,就可以看到系统输出了 Hello World。


并且可以看到 Rust 是有一个编译的过程的,

4. 编写 Hello-Rust

Cargo.toml 文件是一个管理项目配置的文件,包括项目依赖等相关配置,我们在后面会详细介绍该文件,现在我们来添加一个依赖,


然后在 vscode 终端运行

1
cargo build

终端就会有以下输出,可以看到 cargo 会自动为我们添加依赖,并且安装好依赖所依赖的依赖(直接绕口令)

接下来就在 src/main.rs 中写入以下内容

1
2
3
4
5
6
7
8
9
10
11
use ferris_says::say; // from the previous step
use std::io::{stdout, BufWriter};
fn main() {
let stdout = stdout();
let message = String::from("Hello fellow Rustaceans!");
let width = message.chars().count();

let mut writer = BufWriter::new(stdout.lock());
say(message.as_bytes(), width, &mut writer).unwrap();
}

然后在终端中再次执行

1
cargo run

就会看到以下结果


这个案例我们随后会进行更加细致的讲解,并且随着后面的学习,对其中的语法理解会更加的深刻。

Rustaceans
是对学习 Rust 者的称呼。

这只可爱的小螃蟹是 Rust 的官方吉祥物,在官方网站是这样的,


总结

通过本文,你应该已经了解了为什么需要学习 Rust ,并且实现了 Rust 的小案例。由于本文是开篇,就不布置学习的作业,请等待文章更新。