1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37
use crate::allocators::global::current_allocator_in_use::CurrentAllocatorInUse; use crate::allocators::global::local_allocator::LocalAllocator; #[doc(hidden)] #[allow(dead_code)] pub struct PerThreadState< CoroutineLocalAllocator: LocalAllocator, ThreadLocalAllocator: LocalAllocator, > { pub current_allocator_in_use: CurrentAllocatorInUse, pub coroutine_local_allocator: Option<CoroutineLocalAllocator>, pub thread_local_allocator: Option<ThreadLocalAllocator>, } impl<CoroutineLocalAllocator: LocalAllocator, ThreadLocalAllocator: LocalAllocator> PerThreadState<CoroutineLocalAllocator, ThreadLocalAllocator> { #[doc(hidden)] #[inline(always)] pub const fn empty() -> Self { Self { current_allocator_in_use: CurrentAllocatorInUse::Global, coroutine_local_allocator: None, thread_local_allocator: None, } } #[doc(hidden)] #[inline(always)] pub const fn thread_local_first() -> Self { Self { current_allocator_in_use: CurrentAllocatorInUse::ThreadLocal, coroutine_local_allocator: None, thread_local_allocator: None, } } }