5个版本
0.2.1 | 2023年4月27日 |
---|---|
0.2.0 | 2022年5月27日 |
0.1.5 | 2021年12月22日 |
0.1.4 | 2021年12月22日 |
0.1.1 | 2021年8月13日 |
#71 in 内存管理
39,028 每月下载量
用于 27 个crates (7 直接)
475KB
9K SLoC
历史上最好的、最高级别的、最新的MiMalloc绑定
mimalloc 1.7.9 稳定版
为什么创建这个
在仓库 https://github.com/purpleprotocol/mimalloc_rust
中我没有看到任何数据类型,它也没有提供mimalloc提供的所有功能,换句话说,它是垃圾。
使用方法
首先添加到依赖项
[dependencies]
mimalloc-rust = "0.2.1"
然后设置全局分配器
use mimalloc_rust::*;
#[global_allocator]
static GLOBAL_MIMALLOC: GlobalMiMalloc = GlobalMiMalloc;
lib.rs
:
本crate提供了对mimalloc的最佳绑定
示例用法
首先添加到依赖项
[dependencies]
mimalloc-rust = "0.2"
然后设置全局分配器
use mimalloc_rust::*;
#[global_allocator]
static GLOBAL_MIMALLOC: GlobalMiMalloc = GlobalMiMalloc;
分配器API!
#![feature(allocator_api)]
use std::{ffi::c_void, mem::ManuallyDrop};
use mimalloc_rust::{
heap::{HeapVisitor, MiMallocHeap},
raw::{
heap::{mi_heap_area_t, mi_heap_delete, mi_heap_new},
types::mi_heap_t,
},
with_heap, GlobalMiMalloc,
};
#[derive(Debug, Clone)]
struct TestHeap {
heap: *mut mi_heap_t,
}
use std::ops::Deref;
impl Deref for TestHeap {
type Target = *mut mi_heap_t;
fn deref(&self) -> &Self::Target {
&self.heap
}
}
impl TestHeap {
fn new() -> Self {
Self {
heap: unsafe { mi_heap_new() },
}
}
}
impl Drop for TestHeap {
fn drop(&mut self) {
unsafe { mi_heap_delete(self.heap) }
}
}
#[test]
fn test_allocator_api() {
let allocator = MiMallocHeap::new(TestHeap::new());
let mut b: Vec<u8, &MiMallocHeap<TestHeap>> = Vec::new_in(&allocator);
b.push(1);
b.push(2);
assert_eq!(b[0], 1);
assert_eq!(b[1], 2);
}