Skip to content

🔰 你的下一个项目应该使用 Rust 编程的 7 个理由

🕒 Published at:

你的下一个项目应该使用 Rust 编程的 7 个理由

该文译自https://simpleprogrammer.com/rust-programming-benefits/,原作者是TAPAN PATEL。

据最近的一项 Stack Overflow 调查证实,Rust 是 4 年多来最受欢迎的编程语言(高达 83.5% 的程序员首选)。这意味着那些尝试过并实际使用过 Rust 编程的人都对它敬畏不已。

然而,Rust 仍然不在最常用的编程语言前五名之列。这表明 Rust 编程在很大程度上仍然是一个充满未开发潜力的未开发领域。鉴于其受欢迎程度,越来越多的用户涌向 Rust,这意味着它将很快进入前五名,并将自己确立为世界各地程序员的主要工具。

为了让你不落伍,这里有一份关于什么是 Rust 编程语言的快速指南,以及你应该在下一个项目中使用 Rust 编程的七个原因。

什么是 Rust 编程语言?

就像真菌(是的,有一种叫做锈病的真菌!)一样,Rust 也是一种在编程世界中迅速传播的编程语言。

本质上,Rust 是一种编程语言,旨在克服 C++ 语言的缺点。虽然 C++ 是一种功能强大且功能无限的面向对象语言,但程序员在 C++ 中手动管理内存是相当困难的。Rust 允许你以极低的内存占用编写快速代码,为你提供了一个非常强大的编程工具。

Rust 于 2012 年由 Mozilla 推出,但这个想法起源于一位充满激情的语言工程师 Graydon Hoare 的想法。Hoare 于 2006 年开始研究该语言,很快,Rust 的潜力引起了 Mozilla 开发人员的注意。他们与 Hoare 一起成立了一个专门的开发团队来试验该语言并以最佳方式构建它。

用 Hoare 的话来说,“该语言是针对沮丧的 C++ 开发人员的。”

下面让我们了解是什么让 Rust 比 C 或 C++ 等语言更好。

Rust 是一门足够好的编程语言吗?

Rust 是一种流行的编程语言,但它好吗?

对于初学者来说,它提供了类似于 C 和 C++ 的出色性能,并解决了内存安全问题。

此外,你可以使用 Rust 处理大量数据而不会损失任何性能。

而且,如果你还不相信。然后,你可以看看 Rust 在行业中的使用情况,Dropbox、Firefox 和 Cloudflare 等公司在生产中使用 Rust。

**Rust 的核心是一种静态类型的编程语言。这意味着它提供开箱即用的安全性和性能。**它提供比 C++ 更好的内存管理和安全并发。此外,如果你具有 C++ 知识,那么 Rust 很容易学习,因为 Rust 语法类似于 C++。

据 Nature.com 宣称,科学家们也倾向于使用 Rust,因为它具有出色的内存管理功能和可用性。这些点只说明 Rust 是一门足够优秀的编程语言。

列举 Rust 如此受欢迎的 6 个原因

在过去三年中, Rust 一直是StackOverflow 开发人员调查中最“受喜爱”的编程语言。超过 86% 的开发人员正在使用 Rust 或表示有兴趣使用它,使其成为最受欢迎的编程语言。

随着使用 Rust 的开发人员数量从 2020 年的 5.1% 增加到 2021 年的 7.03%,这种兴趣现在使 Rust 更受欢迎。目前这一比例在 2022 年为 9.32%。

Rust 受欢迎程度的稳步上升,也意味着它已经从2020 年的倒数 7 名攀升至2022 年的前 14 名。

