pub struct SegregatedBumpAllocator;Expand description
Minimal Allocator with Fixed Bins + Bump Pointer Fallback.
极简固定分箱 + Bump Pointer 回退分配器。
§Design Philosophy
- Extreme Size: Abandon Coalescing and Splitting, remove all complex list traversals and metadata headers.
- Speed First: Small object allocation/deallocation are strictly O(1).
- Use Cases: Wasm Serverless functions, short-lived scripts, or scenarios with ample memory but sensitive to startup speed/size.
§设计哲学
- 极简体积:放弃合并(Coalescing)与拆分(Splitting),移除所有复杂的链表遍历和元数据头。
- 速度优先:小对象分配/释放均为严格的 O(1)。
- 场景定位:Wasm Serverless 函数、短生命周期脚本、或内存充裕但对启动速度/体积敏感的场景。
§Memory Layout
- Bin 0: 16 Bytes (for Box
, small structs) - Bin 1: 32 Bytes
- Bin 2: 64 Bytes
- Bin 3: 128 Bytes
- Large: > 128 Bytes, allocated directly using Bump Pointer, not reused.
§内存布局
- Bin 0: 16 Bytes (用于 Box
, small structs) - Bin 1: 32 Bytes
- Bin 2: 64 Bytes
- Bin 3: 128 Bytes
- Large: > 128 Bytes,直接使用 Bump Pointer 分配,不复用。
Implementations§
Trait Implementations§
Source§impl GlobalAlloc for SegregatedBumpAllocator
impl GlobalAlloc for SegregatedBumpAllocator
Source§unsafe fn alloc(&self, layout: Layout) -> *mut u8
unsafe fn alloc(&self, layout: Layout) -> *mut u8
Allocates memory as described by the given
layout. Read moreimpl Sync for SegregatedBumpAllocator
Safety Warning:
Allocators in this module are designed for [Single Threaded] environments.
Sync is implemented only to satisfy GlobalAlloc trait requirements.
Using this allocator in a multi-threaded environment will lead to Undefined Behavior (UB).
Please ensure it is used only in single-threaded environments (e.g., WASM or single-threaded embedded).
安全性警示 (Safety Warning):
本模块中的分配器均为【单线程】设计。
实现了 Sync 仅为了满足 GlobalAlloc trait 的要求。
在多线程环境中使用此分配器会导致未定义行为 (UB)。
请确保只在单线程环境(如 WASM 或单线程嵌入式环境)中使用。
Auto Trait Implementations§
impl Freeze for SegregatedBumpAllocator
impl RefUnwindSafe for SegregatedBumpAllocator
impl Send for SegregatedBumpAllocator
impl Unpin for SegregatedBumpAllocator
impl UnsafeUnpin for SegregatedBumpAllocator
impl UnwindSafe for SegregatedBumpAllocator
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more