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§
source§impl<T> Clone for LocalCellData<T>
impl<T> Clone for LocalCellData<T>
source§impl<T: Debug> Debug for LocalCellData<T>
impl<T: Debug> Debug for LocalCellData<T>
source§impl<T> Map for LocalCellData<T>where
T: NativeClass,
impl<T> Map for LocalCellData<T>where
T: NativeClass,
source§impl<T> MapMut for LocalCellData<T>where
T: NativeClass,
impl<T> MapMut for LocalCellData<T>where
T: NativeClass,
source§impl<T> UserData for LocalCellData<T>where
T: NativeClass,
impl<T> UserData for LocalCellData<T>where
T: NativeClass,
type Target = T
source§fn new(val: Self::Target) -> Self
fn new(val: Self::Target) -> Self
Creates a new owned wrapper from a
NativeClass instance. Read moresource§fn 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