那么,是什么让它如此受欢迎呢?让我们列出六个原因。

  • Rust 之所以流行,是因为 Rust 背后有基金会支持,其中成员包括 Microsoft、Meta、Dropbox、Arm、Google、Amazon 等成员。它在 COVID 开始时的经济崩溃期间生效。

  • Rust 很受欢迎,因为它是 C++ 的现代替代品。由于不使用空值,Rust 绕过了 C++ 错误。此外,Rust 的编译速度几乎与 C++ 相当,全球的开发人员都致力于通过 LLVM(低级虚拟机)改进进一步提高其编译速度。

  • Rust因其官方包管理器 Cargo 而广受欢迎。它解决了每次进行更改时重新编译代码的主要 C++ 缺点。Cargo 通过检查依赖性来绕过重新编译。

  • Rust因其卓越的内存管理而广受欢迎。使用 Rust,你可以控制内存分配和取消分配的工作方式。创建变量时会分配智能指针以简化内存管理。如果智能指针超出范围,就会发生取消分配。这种方法为你提供了完全控制,并允许你使用多个共享相同数据的智能指针。

  • Rust 很受欢迎,因为它通过提供一种无错误的方法来编写易于重构的代码来掌握并发性。

  • Rust 很受欢迎,因为它提供 WebAssembly 支持。这意味着开发人员可以在 Web 上创建音频、视频、3D 环境、游戏等。

Rust 日新月异。甚至 Linux 的创造者 Linus Torvalds 也计划在 2023 年在 Linux Kernal 中使用 Rust 来对 Kernel 基于性能方面进行编程。

为什么 Rust 是你下一个项目的最佳选择?(7个理由)

Rust 包含许多 Web 开发人员绝对喜欢使用的功能。以下是我选择使用 Rust 的主要原因:

1.Rust 解决内存管理问题

系统编程通常需要低级内存控制,而使用 C 的手动内存管理,这项任务可以证明是一场真正的噩梦。

Rust 具有为低级细节提供便利的不可思议的能力。它可以直接访问硬件和内存,因为它不需要垃圾收集器在后台连续运行。

这意味着用 Rust 编写代码就像使用微控制器应用程序编写低级代码一样。你可以完全自由地替换代码片段,而无需承担内存安全风险。

2.Rust 的低开销使其成为嵌入式编程的理想选择

资源受限是常态,嵌入式系统通常出现在机器和家用电器上。这就是嵌入式系统需要像 Rust 这样开销非常低的现代编程语言的原因。

Rust 是嵌入式系统中一种资源高效且需求旺盛的功能。它允许程序员及早识别错误,防止设备将来发生任何事故。

蛋糕上的樱桃是 Rust 的零成本抽象能力。无论你使用何种抽象代码,Rust 都足够慷慨地接受它。你可以使用循环、闭包或当天你喜欢的任何代码风格,它们都将编译为同一个程序集,而不会影响代码的性能。

3.Rust 促进强大的 Web 应用程序开发

为 Web 应用程序开发选择正确的技术堆栈时,一个重要的考虑因素是编程语言的选择。有充分的理由将 Rust 编程包含在你的 Web 应用程序技术栈中。

如果你习惯于使用 Java 或 Python 等高级语言开发 Web 应用程序,那么你会爱上使用 Rust。使用 Rust,你可以更加确信代码不会出错。

对于任何已经精通 C 的人来说,Rust 都很容易学习。此外,你可以立即开始修补 Rust,而无需花费数年时间学习技巧。

使用 Rust 进行 Web 开发的主要亮点是:

你可以将 Rust 编译为WebAssembly,这样可以更轻松地在 Web 上获得接近原生的性能。 Rust 允许任何语言编译成 WebAssembly,从而允许可移植的、可执行的在线运行代码。

简而言之,对于 Web 开发,Rust 是吸收了所有正确维生素的语言!

4.Rust 的静态类型确保易于维护

Rust 是一种静态类型语言。在 Rust 中编程时,所有类型在编译时都是已知的。Rust 也是一种强类型语言,这意味着用 Rust 更难编写不正确的程序。

管理复杂性是成功编程的核心。随着代码的增长,复杂性也随之增加。静态类型语言允许你密切关注代码中发生的事情,从而实现高度的简单性。

Rust 也不需要你多次重复变量的类型,鼓励长期可维护性。

简而言之,Rust 允许嵌套和闭包,这反过来又提高了代码的可维护性。

5.Rust 具有快速和高性能

