pub trait StableMemory {
    // Required methods
    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§

source

fn stable_size(&self) -> u32

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

source

fn stable64_size(&self) -> u64

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

source

fn stable_grow(&self, new_pages: u32) -> Result<u32, StableMemoryError>

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.

source

fn stable64_grow(&self, new_pages: u64) -> Result<u64, StableMemoryError>

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

source

fn stable_write(&self, offset: u32, buf: &[u8])

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.

source

fn stable64_write(&self, offset: u64, buf: &[u8])

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

source

fn stable_read(&self, offset: u32, buf: &mut [u8])

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

source

fn stable64_read(&self, offset: u64, buf: &mut [u8])

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

Implementors§