Trait ToGlibPtr

pub trait ToGlibPtr<'a, P>
where P: Copy,
{ type Storage; // Required method fn to_glib_none(&'a self) -> Stash<'a, P, Self>; // Provided methods fn to_glib_container(&'a self) -> Stash<'a, P, Self> { ... } fn to_glib_full(&self) -> P { ... } }
Expand description

Translate to a pointer.

Required Associated Types§

type Storage

Required Methods§

fn to_glib_none(&'a self) -> Stash<'a, P, Self>

Transfer: none.

The pointer in the Stash is only valid for the lifetime of the Stash.

Provided Methods§

fn to_glib_container(&'a self) -> Stash<'a, P, Self>

Transfer: container.

We transfer the container ownership to the foreign library retaining the elements ownership.

fn to_glib_full(&self) -> P

Transfer: full.

We transfer the ownership to the foreign library.

Dyn Compatibility§

This trait is not dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.

Implementations on Foreign Types§

§

impl<'a> ToGlibPtr<'a, *const i8> for str

§

type Storage = Cow<'static, [u8]>

§

fn to_glib_none(&'a self) -> Stash<'a, *const i8, str>

§

fn to_glib_full(&self) -> *const i8

§

impl<'a> ToGlibPtr<'a, *const i8> for CString

§

impl<'a> ToGlibPtr<'a, *const i8> for String

§

type Storage = Cow<'static, [u8]>

§

fn to_glib_none(&self) -> Stash<'a, *const i8, String>

§

fn to_glib_full(&self) -> *const i8

§

impl<'a> ToGlibPtr<'a, *const i8> for CStr

§

type Storage = PhantomData<&'a CStr>

§

fn to_glib_none(&'a self) -> Stash<'a, *const i8, CStr>

§

fn to_glib_full(&self) -> *const i8

§

impl<'a> ToGlibPtr<'a, *const i8> for OsStr

§

type Storage = CString

§

fn to_glib_none(&'a self) -> Stash<'a, *const i8, OsStr>

§

impl<'a> ToGlibPtr<'a, *const i8> for OsString

§

impl<'a> ToGlibPtr<'a, *const i8> for Path

§

type Storage = CString

§

fn to_glib_none(&'a self) -> Stash<'a, *const i8, Path>

§

impl<'a> ToGlibPtr<'a, *const i8> for PathBuf

§

impl<'a> ToGlibPtr<'a, *mut i8> for str

§

type Storage = Cow<'static, [u8]>

§

fn to_glib_none(&'a self) -> Stash<'a, *mut i8, str>

§

fn to_glib_full(&self) -> *mut i8

§

impl<'a> ToGlibPtr<'a, *mut i8> for CString

§

impl<'a> ToGlibPtr<'a, *mut i8> for String

§

type Storage = Cow<'static, [u8]>

§

fn to_glib_none(&self) -> Stash<'a, *mut i8, String>

§

fn to_glib_full(&self) -> *mut i8

§

impl<'a> ToGlibPtr<'a, *mut i8> for CStr

§

type Storage = PhantomData<&'a CStr>

§

fn to_glib_none(&'a self) -> Stash<'a, *mut i8, CStr>

§

fn to_glib_full(&self) -> *mut i8

§

impl<'a> ToGlibPtr<'a, *mut i8> for OsStr

§

type Storage = CString

§

fn to_glib_none(&'a self) -> Stash<'a, *mut i8, OsStr>

§

fn to_glib_full(&self) -> *mut i8

§

impl<'a> ToGlibPtr<'a, *mut i8> for OsString

§

impl<'a> ToGlibPtr<'a, *mut i8> for Path

§

type Storage = CString

§

fn to_glib_none(&'a self) -> Stash<'a, *mut i8, Path>

§

fn to_glib_full(&self) -> *mut i8

§

impl<'a> ToGlibPtr<'a, *mut i8> for PathBuf

§

type Storage = CString

§

fn to_glib_none(&'a self) -> Stash<'a, *mut i8, PathBuf>

§

fn to_glib_full(&self) -> *mut i8

§

impl<'a> ToGlibPtr<'a, *mut GHashTable> for HashMap<String, String>

§

impl<'a> ToGlibPtr<'a, *mut _GIOExtension> for &'a IOExtension

§

type Storage = PhantomData<&'a IOExtension>

§

fn to_glib_none(&self) -> Stash<'a, *mut _GIOExtension, &'a IOExtension>

§

impl<'a> ToGlibPtr<'a, *mut _GIOExtensionPoint> for &'a IOExtensionPoint

§

type Storage = PhantomData<&'a IOExtensionPoint>

§

fn to_glib_none( &self, ) -> Stash<'a, *mut _GIOExtensionPoint, &'a IOExtensionPoint>

§

impl<'a> ToGlibPtr<'a, *mut cairo_device_t> for Device

§

type Storage = PhantomData<&'a Device>

§

fn to_glib_none(&'a self) -> Stash<'a, *mut cairo_device_t, Device>

§

fn to_glib_full(&self) -> *mut cairo_device_t

§

impl<'a> ToGlibPtr<'a, *mut cairo_surface_t> for ImageSurface

§

type Storage = PhantomData<&'a Surface>

§

fn to_glib_none(&'a self) -> Stash<'a, *mut cairo_surface_t, ImageSurface>

§

fn to_glib_full(&self) -> *mut cairo_surface_t

§

impl<'a> ToGlibPtr<'a, *mut cairo_surface_t> for RecordingSurface

§

type Storage = PhantomData<&'a Surface>

§

fn to_glib_none(&'a self) -> Stash<'a, *mut cairo_surface_t, RecordingSurface>

§

fn to_glib_full(&self) -> *mut cairo_surface_t

§

impl<'a> ToGlibPtr<'a, *mut cairo_surface_t> for Surface

§

type Storage = PhantomData<&'a Surface>

§

fn to_glib_none(&'a self) -> Stash<'a, *mut cairo_surface_t, Surface>

§

fn to_glib_full(&self) -> *mut cairo_surface_t

§

impl<'a> ToGlibPtr<'a, *mut cairo_t> for &'a Context

§

type Storage = PhantomData<&'a Context>

§

fn to_glib_none(&self) -> Stash<'a, *mut cairo_t, &'a Context>

§

fn to_glib_full(&self) -> *mut cairo_t

§

impl<'a, P, T> ToGlibPtr<'a, P> for Cow<'a, T>
where P: Ptr, T: ToOwned + ToGlibPtr<'a, P> + ?Sized, <T as ToOwned>::Owned: ToGlibPtr<'a, P>,

§

type Storage = CowStash<<T as ToGlibPtr<'a, P>>::Storage, <<T as ToOwned>::Owned as ToGlibPtr<'a, P>>::Storage>

§

fn to_glib_none(&'a self) -> Stash<'a, P, Cow<'a, T>>

§

fn to_glib_full(&self) -> P

§

impl<'a, P, T> ToGlibPtr<'a, P> for Option<T>
where P: Ptr, T: ToGlibPtr<'a, P>,

§

type Storage = Option<<T as ToGlibPtr<'a, P>>::Storage>

§

fn to_glib_none(&'a self) -> Stash<'a, P, Option<T>>

§

fn to_glib_full(&self) -> P

§

impl<'a, P, T> ToGlibPtr<'a, P> for &'a T
where P: Ptr, T: ToGlibPtr<'a, P> + ?Sized,

§

type Storage = <T as ToGlibPtr<'a, P>>::Storage

§

fn to_glib_none(&'a self) -> Stash<'a, P, &'a T>

§

fn to_glib_full(&self) -> P

§

impl<'a, P, T> ToGlibPtr<'a, P> for [T]
where P: Ptr, T: ToGlibContainerFromSlice<'a, P>,

§

type Storage = <T as ToGlibContainerFromSlice<'a, P>>::Storage

§

fn to_glib_none(&'a self) -> Stash<'a, P, [T]>

§

fn to_glib_container(&'a self) -> Stash<'a, P, [T]>

§

fn to_glib_full(&self) -> P

Implementors§

§

impl<'a> ToGlibPtr<'a, *const *const i8> for StrVRef

§

impl<'a> ToGlibPtr<'a, *const *mut i8> for StrV

§

impl<'a> ToGlibPtr<'a, *mut *mut i8> for StrV

§

impl<'a, T> ToGlibPtr<'a, *const <T as GlibPtrDefault>::GlibType> for PtrSlice<T>
where T: TransparentPtrType + 'a,

§

impl<'a, T> ToGlibPtr<'a, *const <T as TransparentType>::GlibType> for Slice<T>
where T: TransparentType + 'a,

§

type Storage = PhantomData<&'a Slice<T>>

§

impl<'a, T> ToGlibPtr<'a, *const GList> for List<T>
where T: TransparentPtrType + 'a,

§

type Storage = PhantomData<&'a List<T>>

§

impl<'a, T> ToGlibPtr<'a, *const GSList> for SList<T>
where T: TransparentPtrType + 'a,

§

type Storage = PhantomData<&'a SList<T>>

§

impl<'a, T> ToGlibPtr<'a, *mut <T as GlibPtrDefault>::GlibType> for PtrSlice<T>
where T: TransparentPtrType + 'a,

§

impl<'a, T> ToGlibPtr<'a, *mut <T as TransparentType>::GlibType> for Slice<T>
where T: TransparentType + 'a,

§

type Storage = PhantomData<&'a Slice<T>>

§

impl<'a, T> ToGlibPtr<'a, *mut GList> for List<T>
where T: TransparentPtrType + 'a,

§

type Storage = PhantomData<&'a List<T>>

§

impl<'a, T> ToGlibPtr<'a, *mut GSList> for SList<T>
where T: TransparentPtrType + 'a,

§

type Storage = PhantomData<&'a SList<T>>

§

impl<'a, T, MM> ToGlibPtr<'a, *const T> for Boxed<T, MM>
where T: 'static, MM: BoxedMemoryManager<Target = T>,

§

type Storage = PhantomData<&'a Boxed<T, MM>>

§

impl<'a, T, MM> ToGlibPtr<'a, *mut T> for Shared<T, MM>
where T: 'static, MM: SharedMemoryManager<Target = T> + 'static,

§

type Storage = PhantomData<&'a Shared<T, MM>>