7个版本 (4个重大变更)
0.5.1 | 2023年12月5日 |
---|---|
0.5.0 | 2023年12月5日 |
0.4.1 | 2023年12月4日 |
0.3.0 | 2023年11月26日 |
0.1.0 | 2023年10月19日 |
#282 in 内存管理
12KB
224 行
membank
membank crate 允许用户重用内存而不是释放它。这对于大型堆分配数据非常有用。
use membank::MemoryBank;
fn main() {
let bank: MemoryBank<Vec<i32>> = MemoryBank::new();
let mut big_dumb_vec = Vec::from_iter(0..10000);
// First loan is always a new allocation
let mut loan = bank.take_loan();
loan.clone_from(&big_dumb_vec);
assert_eq!(*loan, big_dumb_vec);
// The memory in the loan is mutable
loan[9990] = 14;
big_dumb_vec[9990] = 14;
assert_eq!(*loan, big_dumb_vec);
// The loaned memory is returned to the bank
drop(loan);
// The bank reuses memory whenever it can
let same_memory = bank.take_old_loan().unwrap();
assert_eq!(*same_memory, big_dumb_vec);
// The same bank can also be shared between threads!
let bank_clone = bank.clone();
std::thread::spawn(move || {
assert_eq!(*bank.take_loan(), big_dumb_vec);
});
}
依赖项
~345KB