[−][src]Trait context_allocator::global::GlobalThreadAndCoroutineSwitchableAllocator
A trait that all such allocators implement.
Create a new instance using the macro global_thread_and_coroutine_switchable_allocator
.
Associated Types
type CoroutineLocalAllocator: LocalAllocator
Type of the coroutine local allocator.
type ThreadLocalAllocator: LocalAllocator
Type of the thread local allocator.
type GlobalAllocator: Allocator
Type of the global allocator.
Required methods
fn replace_coroutine_local_allocator(
&self,
replacement: Option<Self::CoroutineLocalAllocator>
) -> Option<Self::CoroutineLocalAllocator>
&self,
replacement: Option<Self::CoroutineLocalAllocator>
) -> Option<Self::CoroutineLocalAllocator>
Swaps the coroutine local allocator.
Used before calling a coroutine.
Used after calling a coroutine.
fn initialize_thread_local_allocator(
&self,
thread_local_allocator: Self::ThreadLocalAllocator
)
&self,
thread_local_allocator: Self::ThreadLocalAllocator
)
Initializes the thread local allocator.
fn drop_thread_local_allocator(&self)
Drops the thread local allocator.
Panics in debug if no thread local allocator has been initialized with initialize_thread_local_allocator()
.
Could be made hidden by using a destructor with libc::pthread_key_create()
for an otherwise unused key.
fn save_current_allocator_in_use(&self) -> CurrentAllocatorInUse
Save the current allocator in use.
fn restore_current_allocator_in_use(&self, restore_to: CurrentAllocatorInUse)
Restore the current allocator in use.
fn coroutine_local_allocator(&self) -> Option<&Self::CoroutineLocalAllocator>
Obtain the current coroutine local allocator, if any.
fn thread_local_allocator(&self) -> Option<&Self::ThreadLocalAllocator>
Obtain the thread local allocator.
None if no thread local allocator has been initialized with initialize_thread_local_allocator()
.
fn global_allocator(&self) -> &Self::GlobalAllocator
Obtain the global allocator.