#no-std #allocator

no-std allocator_api

这是不稳定版本的allocator_api(https://github.com/rust-lang/rust/issues/32838)以及不稳定alloc特性的部分内容的副本。与稳定版Rust兼容,但需要1.33。

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

Download history 47/week @ 2023-10-13 188/week @ 2023-10-20 135/week @ 2023-10-27 124/week @ 2023-11-03 248/week @ 2023-11-10 237/week @ 2023-11-17 268/week @ 2023-11-24 174/week @ 2023-12-01 188/week @ 2023-12-08 123/week @ 2023-12-15 122/week @ 2023-12-22 32/week @ 2023-12-29 120/week @ 2024-01-05 103/week @ 2024-01-12 128/week @ 2024-01-19 168/week @ 2024-01-26

每月519次下载
boxext中使用

Apache-2.0/MIT

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应该直接将这些类型作为输入。

无运行时依赖

功能特性