[−][src]Crate alloc_wg
An attempt to collect several proposals of rust-lang/wg-allocators into a MVP.
Changes regarding the current Alloc trait
-
The first thing to notice is, that
Allocwas renamed toAllocRefin order to show that they are typically implemented for a reference or smart pointer or ZST, not directly for the type that actually holds the allocator’s state.Issue on WG repository: rust-lang/wg-allocators#8
-
AllocRefwas split up intoAllocRef,DeallocRef, andReallocRefto make more flexible allocators possible.Issue: rust-lang/wg-allocators#9
-
The allocators has to be associated with
BuildAllocRef. It is related to the allocator traits similar howBuildHasheris related toHasher. Although the signatures are different, it makes an even more flexible allocator design possible.Issue: rust-lang/wg-allocators#12
-
Added an associative error type to
AllocRef. Besides adding the possibility of returning additional information on allocation failure, it's also possible to split the usage of theAllocRefinto a fallible and an infallible case. Personally I think this is a pretty big deal, as kernel programmer can rely on allocation, which will never fail. If an allocation can fail, only atry_*_inmethod may be available. To maintain backwards compatibility,AbortAllocwas introduced.AbortAllocwraps another allocator, but aborts on OOM thusAbortAlloc<Global>may be used as default allocator forBoxorVec. To realize this,AbortAllocimplementsAllocRef<Error=!>.Issue: rust-lang/wg-allocators#23
-
The new layout type
NonZeroLayoutwas introduced. Currently, implementors ofAlloccan chose to allow zero-sized allocation so in a generic context it's impossible to rely on this, so banning zero-sized allocation is a possible step to prevent this. This also removesunsafefromAllocRef::allocandAllocRef::alloc_zeroed, and unlocks the possibility to move the extension API likealloc_arrayinto a separate trait.Issue: rust-lang/wg-allocators#16
-
Support reallocating to a different alignment.
Issue: rust-lang/wg-allocators#5
Modules
| alloc | |
| borrow | A module for working with borrowed data. |
| boxed | A pointer type for heap allocation. |
| clone | |
| collections | Collection types. |
| fmt | Utilities for formatting and printing |
| iter | |
| raw_vec | |
| rc | Single-threaded reference-counting pointers. 'Rc' stands for 'Reference Counted'. |
| slice | A dynamically-sized view into a contiguous sequence, |
| str | Unicode string slices. |
| string | A UTF-8 encoded, growable string. |
| sync | Thread-safe reference-counting pointers. |
| vec | A contiguous growable array type with heap-allocated contents, written
|
Macros
| format | |
| vec |