Rust 用戶界面庫的狀態

https://blog.logrocket.com/state-rust-gui-libraries/

Rust GUI 庫的現況

編者註:本文已更新至 2024 年 1 月 3 日,新增了 Yew 和 Xilem 到 Rust GUI 庫的清單中。

圖形用戶界面(GUI)為與計算機互動提供直觀視覺前端。GUI 使用圖標、窗口和菜單等視覺指示符,以改善使用者的互動和體驗,不同於使用文本進行輸入和輸出操作的命令行界面(CLI)。

Rust 隨著時間的推移而變得越來越受歡迎,這可能是由於其靈活性和充滿活力的開源社區。開發人員使用 Rust 進行系統設計、Web 開發和 GUI 構建等工作。在 Rust 中有許多包和 crate 可用於開發快速、複雜的 GUI 應用程序。

本文將回顧一些流行的 Rust GUI 庫和框架,包括 Tauri、Druid、Xilem、Slint、gtk-rs、fltk-rs、iced、relm、Azul、egui 和 Yew。我們將會比較這些庫,並討論它們在構建 GUI 應用程序時的適用情況。讓我們開始吧!

Tauri

Tauri 是一個開源包,讓開發人員可以使用 Rust 創建輕量級的基於 Web 的桌面應用程序。

Tauri 利用 JavaScript、WebAssembly 和其他 Web 技術,實現無縫的開發體驗。這個包提供了一個簡單的 API,讓開發人員能夠輕鬆地創建和定制桌面應用程序,從而可以在 Windows、Mac 和 Linux 上運行跨平台應用程序。

Tauri 包的一個關鍵功能是其跨平台兼容性。使用 Tauri,您可以創建一個單一的 GUI,在幾乎不修改的情況下運行於多個平台上,實現“一個構建,多個運行”的場景。

由於其基於 Web 的架構,Tauri 應用程序輕巧且快速。Tauri 運行在 Web 技術之上,應用程序可以在低端硬件上平穩運行。

最後,Tauri 使用事件驅動架構,可輕鬆與事件互動。Tauri 提供對本機 API 的訪問以及 JavaScript 互操作性,使包能夠從 Rust 代碼中訪問 JavaScript 函數。

將 Tauri 添加到您的項目中很簡單;您只需要在項目的根目錄的 Cargo.toml 文件的 dependencies 部分中添加包:

[dependencies]
tauri = “0.9.0”

將 Tauri 作為項目依賴項添加後,您可以通過將以下代碼添加到文件頂部導入它到您的 Rust 文件中:

use tauri::{Builder, Tauri};

Druid

N.B.:Druid 的維護者表示它正在被取消,以支持其他基於相同原則的項目,例如 Xilem(一個實驗性的 Rust 原生 UI 框架,您可以在下一節中了解更多信息)。

Druid 是一個強大而靈活的 Rust 庫,用於構建桌面應用程序的 GUI。 Druid 的一個關鍵特點是其佈局系統,它允許基於約束輕鬆且直觀地創建小部件佈局,從而輕鬆地創建視覺上一致和響應式的用戶界面。

Druid 還提供了各種內置小部件,包括按鈕、標籤和文本輸入,您可以使用它們來自定義應用程序的外觀和感覺。

Druid 是跨平台兼容的,支持 Windows、macOS 和 Linux,可以一次編寫應用程序然後在多個平台上運行而無需進行任何修改。 Druid 還提供了一個全面的事件處理系統,可以輕鬆響應用戶的交互並實時更新用戶界面。

要開始使用 Druid 包,將以下代碼添加到您的 cargo.toml 文件中的 dependencies 部分:

[dependencies]
druid = “0.7.0”

要將 Druid 導入 Rust 文件中,使用以下代碼:

use druid::{AppLauncher, WindowDesc};

Xilem

Xilem 是一個受到 SwiftUI、Flutter 和 Elm 等流行 UI 庫啟發的實驗性 Rust UI 庫。Xilem 的開發原則圍繞著性能和組織。

Xilem 輕巧而高效,因為它強調最小的更新。它使用集中式狀態控制和狀態管理器簡化數據處理同時提供可預測的更新。

如果您是一名熟悉 SwiftUI 的 Swift 開發人員,您應該會發現 Xilem 易於使用,因為它的語法和概念與 SwiftUI 相似。

目前,該庫還沒有任何版本發布;但它正在積極開發中。該項目在 GitHub 上擁有 2.3k 顆星,對於一個新項目來說是令人印象深刻的。

Slint

Slint 是一個基於開源的、基於 Rust 的 UI 框架,用於構建原生用戶界面。 Slint 為嵌入式設備、微控制器和桌面應用程序的構建提供了全面而簡單的解決方案。

Slint 的一個關鍵特點是它支持多種編程語言。開發人員可以結合 Slint 為主要使用 Rust、C++或 JavaScript 編寫後端邏輯的 GUI。它還提供各種預建的用戶界面組件,如按鈕、表單、模式窗口等,從而開發人員無需花費時間從頭構建它們。這些預建組件也可以自定義,以適應應用程序的特定需求。

除了在不同屏幕尺寸上響應式外,Slint 還支持不同操作系統和處理器架構之間的跨平台兼容性。最後,Slint 還包括一組用於構建自定義組件的強大 API。

要安裝 Slint 包,將以下代碼添加到您的 cargo.toml 文件的 dependencies 部分:

[dependencies]
slint = “1.0.2”

在 Rust 中包含 Slint 文件有多種方式。最簡單的方式是使用 slint!宏內聯.slint 代碼:

fn main() {
MainWindow::new().unwrap().run().unwrap();
}

slint::slint! {
export component MainWindow inherits Window {
Text {
text: “hello world”;
color: green;
}
}
}

總的來說,Slint 是一個用於在 Rust 上構建原生應用程序的功能強大且多用途的解決方案。其中預建組件、響應式設計和自定義組件 API 使其成為任何在桌面和嵌入式項目上工作的 Rust 開發人員的寶貴工具。

gtk-rs

GTK 是由 GNOME 項目開發的流行的跨平台面向對像的小部件工具包。它用於在多種語言中構建可以在 Unix、Windows 和 macOS 系統上運行的可移植 GUI 應用程序,從 Python 到 JavaScript、C 和 Rust。

GTK 項目有多個版本,每個版本都有自己的變更和升級。

gtk-rs 項目為 GNOME 堆棧庫(例如 GTK 3 和 GTK 4 庫)提供安全的 Rust 綁定。gtk3-rs 和 gtk4-rs 庫分別提供 GTK 3 和 GTK 4 的功能性。

要開始使用 gtk-rs 庫,您需要 Rust 工具鏈和 GTK 庫。在創建項目後,將庫添加到 Cargo.toml 文件的 GTK 4 crate 的 dependencies 部分:

gtk = { version = “X.X”, package = “gtk4” }

如果您使用 macOS 或 Linux,可以使用 brew 包管理器安裝 GTK 4 庫:

brew install gtk4

請參閱不同的 Linux Distros 和 Windows 的安裝說明頁面。在安裝 GTK 4 並將其添加到依賴關係後,您可以按照以下步驟導入 crate:

use gtk::prelude::*;
use gtk::Application;

gtk-rs 圖書是學習如何使用該庫在 Rust 中構建 GUI 的良好資源。

在開發人員社區內,GTK 庫非常受歡迎;許多流行的 Linux GUI 應用程序使用 GTK 庫和 GNOME 堆棧。gtk-rs 庫只是許多準備投入生産的 Rust GUI 庫中的一個。

via Hacker News

March 7, 2024 at 11:19AM

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *