26 个版本 (14 个重大更改)

0.18.0 2023 年 8 月 13 日
0.17.0 2023 年 2 月 9 日
0.16.0 2022 年 10 月 19 日
0.15.3 2022 年 1 月 31 日
0.1.3 2015 年 7 月 18 日

1271GUI

Download history 51936/week @ 2024-04-22 49602/week @ 2024-04-29 47803/week @ 2024-05-06 47159/week @ 2024-05-13 46330/week @ 2024-05-20 50101/week @ 2024-05-27 48898/week @ 2024-06-03 41831/week @ 2024-06-10 45423/week @ 2024-06-17 46168/week @ 2024-06-24 46207/week @ 2024-07-01 43715/week @ 2024-07-08 44349/week @ 2024-07-15 46760/week @ 2024-07-22 52328/week @ 2024-07-29 51022/week @ 2024-08-05

每月 199,129 次下载
487 个工具包中使用了它(直接使用 58 个)

MIT 许可证

1.5MB
32K SLoC

gtk3-rs CI

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

gtk-rs 组织旨在提供基于 GObject 库的安全 Rust 绑定。更多关于它的信息可以在 https://gtk-rs.org 找到。

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

最低支持的 Rust 版本

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

文档

生态系统

gtk3-rs 仓库包含 GTK 3 的 Rust 工具包。然而,有一个庞大的 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 文件 执行生成器是有用的,例如在提交拉取请求以更新子模块之前测试代码生成是否成功。这可以通过指定生成器脚本的参数来完成,例如,运行生成器在 gir 文件的本地副本上

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

有关详细信息,请参阅 python3 generator.py --help

依赖项

~1.3–1.9MB
~38K SLoC