6 个版本 (破坏性更新)

0.18.0 2023 年 8 月 13 日
0.17.0 2023 年 2 月 9 日
0.16.0 2022 年 10 月 19 日
0.15.1 2022 年 1 月 15 日
0.10.0 2020 年 7 月 4 日

#969Unix API

Download history 33411/week @ 2024-04-22 33596/week @ 2024-04-29 32587/week @ 2024-05-06 32429/week @ 2024-05-13 30736/week @ 2024-05-20 31477/week @ 2024-05-27 31685/week @ 2024-06-03 28812/week @ 2024-06-10 30178/week @ 2024-06-17 30044/week @ 2024-06-24 32813/week @ 2024-07-01 31474/week @ 2024-07-08 30626/week @ 2024-07-15 33692/week @ 2024-07-22 34513/week @ 2024-07-29 36249/week @ 2024-08-05

138,535 每月下载量
用于 112 个 crate(4 个直接使用)

MIT 许可证

275KB
6K SLoC

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实例上,可以在以下位置找到:GNOME的GitLabhttps://gitlab.gnome.org/World/Rust

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

重新生成

要使用 gir 重新生成crates,请按照以下方式使用 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

依赖关系

~2.5MB
~46K SLoC