2个不稳定版本
0.2.0 | 2021年7月20日 |
---|---|
0.1.0 | 2021年7月16日 |
#451 in 内存管理
41KB
138 行
可出错rust稳定std集合分配
目前我们在std中有一个不稳定的分配API,因此这是稳定rust的一个临时安全解决方案。
使用示例
要创建一个向量,您可以使用以下代码示例
use fallible_alloc::vec::alloc_with_size;
...
let vector_size: usize = 10;
let maybe_vector = alloc_with_size::<f64>(vector_size);
match maybe_vector {
Ok(vec) => println!("Created a vec with size 10"),
Err(error) => println!("Failed to create a vec, reason: {}", error)
}
如您所见,maybe_vector有一个Result<Vec<T>, AllocError> 类型
,因此现在可以处理一部分分配错误。
还可以使用以下代码示例更改crate使用的分配器
use std::alloc::{GlobalAlloc, System, Layout};
struct MyAllocator;
unsafe impl GlobalAlloc for MyAllocator {
unsafe fn alloc(&self, layout: Layout) -> *mut u8 {
System.alloc(layout)
}
unsafe fn dealloc(&self, ptr: *mut u8, layout: Layout) {
System.dealloc(ptr, layout)
}
}
#[global_allocator]
static GLOBAL: MyAllocator = MyAllocator;