Infrastructure for writing GObject subclasses in the Rust programming language, and (in the future) bindings for GObject and GIO classes.
Example usage of this can be found here
- gst-plugin-rs: GStreamer plugin writing infrastructure
- gtk-subclass: GTK class bindings
This is different to gnome-class as it does not require usage of a C#-like DSL in a heavy procedural macro, but instead works directly with Rust traits. Both are built on top of the user-level GLib/GObject/GTK gtk-rs bindings.
It will likely not support all features gnome-class
will support. For
example it is not easily possible to create new GObject subclasses and expose
them to C with the whole instance/class struct and allow adding new virtual
methods. Subclassing and overriding of existing GObject virtual methods from C
however is perfectly possible.
gobject-subclass and all crates contained in here that are not listed below are licensed under either of
- Apache License, Version 2.0, (LICENSE-APACHE or http://www.apache.org/licenses/LICENSE-2.0)
- MIT license (LICENSE-MIT or http://opensource.org/licenses/MIT)
at your option.
GLib/GObject itself is licensed under the Lesser General Public License version 2.1 or (at your option) any later version: https://www.gnu.org/licenses/lgpl-2.1.html
Any kinds of contributions are welcome as a pull request.
Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in gobject-subclass by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.