use std::{alloc::Layout, ptr::NonNull}; use allocator_api2::alloc::{AllocError, Allocator}; /// SAFETY: /// unsafe impl Allocator for &crate::Allocator { #[inline] fn allocate(&self, layout: Layout) -> Result, AllocError> { (&self.bump).allocate(layout) } #[inline] unsafe fn deallocate(&self, ptr: NonNull, layout: Layout) { (&self.bump).deallocate(ptr, layout); } #[inline] unsafe fn shrink( &self, ptr: NonNull, old_layout: Layout, new_layout: Layout, ) -> Result, AllocError> { (&self.bump).shrink(ptr, old_layout, new_layout) } #[inline] unsafe fn grow( &self, ptr: NonNull, old_layout: Layout, new_layout: Layout, ) -> Result, AllocError> { (&self.bump).grow(ptr, old_layout, new_layout) } #[inline] unsafe fn grow_zeroed( &self, ptr: NonNull, old_layout: Layout, new_layout: Layout, ) -> Result, AllocError> { (&self.bump).grow_zeroed(ptr, old_layout, new_layout) } }