1个不稳定版本
0.2.2 | 2024年2月2日 |
---|---|
0.2.1 |
|
0.2.0 |
|
0.1.1 |
|
0.1.0 |
|
#276 在 内存管理
每月 21 次下载
8KB
136 行
Map Box
在Box中映射值,尽可能重用分配。
例如,以下代码不会重新分配。
use map_box::Map;
let b = Box::new(42u64);
let b = b.map_box(|v| v as i64);
map
的签名是
impl<T1> Box<T1> {
fn map_box<T2>(self, f: impl FnMut(T1) -> T2) -> Box<T2>;
}
限制
如果类型的对齐要求发生变化,即使对齐变得更低,Box也需要重新分配。这是因为
- alloc::dealloc要求布局与分配时相同的布局相同
- alloc::realloc只接受新的大小,不能将分配的布局向下更改