Rust拥有一个充满活力且发展迅速的开源生态系统,大量贡献者投身于众多出色的项目中。如果有人问:“用Rust能构建什么?”答案几乎是无所不能。本文将介绍一些开源的Rust库、框架和代码库,它们对学习或用于自己的项目都非常有用。为了方便起见,我们将其按领域分类,如网页开发、游戏开发、区块链等,下面让我们深入了解。

网页开发框架

Rocket

对于初学者而言,Rocket是Rust生态系统中最容易上手的网页框架。它高度可定制,能帮助你快速启动一个新应用程序,同时避免了许多不必要的样板代码。Rocket还集成了许多功能,这意味着你无需过多依赖外部框架就能构建所需的一切。不过,与Actix Web不同,它基于Rust的夜间版(即语言的“实验性”版本)运行。例如,当你想要快速搭建一个简单的博客网站时,Rocket可以让你迅速开始,减少前期配置的时间。

Actix Web

Actix Web通常被认为比Rocket更具性能和稳定性。它基于Erlang和Akka中使用的参与者模型工作。与Rocket相比,它自带的功能较少,这意味着你很可能需要使用第三方库来实现额外的功能。比如在构建一个高并发的电商网站后端时,Actix Web的高性能可以更好地应对大量请求。

Yew

Yew是一个用于使用WebAssembly创建网页应用程序的Rust框架。它的主要优点包括类似React和Elm的基于组件的框架、由于多线程支持带来的出色性能以及与JavaScript的互操作性。目前,它还不适合用于生产环境,但对于个人项目和内部工具来说是一个不错的选择,特别是如果你想使用WASM的话。例如,开发一个简单的在线小游戏,Yew可以借助其组件化的特性快速搭建界面。

Zola

如果你需要快速简单地搭建一个静态网站,Zola是一个很棒的工具。它可以创建快速且可扩展的网页,无需任何其他依赖或过多的JavaScript代码。比如搭建个人博客的静态页面,Zola就能轻松胜任。

Warp

Warp是一个用Rust编写的Web服务器框架。与Rocket和Actix相比,它作为一个Web框架比较精简,开箱即用只提供基本功能。当你只需要一个简单的Web服务,不希望有过多复杂功能时,Warp就很合适。

游戏开发

Rust在游戏开发方面表现出色,原因与C++一样,即它的性能可预测。以下是一些可以用于构建Rust游戏的引擎。

Bevy

Bevy和Amethyst是两个主要的Rust游戏引擎,其中Bevy较新且更有特色。它是一个简单的数据驱动引擎,本质上可以称为Amethyst 2.0,因为它深受Amethyst的启发。如果你想了解更多关于Bevy的信息,可以查看Bevy手册。例如,开发一款小型的2D独立游戏,Bevy的简单性和数据驱动特性可以让开发过程更加流畅。

Amethyst

Amethyst相对更成熟,因此对于大型项目来说,它可能具有更多你需要的功能,并且与第三方库的集成更好。不过,需要注意的是,Amethyst目前已经不再积极开发。如果你正在为新项目寻找引擎,建议同时了解这两个引擎,看看哪个更适合你。比如开发一款大型的3D角色扮演游戏,Amethyst的成熟特性可能更能满足需求。

ggez

如果你想从简单的项目开始,ggez是一个轻量级的跨平台游戏框架,用于制作2D游戏,几乎没有什么学习成本。例如,快速开发一个小型的休闲2D游戏,ggez可以让你轻松上手。

操作系统开发

Rust在操作系统开发中是C的绝佳替代品,因为它在提供相同性能水平的同时,还能保证内存安全。实际上,开发者正在研究将Rust添加到Linux内核的可能性,微软也在进行相关实验。以下是一些完全用Rust编写的开源操作系统。

Redox

Redox是一个用Rust编写的操作系统,它利用Rust的创新特性构建了一个现代的微内核。

intermezzOS

intermezzOS是一个教学用的操作系统,专门用于向其他编程领域的有经验的开发者介绍系统编程概念。

