22 个版本 (14 个重大变更)

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.1.1 2015 年 5 月 24 日

#714 in Unix API

Download history 54539/week @ 2024-04-02 51436/week @ 2024-04-09 52357/week @ 2024-04-16 51388/week @ 2024-04-23 49639/week @ 2024-04-30 48048/week @ 2024-05-07 46121/week @ 2024-05-14 46625/week @ 2024-05-21 51829/week @ 2024-05-28 46943/week @ 2024-06-04 42556/week @ 2024-06-11 45090/week @ 2024-06-18 46829/week @ 2024-06-25 45054/week @ 2024-07-02 44362/week @ 2024-07-09 36935/week @ 2024-07-16

180,442 每月下载量
用于 486 个crate (38 个直接使用)

MIT 许可证

250KB
5.5K 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的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.tomlgir使用的配置,用于生成大多数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