Rust 的性能与 C++ 相当,并且轻而易举地击败了 Python 等语言。

没有垃圾收集有助于 Rust 的高速。与许多其他语言不同,Rust 没有运行时检查,编译器会将错误的代码扼杀在萌芽状态。这可以防止错误代码扩散并对系统造成严重破坏。

最后,如前所述,Rust 在嵌入式系统中的执行速度也非常快。

6.跨平台开发与支持

使用 Rust,你可以轻松构建可在各种操作系统(如 Linux、macOS、Windows 和其他平台)上运行的跨平台解决方案。

值得注意的是,Rust 允许你对应用程序的前端和后端进行编码。Rocket、Nickel和Actix等 Rust Web 框架的可用性使使用 Rust 进行开发变得更加容易。

使用 Rust 开始开发非常容易——只需打开Rustup,一个快速的工具链安装程序和版本管理工具,然后按照说明进行操作。你可以选择根据需要格式化代码。Rustfmt允许基于默认格式样式自动进行代码格式化。Clippy是一种有助于维护惯用代码风格的工具,它负责其余的工作。

7.Rust 拥有广阔的生态系统

随着 Rust 的日益流行,Rust 生态系统正在迅速扩展。庞大的生态系统中的一个主要因素是它不仅仅是一种语言或编译器。软件生产质量需要更多方面,而 Rust 生态系统认为所有这些都非常重要。

首先,Cargo 是 Rust 程序员使用的命令行工具,可帮助管理依赖项、运行测试和生成文档。

其次,Rust 有一个社区站点 crates.io,可以满足你对 Rust 库的需求。你可以在docs.rs上找到在 crates.io 上发布的任何库的文档。

新手 Rust 开发人员也可以轻松访问基于属性的测试、基准测试和模糊测试。

与专业人士交流和学习也很容易。有多个 Rust 会议,如RustConf、RustBelt和RustFest,它们是 Rust 开发人员的知识金矿。

是什么让 Rust 与众不同?

Rust 的专长在于它能够为程序员提供编写无错误代码而不影响性能的工具。它的内存安全功能克服了流行编程语言(如 C 和 C++)的缺点。

你还可以获得零成本的抽象,这些抽象可以提高代码的性能,因为无论你采用何种方法对解决方案进行编码,它都会生成相同的程序集。出色的并发支持还意味着你可以编写易于重构的代码。

语言对比:Rust vs Go

Google 的 Go 大量借鉴了 C 来克服 C++ 的缺点。它增加了结构类型、垃圾收集和内存安全,重点是多核开发,以实现更好的并发性和并行性。

另一方面,Rust 是一种多范式通用编程语言,它解决了 C++ 内存安全问题,同时提供了类似的性能。

Go 是对微服务、CLI 和流处理进行编程的绝佳选择。它的占用空间小意味着你可以将它与云原生应用程序一起使用。Rust 更加通用,因为它可用于为嵌入式系统开发程序,同时由于 WebAssembly 支持,它也适用于 Web 开发。

两者都是出色的编程语言,具有许多相似之处,即使是为不同的目的而创建的。由于两者都是编译的而不是解释的,因此它们提供开箱即用的性能。

因此,如果你正在寻找一种简单易用的通用语言,请选择 Go。它提供了一个专注于性能的良好并发模型。如果你正在开发以性能为中心的解决方案,那么 Rust 是一个不错的选择。它使你可以进行低级编码而不必担心内存管理。

语言对比:Rust vs C++

C++ 是最古老的编程语言之一,由丹麦计算机科学家 Bjarne Stroustrup 在四十年前的 1985 年发布。它是一种通用编程语言,旨在扩展 C 编程语言的功能。Rust 大量借鉴了 C++,这就是为什么你会发现它们之间有很多相似之处。

Rust 和 C++ 之间的第一个区别是它们处理内存的方式。通过更好的内存管理,你可以使用 Rust 编写在机器级别表现良好的无错误代码。它们都是编译语言,不需要运行时或垃圾收集器。

