Crate ialloc

Source
Expand description

§ialloc

Allocator interface traits for Rust

GitHub crates.io docs.rs unsafe: very License Build Status

§Raison d’être

  • Why not core::alloc::Allocator / allocator_api?
    • 7+ years unstabilized and counting.
    • I want container allocations this decade, thanks!
    • We can aim to be compatible and interopable with it, if/when it stabilizes, or via separate nightly crates.
  • Why not core::alloc::GlobalAlloc?
    • Win32 FreeSid has no equivalent arbitrary allocation function to implement GlobalAlloc::alloc with.
    • bgfx::alloc has no equivalent arbitrary free function to implement GlobalAlloc::dealloc with.
    • Split alloc/free/realloc traits will help avoid bugs and misuse!
    • That said, we can aim to be compatible and interopable with it.
  • Rust-style traits are annoying to adapt to C-style allocators. This provides more C-friendly traits as options.

§Out of scope

  • NUMA? Although ask again later.
  • Physical GPU memory allocation, probably. Might warrant a related crate?
  • ID/handle allocation, perhaps. Might warrant a related crate?

§License

Licensed under either of

at your option.

§Contribution

Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.

Modules§

_assumptions
Assumptions ialloc makes, likely resulting in unsoundness if broken.
_features
Cargo features of the ialloc crate.
allocator
Allocator implementations
boxed
alloc::boxed::Box alternatives
error
ExcessiveAlignmentRequestedError, ExcessiveSliceRequestedError (and any future error types)
traits
Allocator traits
vec
alloc::vec::Vec alternatives

Macros§

impls
Implement ialloc (and/or core) traits in terms of other traits

Structs§

Alignment
A valid Layout alignment (a power of 2)