Crate membank

source ·
Expand description

# membank

The membank crate allows users to re-use memory for later instead of de-allocating it. This is great for large, heap-allocated data.

use membank::*;

fn main() {
	let mut 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_loan();
	assert_eq!(*same_memory, big_dumb_vec);
}

Structs

  • A smart pointer for memory borrowed from a MemoryBank<T>. The data allocation will be preserved even if the initiating MemoryBank is dropped.
  • A structure that reuses old data of type T to reduce the number of heap allocations.