在性能方面,C++ 略胜一筹。Rust 速度很快,但需要更多的打磨才能变得和 C++ 一样快。然而,Rust 社区正在努力在 LLVM 级别优化 Rust 以获得更高的性能。

至于易学性,如果你是编程新手,学习 C++ 将花费大量时间,对于需要更多精力和时间的 Rust 也是如此。但是,如果你已经了解 C++,则可以快速开始使用 Rust。(Rust的学习曲线比较陡峭,新人并不建议直接从Rust入门。布道师甚至建议直接从C入门,都不会建议直接从Rust入门,有人甚至说建议新人直接写Rust,与劝人跳崖无异。)

何时使用Rust?Rust最适合的6个使用领域

说了这么多,做了这么多,很容易看出 Rust 在未来所有项目中的应用有多棒。

但是你究竟在什么地方和什么时候使用 Rust 编程?

我们知道在编码方面没有万能的解决方案。这就是为什么了解在哪些情况下 Rust 是更好的解决方案很重要。

以下是一些使用 Rust 进行编程的有益示例:

  • 当你开发性能至关重要的应用程序时,Rust 可以证明是一个不错的选择。
  • 当你的解决方案需要在短时间内处理大量数据时,请选择 Rust。
  • 当你想要更好地控制线程中的资源分配时,请使用 Rust。
  • Rust 提供内存安全,但也很复杂,因此当内存安全至关重要时选择它。
  • 使用 Rust 重写应用程序的敏感部分,其中程序速度至关重要。

上述因素使 Rust 成为开发游戏引擎、操作系统、文件系统、浏览器组件和 VR 模拟引擎等应用程序的理想选择。下面细致讲一下。

1.Rust 是编写物联网代码的绝佳语言

Rust 是程序员为 IoT 应用程序编写代码的首选语言。

随着Raspberry Pi和Arduino等设备的出现,创客运动风靡一时。如果你是将物联网视为下一个十亿美元机会的程序员之一,那么你不能忽视学习 Rust 编程。

Rust 是一种接近底层的、无运行时的语言,这意味着你可以在内存储备有限的地方使用它。

正因为如此,Rust 被证明是一种为 Raspberry Pi、Arduino 或 Tessel 等微控制器硬件编写代码的优秀语言。

2.Rust编程可用于HPC(高性能计算)

将 Rust 用于 HPC 的问题是你的大部分代码将用 C 编写。它的美妙之处在于使用它的 FFI(外部函数接口),你可以在没有任何开销的情况下执行 Rust 代码。换句话说,Rust 允许你一个接一个地重写你的应用程序模块。

使用 Rust 的开发人员体验也好得多,因为它不会影响应用程序的性能。Rust 还将使你的应用程序能够在大量内核上更好地扩展,这在 HPC 中至关重要。

3.使用 WebAssembly (WASM) 编写 Web 应用程序

Rust 支持 WebAssembly,这是一种快速、现代且安全的创建 Web 应用程序的方法。将 Rust 与 WebAssembly 结合使用可为你提供可预测的性能、较小的代码大小以及对优秀库集的访问。

WASM + Rust 与 JavaScript 配合得很好。这意味着你不必替换现有的代码库,并且可以进行扩充以从 Rust 的性能中获益。此外,Rust 还可以与现有的工具链一起使用,例如 npm。

4.科学项目

Rust 的速度和安全性也引起了科学家们的关注。他们正在从 Python 转向 Rust,即使掌握和使用它需要时间。根据Nature.com 文章,科学家 Köster 创造了 Varlociraptor,它通过将序列与遗传碱基进行比较来识别基因组变异。Rust 使得以最佳速度进行数百万次此类计算成为可能。

Rust 内存模型还让科学家们不用担心内存泄漏或安全漏洞。科学家通过更高的学习和实施时间在编译期间消除错误。所有这些也适用于并行代码。

5.游戏开发

