[][src]Trait gdnative_core::user_data::UserData

pub unsafe trait UserData: Sized + Clone {
    type Target: NativeClass;
    fn new(val: Self::Target) -> Self;
unsafe fn into_user_data(self) -> *const c_void;
unsafe fn consume_user_data_unchecked(ptr: *const c_void) -> Self;
unsafe fn clone_from_user_data_unchecked(ptr: *const c_void) -> Self; }

Trait for customizable user-data wrappers.

See module-level documentation for detailed explanation on user-data.

Associated Types

Loading content...

Required methods

fn new(val: Self::Target) -> Self

Creates a new owned wrapper from a NativeClass instance.

unsafe fn into_user_data(self) -> *const c_void

Takes a native instance and returns an opaque pointer that can be used to recover it.

This gives "ownership" to the engine.

unsafe fn consume_user_data_unchecked(ptr: *const c_void) -> Self

Takes an opaque pointer produced by into_user_data and "consumes" it to produce the original instance, keeping the reference count.

This should be used when "ownership" is taken from the engine, i.e. destructors. Use elsewhere can lead to premature drops of the instance contained inside.

unsafe fn clone_from_user_data_unchecked(ptr: *const c_void) -> Self

Takes an opaque pointer produced by into_user_data and "clones" it to produce the original instance, increasing the reference count.

This should be used when user data is "borrowed" from the engine.

Loading content...

Implementors

impl<T> UserData for ArcData<T> where
    T: NativeClass + Send + Sync
[src]

type Target = T

impl<T> UserData for LocalCellData<T> where
    T: NativeClass
[src]

type Target = T

impl<T, OPT> UserData for MutexData<T, OPT> where
    T: NativeClass + Send,
    OPT: LockOptions
[src]

type Target = T

impl<T, OPT> UserData for RwLockData<T, OPT> where
    T: NativeClass + Send + Sync,
    OPT: LockOptions
[src]

type Target = T

Loading content...