pub trait StableMemory {
    fn stable_size(&self) -> u32;
    fn stable64_size(&self) -> u64;
    fn stable_grow(&self, new_pages: u32) -> Result<u32, StableMemoryError>;
    fn stable64_grow(&self, new_pages: u64) -> Result<u64, StableMemoryError>;
    fn stable_write(&self, offset: u32, buf: &[u8]);
    fn stable64_write(&self, offset: u64, buf: &[u8]);
    fn stable_read(&self, offset: u32, buf: &mut [u8]);
    fn stable64_read(&self, offset: u64, buf: &mut [u8]);
}
Expand description

A trait defining the stable memory API which each canister running on the IC can make use of

Required Methods

Gets current size of the stable memory (in WASM pages).

Similar to stable_size but with support for 64-bit addressed memory.

Attempts to grow the stable memory by new_pages (added pages).

Returns an error if it wasn’t possible. Otherwise, returns the previous size that was reserved.

Note: Pages are 64KiB in WASM.

Similar to stable_grow but with support for 64-bit addressed memory.

Writes data to the stable memory location specified by an offset.

Warning - this will panic if offset + buf.len() exceeds the current size of stable memory. Use stable_grow to request more stable memory if needed.

Similar to stable_write but with support for 64-bit addressed memory.

Reads data from the stable memory location specified by an offset.

Similar to stable_read but with support for 64-bit addressed memory.

Implementors