use core::alloc::{self, Allocator};
use core::ptr::NonNull;
pub unsafe trait Fallbackable: Allocator {
unsafe fn has_allocated(&self, ptr: NonNull<u8>, layout: alloc::Layout) -> bool;
fn allows_fallback(&self, layout: alloc::Layout) -> bool;
}
unsafe impl<'a, T: Fallbackable + ?Sized> Fallbackable for &'a T {
unsafe fn has_allocated(&self, ptr: NonNull<u8>, layout: alloc::Layout) -> bool {
(*self).has_allocated(ptr, layout)
}
fn allows_fallback(&self, layout: alloc::Layout) -> bool {
(*self).allows_fallback(layout)
}
}
pub unsafe trait NonUnwinding: Allocator { }
unsafe impl<'a, T: NonUnwinding + ?Sized> NonUnwinding for &'a T { }