use crate::{Array, Type}; pub struct ArrayProxy> { data: *mut *mut T::Default, len: *mut u32, temp: core::mem::ManuallyDrop>, } pub unsafe fn array_proxy>(data: *mut *mut T::Default, len: *mut u32) -> ArrayProxy { ArrayProxy { data, len, temp: core::mem::ManuallyDrop::new(Array::new()), } } impl> Drop for ArrayProxy { fn drop(&mut self) { unsafe { *self.data = self.temp.data; *self.len = self.temp.len; } } } impl> core::ops::Deref for ArrayProxy { type Target = Array; fn deref(&self) -> &Array { &self.temp } } impl> core::ops::DerefMut for ArrayProxy { fn deref_mut(&mut self) -> &mut Array { &mut self.temp } }