Theseus

Theseus是一个新的用Rust编写的操作系统,它提出了一种新颖的操作系统结构,并声称可以避免状态泄漏现象,即一个实体的状态通过与另一个实体的交互而永久改变的情况。关于这个项目有很多相关资料可供阅读。

GUI开发

虽然Rust在构建引人入胜的用户界面方面并不出名,但仍然有很多优秀的库可用于构建GUI。

Druid

Druid是一个实验性的Rust原生UI工具包,专注于构建简单、精致的用户体验。它以数据为导向,受到了Flutter、SwiftUI等现代框架的启发。如果你想了解更多关于它的信息,可以查看Druid手册。比如开发一个简单的数据可视化工具,Druid可以帮助你快速构建出简洁的界面。

Iced

Iced是一个跨平台的GUI库,注重简单性和类型安全。它深受Elm的启发。虽然目前它仍处于实验阶段,但对于在Rust中为个人项目创建GUI来说,是一个不错的选择。例如开发一个小型的桌面应用程序,Iced可以让你以简单的方式实现界面。

The Orbital Widget Toolkit

The Orbital Widget Toolkit是一个用于使用Rust构建可扩展用户界面的跨平台工具包。它注重速度、易用性和跨平台兼容性。在开发需要在不同操作系统上运行的大型应用程序界面时,它就有很大的优势。

Tauri

Tauri是一个用于为Windows、Linux和macOS构建桌面应用程序的框架。使用它,你可以使用任何可以编译为HTML/CSS/JS的前端框架来构建UI,而使用Rust作为后端。比如开发一个功能丰富的桌面办公软件,Tauri可以让你结合前端的便捷和Rust后端的高性能。

区块链领域

OpenEthereum

OpenEthereum的主要目标是成为最快、最轻量级和最安全的以太坊客户端。它用Rust开发,并声称提供了对于快速可靠服务至关重要的核心基础设施。

Lighthouse

Lighthouse是一个用Rust编写的开源以太坊2.0客户端,由Sigma Prime维护。

Parity Technologies: Polkadot and Substrate

Parity Technologies致力于为去中心化网络构建区块链基础设施。其项目包括Substrate(一个用于区块链开发的模块化框架)和Polkadot(一个区块链网络)。这两个项目在实现过程中都大量使用了Rust。

其他项目

Servo

Servo是一个用Rust编写的网页引擎原型,它是Mozilla创建新的开源浏览器引擎工作的成果。2020年,Servo从Mozilla转移到由Linux基金会托管。由于Rust的内存安全保证减少了漏洞数量,Servo被认为比用C++编写的浏览器更安全。

swc

swc是一个超快速的JavaScript/TypeScript编译器。与Babel相比,经测试它的编译速度至少提高了18倍。在处理大型前端项目的代码编译时,swc的速度优势就非常明显。

Ruffle

如果你想运行Adobe最近停止支持的所有酷炫Flash游戏,可以使用Ruffle,这是一个用Rust编写的Flash播放器模拟器。你可以在ruffle.rs上尝试使用它。

Lunatic

Lunatic是一个实验性平台,它使用WASM实例作为参与者来组织执行。它深受Erlang的启发,旨在结合WASM和Erlang的优点,使你能够构建既容错又极快的基于参与者的系统。

Starship

Starship是一个快速、可定制且智能的命令行提示符,适合那些想让自己的终端更酷的人使用。

MeiliSearch

MeiliSearch是一个强大、快速、易于使用且可定制的搜索引擎,还能容忍拼写错误。你可以为自己的项目设置它,而不是使用自定义的、可能性能较差的解决方案。

总之,Rust的开源生态系统非常庞大,有很多值得探索的地方。如果你知道有其他值得介绍的项目,欢迎在Twitter上分享。如果你想了解更多关于Rust的信息,可以查看相关博客的Rust板块。如果你需要Rust开发服务,也可以与专业团队沟通需求和目标,获取完全定制化的解决方案。

Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