Module translate

Source
Expand description

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 { gdk_sys::gdk_window_set_accept_focus(self.pointer, accept_focus.to_glib()) }
    }

    pub fn get_accept_focus(&self) -> bool {
        unsafe { from_glib(gdk_sys::gdk_window_get_accept_focus(self.pointer)) }
    }

ToGlibPtr, FromGlibPtrNone, FromGlibPtrFull and FromGlibPtrBorrow work on gpointers and support different modes of ownership transfer.

    fn get_title(&self) -> Option<String> {
        unsafe {
            let title = gtk_sys::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 {
            gdk_sys::gdk_window_set_icon_name(self.pointer, name.to_glib_none().0)
        }
    }

Structs§

Array
HashTable
List
SList
Stash
Helper type that stores temporary values used for translation.
StashMut

Traits§

FromGlib
Translate a simple type.
FromGlibContainer
Translate from a container.
FromGlibContainerAsVec
FromGlibPtrArrayContainerAsVec
FromGlibPtrBorrow
Translate from a pointer type by borrowing. Don’t increase the refcount
FromGlibPtrContainer
Translate from a container of pointers.
FromGlibPtrFull
Translate from a pointer type taking ownership, transfer: full.
FromGlibPtrNone
Translate from a pointer type without taking ownership, transfer: none.
GlibPtrDefault
Provides the default pointer type to be used in some container conversions.
Ptr
A pointer
ToBool
ToGlib
Translate a simple type.
ToGlibContainerFromSlice
ToGlibPtr
Translate to a pointer.
ToGlibPtrMut
Translate to a pointer with a mutable borrow.
Uninitialized
A trait for creating an uninitialized value. Handy for receiving outparams.

Functions§

c_ptr_array_len
const_override
Overrides pointer constness.
from_glib
Translate a simple type.
from_glib_borrow
Translate from a pointer type, borrowing the pointer.
from_glib_full
Translate from a pointer type, transfer: full (assume ownership).
from_glib_none
Translate from a pointer type, transfer: none.
mut_override
Overrides pointer mutability.
some_if
Returns Some(val) if the condition is true and None otherwise.
uninitialized
Returns an uninitialized value.