游戏开发是另一个出色的 Rust 用例。有很多 Rust 游戏引擎可以帮助你入门。其中包括 Amethyst——一种面向数据的游戏引擎;bevy——另一个数据驱动的游戏引擎;Fyrox – 生产就绪引擎和 Nonnou – 开源游戏框架。

6.区块链开发

你还可以使用 Rust 进行区块链开发。区块链背后的想法是提供一个不可变的去中心化数字分类账,一旦数据被写入就无法篡改。Rust 出色的内存安全性意味着开发人员可以创建内存安全的区块链应用程序。其他 Rust 特性,例如速度和可靠性,使其成为区块链的不错选择。在这里,你可以尝试基于 Rust 的 OpenEthereum 和 Lighthouse 框架。

哪些大厂在使用 Rust语言?

Rust 不仅在开发人员中流行(如 StackOverFlow 开发人员调查所示),而且在公司中也很流行。在生产中使用 Rust 的顶级公司是:

公司做什么的使用的其他技术使用 Rust 的原因
Coursera——流行的在线学习平台他们使用 Rust 为学生的编程作业提供支持。通过网络,学生可以编写和运行具有类似本地性能的计算机程序。他们在 Docker 容器下运行它。为学生运行代码提供安全的环境。C 也是一个不错的选择,但缺乏 Rust 的灵活性。Rust 提供了一个强大的系统,并且不受某些安全漏洞的影响。
Dropbox——流行的文件存储平台Dropbox 的文件同步引擎使用 Rust。SSL、Nginx、Python、S3、EC2Rust 使得编写并发代码变得容易,并且易于测试和调试。此外,Rust 的大量编译时和静态类型有助于管理并发代码和复杂的数据库。
npm——一个 JavaScript 包管理器npm 的主要服务用 Rust 重写。JavaScript他们重写了主要服务以提高其性能并解决随着用户群的增长而可能发生的瓶颈。Rust 的内存管理是另一个原因。
Figma——一种网络协作设计工具Figma 的多人同步引擎是用 TypeScript 的 Rust 重写的LiveGraph, AWS由于性能优势,Figma 选择了 Rust。
Microsoft他们正在尝试将 Rust 集成到 C/C++ 中许多Rust 出色的内存安全性解决了微软 70% 的与内存安全相关的常见漏洞和暴露(CVE)。
DiscordDiscord 在服务器端和客户端都使用 Rust。他们使用 Rust 和 Exilir Native Implemented Functions (NIFs) 来扩展他们的 Discord 解决方案。Read States 服务也用 Rust 重写。JavaScript、Python、Rust、C++Rust 克服了 Go 使用垃圾收集器及其内存模型的限制,这些限制增加了延迟峰值。
FacebookFacebook 希望消除错误并改进编译器反馈循环,因此他们用 Rust 重写了源代码控制后端。Python、网络技术好处包括无错误代码和在编译期间捕获错误。源代码也变得易于维护。

细数一下Rust语言的缺点

Rust 是新的和令人兴奋的,并提供许多好处,包括内存安全、零抽象、web-assembly 支持和性能。但是,它并非没有缺点,其中包括:

  • 编译时错误和缓慢的编译时间:Rust 实现内存安全是因为它在编译时强制执行的规则。这意味着你会看到大量的错误,这会让许多程序员感到沮丧。
  • 缺少所需的库:Rust 是新的,因此缺少你可以使用其他编程语言轻松获得的所需库。 原型不友好:由于编译需要花费大量时间并且需要 100% 的条件覆盖率,因此 Rust 不适合原型解决方案。
  • 不适合初学者:Rust 不适合初学者,因为它包含需要时间才能掌握的高级概念。 小市场:Rust 市场仍在增长,与其他成熟的编程语言相比,机会更少。
  • 它从未最终确定:Rust 是一个正在进行的项目,旨在提供向后兼容性和稳定性。这意味着 Rust 功能需要时间才能获得稳定的支持。
  • 更小的目标平台:由于在 Rust 编译器中使用 LLVM,目标平台的数量比 C/C++ 小。

你应该学习 Rust 吗?

