图形用户界面 (GUI) 为与计算机交互提供了直观的可视化前端。与使用文本进行输入和输出操作的命令行界面 (CLI) 不同,GUI 使用图标、窗口和菜单等视觉指示器来实现更好的用户交互和体验。

随着时间的推移,Rust 越来越受欢迎,这可能是由于它的灵活性和充满活力的开源社区。开发人员已将 Rust 用于系统设计、Web 开发和构建 GUI 等事情。您可以使用许多包和 crate 在 Rust 中开发快速、复杂的 GUI 应用程序。

在本文中,我们将讨论流行的 Rust GUI 库和框架,如gtk-rs、fltk-rs、iced、relm、 Azul 和egui. 我们还将比较这些 GUI 库并讨论它们如何成为构建 GUI 应用程序的好选择。

让我们开始吧!

gtk-rs图书馆_ 板条fltk-rs箱 iced图书馆_ relm图书馆_ Azul 框架 egui图书馆_ 比较 Rust GUI 库

gtk-rs图书馆_

GTK 是由GNOME 项目开发的流行的跨平台、面向对象的小部件工具包。它用于构建可在 Unix、Windows 和 macOS 系统上以多种语言(从 Python 到 JavaScript、C 和 Rust)运行的便携式 GUI 应用程序。

GTK 项目有各种版本,例如 GTK 3,每个版本都有更改和升级。

该gtk-rs 项目为基于 GNOME 堆栈的库(如 GTK 3 和 GTK 4 库)提供安全的 Rust 绑定。和库分别提供 GTK 3 和 GTK 4 功能gtk3-rs 。gtk4-rs

要开始使用这些gtk-rs库,您需要 Rust 工具链和 GTK 库。创建项目后,将库添加到Cargo.tomlGTK 4 crate 文件中的依赖项中:

gtk = { version = "X.X", package = "gtk4" }

如果您使用的是 macOS 或 Linux,请使用 brew 包管理器安装 GTK 4 库:

brew install gtk4

查看这些页面以获取有关各种Linux 发行版和Windows的安装说明。

安装gtk4并将其添加到依赖项后,您可以像这样导入 crate:

use gtk::prelude::*;

use gtk::Application;

gtk-rs 这本书是学习如何使用该库在 Rust 中构建 GUI 的好资源。

GTK 库在开发者社区中很受欢迎。许多流行的 Linux GUI 应用程序使用 GTK 库和 GNOME 堆栈。熊猫无损音乐下载(xmwav.com),纯免费的音乐分享网站,整个网站无限制下载使用!该gtk-rs库只是众多可用于生产的 Rust GUI 库之一,已在 500 多个项目中使用。

板条fltk-rs箱

FLTK(Fast Light Toolkit)是一个轻量级的、跨平台支持的用于构建 GUI 的工具包。FLTK 在 Windows、macOS 和 UNIX 系统上受支持,最初是为 C++ 构建的。蜗牛云盘影视播放软件,支持云盘视频资源在线播放,可以播放原画质视频!如果您使用 FLTK 工具包创建 GUI 应用程序,则该应用程序在所有受支持的操作系统上看起来都一样。

该fltk-rs库为 FLTK 工具包提供 Rust 绑定。crate 支持旧架构,fltk-rs有 80 多个可定制的小部件和超过四个支持的主题方案,包括 GTK 方案。您还可以使用cratefltk-theme进行更多自定义。

该fltk-rs库可以通过一次执行快速安装、构建、启动和运行。omofun动漫网站(omofun.tv),无广告无限制追番神器,番剧全是蓝光画质!开始使用fltk-rscrate 很容易——您所要做的就是将项目作为依赖项添加到您的Cargo.toml文件中,然后在您的计算机上安装库。

fltk如果您使用的是 macOS 或 Linux 计算机,则可以使用此 brew 命令安装库:

brew install fltk

您可以在链接页面上找到为其他操作系统安装库的说明。fltk将项目作为依赖项添加到您的Cargo.toml文件中:

[dependencies]

fltk = { version = "^1.3", features = ["fltk-bundled"] }

添加项目并安装fltk库后,您可以将 crate 导入到您的项目中:

use fltk::{app, button::Button, frame::Frame, prelude::*, window::Window};

查看fltk-rs 文档以详细了解其功能和用途。

图书馆fltk很受欢迎,有800多颗星。目前它正在快速增长,发布了 200 多个版本,您可以在生产中使用该库而无需担心。

根据许多其他开发人员的说法,使用该fltk-rs库比 C++ 库更直接。

iced图书馆_

iced是一个与渲染器无关的、包含电池的、以数据为中心的跨平台 Rust 库,用于构建 GUI 和前端,其灵感来自 Elm 架构。该iced 库提供了一个易于使用的反应式编程模型,具有对异步操作和自定义小部件的一流支持。

使用该库构建的 GUI 应用程序iced可以在具有响应式布局的 Windows、macOS、Linux 和 Web(使用 DOM)上运行。按照惯例,iced 将应用程序分为四个概念:

State:用于应用程序的状态 消息:用于消息和事件 视图逻辑:用于将状态显示为用户交互的小部件 更新逻辑:用于更新状态和与消息交互

