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
Auto Trait Implementations§
impl<T> Freeze for LocalCellData<T>
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§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more