#memory-pool #memory #data #no-std

no-std membank

一个可重用内存池,用于防止不必要的释放

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 内存管理

MIT/Apache

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