...
This commit is contained in:
@@ -356,8 +356,7 @@ impl ItemData {
|
||||
/// The native value must have been stored via from_native().
|
||||
/// Returns a guard that holds the lock on the native_values registry.
|
||||
pub fn native<T: Any + Send + Sync + 'static>(&self) -> MizeResult<NativeRefGuard<T>> {
|
||||
let mize_arc = crate::GLOBAL_MIZE.get().ok_or(mize_err!("No global Mize"))?;
|
||||
let mize = mize_arc.lock().map_err(|_| mize_err!("Failed to lock global Mize"))?;
|
||||
let mize = get_global_mize()?;
|
||||
let native_values = mize.native_values.lock().map_err(|_| mize_err!("Failed to lock native_values"))?;
|
||||
|
||||
let id_data = self.get_path("_native")
|
||||
@@ -389,8 +388,7 @@ impl ItemData {
|
||||
/// The native value must have been stored via from_native().
|
||||
/// Returns a guard that holds the lock on the native_values registry.
|
||||
pub fn native_mut<T: Any + Send + Sync + 'static>(&self) -> MizeResult<NativeMutRefGuard<T>> {
|
||||
let mize_arc = crate::GLOBAL_MIZE.get().ok_or(mize_err!("No global Mize"))?;
|
||||
let mize = mize_arc.lock().map_err(|_| mize_err!("Failed to lock global Mize"))?;
|
||||
let mize = get_global_mize()?;
|
||||
let mut native_values = mize.native_values.lock().map_err(|_| mize_err!("Failed to lock native_values"))?;
|
||||
|
||||
let id_data = self.get_path("_native")
|
||||
@@ -418,11 +416,18 @@ impl ItemData {
|
||||
})
|
||||
}
|
||||
|
||||
/// Get a clone of the native value stored in this ItemData.
|
||||
/// The native value must have been stored via from_native().
|
||||
/// This is useful when you need to pass the value by ownership (e.g., as a function argument).
|
||||
pub fn native_clone<T: Any + Send + Sync + Clone + 'static>(&self) -> MizeResult<T> {
|
||||
let guard = self.native::<T>()?;
|
||||
Ok(guard.clone())
|
||||
}
|
||||
|
||||
/// Take the native value from this ItemData, removing it from the registry.
|
||||
/// The native value must have been stored via from_native().
|
||||
pub fn native_take<T: Any + Send + Sync + 'static>(&self) -> MizeResult<T> {
|
||||
let mize_arc = crate::GLOBAL_MIZE.get().ok_or(mize_err!("No global Mize"))?;
|
||||
let mize = mize_arc.lock().map_err(|_| mize_err!("Failed to lock global Mize"))?;
|
||||
let mize = get_global_mize()?;
|
||||
let mut native_values = mize.native_values.lock().map_err(|_| mize_err!("Failed to lock native_values"))?;
|
||||
|
||||
let id_data = self.get_path("_native")
|
||||
|
||||
Reference in New Issue
Block a user