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 gpointers 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 NULL terminated array of pointers.

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.