Struct gdnative_core::export::user_data::LocalCellData
source · [−]pub struct LocalCellData<T> { /* private fields */ }
Expand description
User-data wrapper analogous to a Arc<RefCell<T>>
, that is restricted to the thread
where it was originally created. The destructor of T
is not guaranteed to be run if
this is actually shared across multiple threads.
This works by checking ThreadId
before touching the underlying reference. If the id
doesn’t match the original thread, map
and map_mut
will return an error.
Since it isn’t possible to control where the last reference is dropped, the destructor
isn’t run if the last reference is dropped on a different thread than the one where the
wrapper was originally created. To ensure that values are cleaned up properly, keep the
game single-threaded, or use a real thread-safe wrapper such as MutexData
instead.
Trait Implementations
sourceimpl<T> Clone for LocalCellData<T>
impl<T> Clone for LocalCellData<T>
sourceimpl<T: Debug> Debug for LocalCellData<T>
impl<T: Debug> Debug for LocalCellData<T>
sourceimpl<T> Map for LocalCellData<T>where
T: NativeClass,
impl<T> Map for LocalCellData<T>where
T: NativeClass,
sourceimpl<T> MapMut for LocalCellData<T>where
T: NativeClass,
impl<T> MapMut for LocalCellData<T>where
T: NativeClass,
sourceimpl<T> UserData for LocalCellData<T>where
T: NativeClass,
impl<T> UserData for LocalCellData<T>where
T: NativeClass,
type Target = T
sourcefn new(val: Self::Target) -> Self
fn new(val: Self::Target) -> Self
Creates a new owned wrapper from a
NativeClass
instance. Read moresourcefn into_user_data(self) -> *const c_void
fn into_user_data(self) -> *const c_void
Takes a native instance and returns an opaque pointer that can be used to recover it. Read more
sourceunsafe fn consume_user_data_unchecked(ptr: *const c_void) -> Self
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. Read moresourceunsafe fn clone_from_user_data_unchecked(ptr: *const c_void) -> Self
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. Read moreAuto Trait Implementations
impl<T> !RefUnwindSafe for LocalCellData<T>
impl<T> Send for LocalCellData<T>
impl<T> Sync for LocalCellData<T>
impl<T> Unpin for LocalCellData<T>
impl<T> !UnwindSafe for LocalCellData<T>
Blanket Implementations
sourceimpl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
const: unstable · sourcefn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more