canic_memory/manager.rs
1use canic_cdk::structures::{DefaultMemoryImpl, memory::MemoryManager};
2use std::cell::RefCell;
3
4// -----------------------------------------------------------------------------
5// MEMORY_MANAGER
6// -----------------------------------------------------------------------------
7// Shared stable-memory manager used by all Canic consumers. Stored as a
8// thread-local so stable structures can grab virtual memory slots without
9// global mutable state.
10// -----------------------------------------------------------------------------
11
12thread_local! {
13 pub static MEMORY_MANAGER: RefCell<MemoryManager<DefaultMemoryImpl>> =
14 RefCell::new(MemoryManager::init(DefaultMemoryImpl::default()));
15}