composable_allocators/
impossible.rs

1use crate::base::*;
2use core::alloc::{self, AllocError, Allocator};
3use core::ptr::NonNull;
4
5#[derive(Copy, Clone)]
6pub struct Impossible(pub !);
7
8unsafe impl NonUnwinding for Impossible { }
9
10unsafe impl Fallbackable for Impossible {
11    unsafe fn has_allocated(&self, _ptr: NonNull<u8>, _layout: alloc::Layout) -> bool {
12        self.0
13    }
14
15    fn allows_fallback(&self, _layout: alloc::Layout) -> bool {
16        self.0
17    }
18}
19
20unsafe impl Allocator for Impossible {
21    fn allocate(&self, _layout: alloc::Layout) -> Result<NonNull<[u8]>, AllocError> {
22        self.0
23    }
24
25    fn allocate_zeroed(&self, _layout: alloc::Layout) -> Result<NonNull<[u8]>, AllocError> {
26        self.0
27    }
28
29    unsafe fn deallocate(&self, _ptr: NonNull<u8>, _layout: alloc::Layout) {
30        self.0
31    }
32
33    unsafe fn grow(
34        &self, 
35        _ptr: NonNull<u8>, 
36        _old_layout: alloc::Layout, 
37        _new_layout: alloc::Layout
38    ) -> Result<NonNull<[u8]>, AllocError> {
39        self.0
40    }
41
42    unsafe fn grow_zeroed(
43        &self, 
44        _ptr: NonNull<u8>, 
45        _old_layout: alloc::Layout, 
46        _new_layout: alloc::Layout
47    ) -> Result<NonNull<[u8]>, AllocError> {
48        self.0
49    }
50
51    unsafe fn shrink(
52        &self, 
53        _ptr: NonNull<u8>, 
54        _old_layout: alloc::Layout, 
55        _new_layout: alloc::Layout
56    ) -> Result<NonNull<[u8]>, AllocError> {
57        self.0
58    }
59}