allocator-fallback
This crate provides a minimal fallback for the standard library’s allocator API, which is currently unstable.
Usage
Because allocator-fallback can be configured to re-export the real
unstable allocator API (see Crate features), users
of this crate must make sure they conditionally enable
#![feature(allocator_api)]
in preparation for this occurrence; otherwise,
compilation errors may occur. This is the case even for crates that never
directly enable allocator-fallback’s allocator_api
feature, because a
different crate that also depends on allocator-fallback could enable it.
To accomplish this, in Cargo.toml
, duplicate your dependency on
allocator-fallback
in the [build-dependencies]
section. For example:
[]
= "0.1.7"
[]
= "0.1.7"
Then, add a build script (build.rs
) with the following
contents:[^1]
Finally, at the top of your crate root (likely lib.rs
or main.rs
), add
the following:
Use as an optional dependency
The instructions above will not work if allocator-fallback
is declared
as an optional dependency. In this case, adjust the instructions as
follows:
Duplicate the dependency on allocator-fallback
in [build-dependencies]
as before, keeping optional = true
in both occurrences. For example:
[]
= "0.1.7"
= true
[]
= "0.1.7"
= true
Then, use the following as the contents of your build script (build.rs
)
instead:[^1]
Finally, as before, add the following to the top of your crate root:
[^1]: These build script code snippets have been released to the public domain using the CC0 1.0 Universal Public Domain Dedication.
Crate features
If the crate feature allocator_api
is enabled, this crate will simply
re-export the real allocator API in the standard library. Of course, this
requires Rust nightly.
If the crate feature std
is enabled (the default), the crate will use
std
; otherwise, it will be no_std
. Using std
allows
AllocError
to implement std::error::Error
.