Rust 正在迅速增长(正如 StackOverFlow 开发人员过去三年的调查所表明的那样)。因此,学习 Rust 并不是一个坏主意,因为它会提高你的就业能力。

从技术角度来看,Rust 为创建安全、快速和可移植的应用程序提供了强大的工具解决方案。它提供并发性、内存安全和高性能,专注于想要开发可靠产品的开发人员。这就是开发人员喜欢它的原因。你还可以访问不断壮大的 Rust 社区和 Rust 包。

因此,如果你是一名想要开发健壮且内存安全的应用程序的开发人员,那么 Rust 是你的选择。当你从一开始就编写可靠的代码时,它提供了长期的稳定性——部署几个月后你不会遇到空指针或运行时问题。

编译器向你抛出错误,就好像它是你的代码助手一样。它提供了详细的错误和帮助消息,以便你可以调试它们。使 Rust 具有吸引力的其他特性包括:

  • 使用模式匹配处理分支。
  • Crater 工具可在你通过详细报告进行更新之前检查新的 Rust 版本是否会破坏你的 Rust 项目。
  • WebAssembly 支持允许你创建在网络上运行的应用程序。

你应该学习 Rust 还是 Python?

建议两者都学。Rust 是一种相当新的编程语言,市场机会有限。至于学习上的困难,还是从Python入手比较好。Python 对初学者很友好。它将帮助你掌握抽象、面向对象范式、函数式编程和其他编程概念。一旦你掌握了它,你就可以转向 Rust。

学习 Rust 时,你将探索更高级的概念。在这里,你将学习如何借助详细的编译器错误来编写无错误的代码。Rust 对 WebAssembly 的支持意味着你还可以在 Web 上编写各种应用程序。

但是,在 Python 和 Rust 之间进行选择取决于你的目标。例如:

  • 选择 Python 进行数据科学
  • 选择 Python 与 Django 和其他 Web 开发框架进行 Web 开发(此处并未建议采用Rust进行Web开发)
  • 选择 Rust 进行软件和操作系统开发
  • 选择 Rust 进行区块链技术开发
  • 选择 Rust 进行以 WebAssembly 为中心的开发
  • 选择 Rust 进行神经网络开发

如何学习 Rust 编程

开始学习 Rust 的最佳方式是访问Learn Rust站点。在这里,你可以找到详细的核心 Rust 文档,并可以访问不同类型的书籍。Rust 编程语言(绰号“书”)非常详细地介绍了 Rust。在本书中,你可以通过创建几个项目来学习 Rust。除此之外,你还可以参加包含小练习的Rustlings 课程。

此外,你还可以阅读 Learn Rust 网站上的其他指南,包括:

  • 了解 Rust 包管理器的 Cargo 书。
  • 了解 Rust 版本的版本指南。
  • 让你熟悉 Rust 编译器的 Rustc 书。
  • 编译器错误索引以获得对 Rust 编译器错误的深入解释。
  • 学习如何在 Rust 中使用有效命令行的书
  • WebAssembly 书,学习如何使用 Rust 创建浏览器原生库。
  • 嵌入式书籍,学习如何将 Rust 用于嵌入式系统。
  • 你还可以在网络上找到多种 Rust 教学资源。如果你想替代书面内容,可以找找 Youtube 视频。

发现 Rust 的潜力

编程使用 Rust 编程的主要好处是其高效的内存管理能力。

然而,最重要的是,它为各种应用程序(尤其是 Web 应用程序)提供了极好的速度和安全性。因为它具有强大的命令行界面工具,所以它也是开发跨平台应用程序的绝佳工具。Rust 非常适用于低资源环境,它还通过使程序员能够使用现有代码交叉编译新代码来节省开发时间。

除了作为开发游戏引擎和操作系统的理想工具之外,Rust 编程还具有巨大的物联网开发潜力。

当你选择 Rust 时,一个充满活力的社区会欢迎你,所以请相信 Rust 编程语言并投身于这个充满可能性的激动人心的世界!

译者注:国内目前也有不少Rust相关的优秀图书及教程,并不一定要在youbube上学习。