Expand description
§outsource-heap
This library provides tools for outsourcing your heap allocations to various places, including:
- A local file
- A network drive
- Anything which implements the
Storetrait, like aVec<MaybeUninit<u8>>
Generally speaking, using this library is a bad idea. Once the Rust standard library has a stable allocator API this library will (hopefully) be made wholly obsolete.
In the meantime, let’s do some cursed nonsense.
§Getting Started
This crate provides a global allocator, which is used to intercept all allocations in your program so it can decide where to direct them. Therefore, the following must be placed somewhere in your project:
#[global_allocator]
static ALLOC: outsource_heap::Global = outsource_heap::Global::system();Modules§
- bounded
- A port of my
bounded_allocmodule from Monadic Bot. Unlike the original, this one is more tightly bound to the closures it is used with. Also unlike the original, this one does not rely on undefined behavior. By default, that is. There are two ways to make this bounded allocator useful: - file_
backed - This module provides an example file backed allocator, which can be used with
the scoped allocator methods provided by this crate.
It is a simple wrapper for the
linked_list_allocatorcrate.
Macros§
- with_
max_ alloc - Run a task with a statically known bound on allocation.
Structs§
- Global
- The top level
GlobalAllocimplementor. Handles forwarding to various scoped allocators, and tracking what to deallocate each pointer with.
Traits§
- Store
- This trait is a shim for the
GlobalAlloctrait, defined so that we can implement it forstddefined types likeVec. See those docs for information on how to implement this trait correctly.
Functions§
- run
- Run a closure using a chosen global allocator. Threads spawned inside this closure will not use the assigned allocator.
- run_
async - Transform a Future to use a chosen global allocator. Threads spawned by this Future will not use the assigned allocator.
- run_
async_ ⚠borrowed - Transform a Future to use a chosen global allocator, with a non
'staticlifetime. - run_
borrowed ⚠ - Run a closure using a chosen global allocator, with a non
'staticlifetime.