[][src]Trait context_allocator::global::GlobalThreadAndCoroutineSwitchableAllocator

pub trait GlobalThreadAndCoroutineSwitchableAllocator: Sync + GlobalAlloc + Alloc + Allocator {
    type CoroutineLocalAllocator: LocalAllocator;
    type ThreadLocalAllocator: LocalAllocator;
    type GlobalAllocator: Allocator;
    fn replace_coroutine_local_allocator(
        &self,
        replacement: Option<Self::CoroutineLocalAllocator>
    ) -> Option<Self::CoroutineLocalAllocator>;
fn initialize_thread_local_allocator(
        &self,
        thread_local_allocator: Self::ThreadLocalAllocator
    );
fn drop_thread_local_allocator(&self);
fn save_current_allocator_in_use(&self) -> CurrentAllocatorInUse;
fn restore_current_allocator_in_use(
        &self,
        restore_to: CurrentAllocatorInUse
    );
fn coroutine_local_allocator(
        &self
    ) -> Option<&Self::CoroutineLocalAllocator>;
fn thread_local_allocator(&self) -> Option<&Self::ThreadLocalAllocator>;
fn global_allocator(&self) -> &Self::GlobalAllocator; }

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.

Loading content...

Required methods

fn replace_coroutine_local_allocator(
    &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
)

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.

Loading content...

Implementors

Loading content...