#[derive(Debug)]
pub struct FFIWrapper<'a, T, Owner> {
pub ffi_object: T,
_marker: std::marker::PhantomData<&'a Owner>,
}
impl<T, Owner> FFIWrapper<'_, T, Owner> {
pub const fn new(ffi_object: T) -> Self {
FFIWrapper {
ffi_object,
_marker: std::marker::PhantomData,
}
}
pub fn into_inner(self) -> T {
self.ffi_object
}
}
impl<T, Owner> std::ops::Deref for FFIWrapper<'_, T, Owner> {
type Target = T;
fn deref(&self) -> &Self::Target {
&self.ffi_object
}
}
impl<T, Owner> std::ops::DerefMut for FFIWrapper<'_, T, Owner> {
fn deref_mut(&mut self) -> &mut Self::Target {
&mut self.ffi_object
}
}