您可以轻松地开始使用 Iced 库用于前端 Web 应用程序。该过程类似于构建 GUI 应用程序,您可以查看iced 文档以了解有关该软件包的更多信息。

由于其多功能性,该iced库是最受欢迎的 Rust 库之一。尽管该库已在许多项目中使用,但它非常不稳定并且发展迅速。您可以求助于使用较旧的版本,因为主分支不断变化,并且在生产中使用可能会很昂贵。

您可以在此存储库中找到灵感项目、代码示例和库实现。

relm图书馆_

relm是一个基于 GTK 的异步 GUI 库,最初用 Rust 编写。它受到 Elm 架构的启发,旨在简化 GTK 库的使用并提供类似 Elm 的体验。

与 GTK 库一样,您可以使用 relm 构建跨平台 GUI。

超过 20 万开发人员使用 LogRocket 来创造更好的数字体验了解更多 →

您需要有使用GTK 库的经验才能使用 relm 并充分利用该库。

要使用 relm,您需要在文件中将gtk和relm 库添加到项目的依赖项中Cargo.toml。您还需要gtk安装该库。

[dependencies]

gtk = "0.9.0"

relm = "0.20.0"

relm-derive = "0.20.0"

您还必须将gtk板条箱与relm板条箱一起导入。

use relm::{connect, Relm, Update, Widget};

use gtk::prelude::*;

use gtk::{Window, Inhibit,a WindowType};

use relm_derive::Msg;

Rust 社区感谢 relm 提供的其他 Rust 库(如 Yew、Seed 和 iced)提供的类似 Elm 的体验。该relm库处于 beta 阶段,尚未经过适当的测试,并且正在迅速变化。话虽如此,您可能还不想在生产中使用它。

Azul 框架

Azul 框架是一个反应式 GUI 库,用于在 Rust、C 和 C++ 中构建桌面 GUI。它由 WebRender 提供支持,是一种文档对象模型,类似于 HTML 和 CSS。由于 Azul 利用 WebRender,它提供了渐变、框阴影、边框样式和 CSS 变换等功能。

Azul 框架还提供了许多内置小部件、每秒超过 60 帧的动画、跨平台原生对话、SVG 解析、通过共享库的动态链接以及 HTML 到 Rust 的热重载编译。

要开始使用 Azul 框架,请将其添加到项目的依赖项中:

[dependencies]

azul = "1.0.0-alpha"

然后将 crates 导入您的项目并使用它们:

use azul::prelude::*;

use azul::widgets::{button::Button, label::Label};

Azul 框架文档齐全,可帮助您开始构建 GUI。

Azul 框架采用不同的 GUI 开发方法,到目前为止,该框架已用于 200 多个 Rust 项目。Azul 框架是功能性的,根据文档,您可以在生产中使用它。

egui图书馆_

该egui库是一个即时模式、易于使用、可移植的库,用于在 Rust 中构建在 Web、计算机和游戏引擎(开发中)上运行的 GUI。它的目标是成为在 Rust 中构建 Web 应用程序的最简单的库。

该egui库旨在为构建 GUI 提供安全、响应迅速、友好且可移植的体验,而无需回调和最小依赖。查看egui 的官方文档以了解如何使用它来制作跨平台的 GUI。

该egui库正在积极开发中,如果您足够勇敢,您可以在生产中使用它。库的特定部分egui已准备好,您可以使用旧版本,因为较新的版本容易发生重大更改。

比较 Rust GUI 库

本文中讨论的 GUI 库具有不同的特性和功能。这是 GUI 库之间的比较表,可帮助您为下一个项目做出选择和考虑!

生产就绪兼容性gtk-rs是的跨平台fltk-rs是的跨平台冰镇不跨平台和网络雷姆不跨平台阿祖尔是的跨平台埃桂旧版本跨平台

Rust 生态系统中的 GUI 库大多是具有很多优秀特性的不成熟项目。

对于您的项目,您需要考虑应用程序的项目状态。使用未经测试的库或未准备好生产的库是有风险的。您还需要根据您正在构建的内容以及项目将或应该运行的位置来考虑项目的兼容性。

来自 LogRocket 的更多精彩文章:

不要错过来自 LogRocket 的精选时事通讯The Replay 了解LogRocket 的 Galileo 如何消除噪音以主动解决应用程序中的问题 使用 React 的 useEffect优化应用程序的性能 在多个 Node 版本之间切换 了解如何使用 AnimXYZ 为您的 React 应用程序制作动画 探索 Tauri,一个用于构建二进制文件的新框架 比较NestJS 与 Express.js

例如,该iced库很受欢迎,因为它可以在 Windows、Linux、macOS 和 Web 上运行。它可能是一个不错的选择,因为您的应用程序可以共享相似之处并且更易于维护。考虑到图书馆的遗产,gtk-rs图书馆也很可爱。此外,relm如果您想采用 Elm 方式,可以使用该库。

结论

Rust 生态系统中还有许多其他 GUI 库,您可以在Are We GUI Yet和LibHunt上找到完整列表。

本教程向您介绍了 Rust 生态系统中流行的 GUI 库,包括gtk-rsto fltk-rs、iced、relm、 Azul 和egui.

希望本教程能够帮助您深入了解为下一个项目选择 GUI 库!

查看原文