composable_allocators/
impossible.rs1use 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}