9个版本 (破坏性)
0.6.0 | 2019年4月24日 |
---|---|
0.5.0 | 2018年6月26日 |
0.4.0 | 2018年6月12日 |
0.3.0 | 2018年5月16日 |
0.0.1 | 2018年3月28日 |
#79 in #allocator
每月519次下载
在boxext中使用
96KB
1K SLoC
allocator_api
这是不稳定版本的allocator_api(https://github.com/rust-lang/rust/issues/32838)以及不稳定alloc特性的部分内容的副本。
与稳定版Rust兼容,但需要1.33。
与nightly rust的差异
代码是从1.34.0版本的rust代码中复制的,去掉了#[stable]注解和#[unstable]实现。
在alloc模块(对应于core::alloc和std::alloc的部分),oom
函数会无限循环而不是调用core::intrinsics::abort
,后者是不稳定的。使用此crate的用户应使用set_oom_hook
来设置自己的oom函数,该函数以正确的方式终止(在非no_std情况下,可以使用process::abort()
)。
在raw_vec模块(对应于alloc::raw_vec)中,RawVec
使用NonNull
而不是Unique
。
在boxed模块(对应于alloc::boxed)中,Box
类型被增强,使其与分配器相关联,类似于RawVec
。其API因此略有不同(例如,from_raw
被替换为from_raw_in
)。除了downcast
对于Box<Any>
和Box<Any + Send>
之外,实现了与std::boxed::Box
相同的(稳定)功能。像RawVec
一样,该类型依赖于NonNull
而不是Unique
。
注意:本仓库中提供的类型不能用于期望使用 std
/alloc
中对应类型的场景。尽管如此,少数API应该直接将这些类型作为输入。