10 个版本 (5 个破坏性更新)

0.18.0 2023 年 8 月 13 日
0.17.1 2023 年 3 月 23 日
0.17.0 2023 年 2 月 9 日
0.16.0 2022 年 10 月 19 日
0.14.0 2021 年 6 月 22 日

#4 in #gtk3

Download history 36881/week @ 2024-03-14 40748/week @ 2024-03-21 41252/week @ 2024-03-28 43421/week @ 2024-04-04 42726/week @ 2024-04-11 40929/week @ 2024-04-18 41389/week @ 2024-04-25 41470/week @ 2024-05-02 40078/week @ 2024-05-09 40467/week @ 2024-05-16 37754/week @ 2024-05-23 42340/week @ 2024-05-30 35720/week @ 2024-06-06 36608/week @ 2024-06-13 37680/week @ 2024-06-20 34220/week @ 2024-06-27

150,993 每月下载量
307 个 crate 中使用 (通过 gtk)

MIT 许可证

15KB
282

gtk3-rs CI

该项目已不再维护。请查看 gtk4-rs 代替!

gtk-rs 组织旨在提供基于 GObject 库的安全 Rust 绑定。您可以在 https://gtk-rs.org 上了解更多信息。

此仓库包含 gtk-rs 组织的所有“核心”crate。有关每个 crate 的更多信息,请参阅其目录中的 README.md 文件。

最低支持的 Rust 版本

目前,最低支持的 Rust 版本是 1.70.0

文档

生态系统

gtk3-rs 仓库包含 GTK 3 的 Rust crate。但是,有一个庞大的基于 GObject 库的生态系统,其中许多库都有基于 gtk-rs 包含的工具的 Rust 绑定。特别是

  • gtk-rs-core - 对一些核心库的绑定,例如 glibgiopangographene
  • gstreamer-rs - 对 GStreamer 媒体框架的绑定

此外,各种库的 Rust 绑定托管在 GNOME 的 GitLab 实例上,可在 https://gitlab.gnome.org/World/Rust 上找到。

当使用不属于 gtk-rs 仓库的 crate 时,您需要小心并确保它们不会引入与核心 crate 不兼容的版本,例如 glib-rs

重新生成

要使用 gir 重新生成 crate,请按照以下方式使用 generator.py 文件

$ python3 generator.py

如果您尚未这样做,请在通过以下方式检出所有子模块之前

$ git submodule update --checkout

开发

此仓库主要分为两个分支:mastercratemaster 包含尚未发布的代码,是新发展的地方。 crate 包含最新的发布源代码,不应该进行更新。

此仓库的结构如下

- crate/
   |
   |-- README.md
   |-- Gir.toml
   |-- Cargo.toml
   |-- src/
   |-- sys/

crate 是一个“顶层”目录(例如这里的“atk”或“gdk”)。每个 crate 包含

  • README.md:关于 crate 本身的说明以及一些细节。
  • Cargo.toml:crate 的描述,由 cargoRust 使用。
  • Gir.toml:由 gir 使用的配置,用于生成大部分 crate 的代码。
  • src:crate 的源代码。
  • sys:C API 的 1:1 绑定。

girgir-files 顶层目录不是 crate,而是 git 子模块,分别包含 gir 工具和生成器使用的 gir 文件

运行 generator.py 时,工具将自动更新这些 git 子模块,并在 gir 文件 上运行 gir 工具以重新生成代码。

在开发过程中,使用不同版本的 gir 工具或 gir 文件 执行生成器是有用的,例如在向子模块提交更新之前的 pull request 中测试代码生成是否成功。这可以通过指定生成器脚本的参数来完成,例如,在本地 gir 文件副本上运行生成器

$ python3 generator.py --gir-files-directory ../gir-files/

有关更多信息,请参阅 python3 generator.py --help

依赖关系

~3MB
~58K SLoC