Module glib::translate
[−]
[src]
Translation between GLib/GLib-based FFI types and their Rust counterparts.
This module allows library bindings authors to decouple type translation logic and use unified idioms at FFI boundaries. It also implements translation of GLib core data types.
FromGlib
, from_glib
and ToGlib
translate simple types like bool
.
pub fn set_accept_focus(&self, accept_focus: bool) { unsafe { ffi::gdk_window_set_accept_focus(self.pointer, accept_focus.to_glib()) } } pub fn get_accept_focus(&self) -> bool { unsafe { from_glib(ffi::gdk_window_get_accept_focus(self.pointer)) } }
FromGlibPtr
(from_glib_none
and from_glib_full
) and ToGlibPtr
work on gpointer
s
and support different modes of ownership transfer.
fn get_title(&self) -> Option<String> { unsafe { let title = ffi::gtk_window_get_title(self.pointer); from_glib_none(title) } }
Letting the foreign library borrow pointers from the Rust side often
requires having a temporary variable of an intermediate type (e.g. CString
).
A Stash
contains the temporary storage and a pointer into it that
is valid for the lifetime of the Stash
. As the lifetime of the Stash
returned
from to_glib_none
is at least the enclosing statement, you can avoid explicitly
binding the stash in most cases and just take the pointer out of it:
pub fn set_icon_name(&self, name: &str) { unsafe { ffi::gdk_window_set_icon_name(self.pointer, name.to_glib_none().0) } }
Structs
HashTable | |
PtrArray |
Temporary storage for passing a |
Stash |
Helper type that stores temporary values used for translation. |
Traits
FromGlib |
Translate a simple type. |
FromGlibPtr |
Translate from a pointer type. |
FromGlibPtrContainer |
Translate from a container of pointers. |
Ptr |
A pointer |
ToGlib |
Translate a simple type. |
ToGlibPtr |
Translate to a pointer. |
Functions
from_glib |
Translate a simple type. |
from_glib_full |
Translate from a pointer type, transfer: full (assume ownership). |
from_glib_none |
Translate from a pointer type, transfer: none. |