use crate::for_generated::StdArc;
use crate::rust_opaque::RustOpaqueNom;
pub unsafe fn decode_rust_opaque_nom<T: Send + Sync>(ptr: usize) -> RustOpaqueNom<T> {
RustOpaqueNom::from_arc(StdArc::<T>::from_raw(ptr))
}
#[doc(hidden)]
#[macro_export]
macro_rules! frb_generated_rust_opaque_dart2rust {
() => {
use $crate::for_generated::decode_rust_opaque_nom;
fn decode_rust_opaque_moi<T: MoiArcValue + Send + Sync>(ptr: usize) -> RustOpaqueMoi<T> {
RustOpaqueMoi::from_arc(MoiArc::<T>::from_raw(ptr))
}
};
}
#[cfg(test)]
mod tests {
use super::decode_rust_opaque_nom;
use crate::RustOpaqueNom;
#[test]
fn decodes_raw_nominal_opaque_pointer() {
let raw = RustOpaqueNom::new(42).sse_encode_raw().0;
let decoded = unsafe { decode_rust_opaque_nom::<i32>(raw) };
assert_eq!(*decoded, 42);
}
}