ic_cdk/api/stable/
canister.rs1use super::*;
2
3#[derive(Default, Debug, Copy, Clone)]
7pub struct CanisterStableMemory {}
8
9impl StableMemory for CanisterStableMemory {
10 fn stable_size(&self) -> u64 {
11 ic0::stable64_size()
12 }
13
14 fn stable_grow(&self, new_pages: u64) -> Result<u64, StableMemoryError> {
15 match ic0::stable64_grow(new_pages) {
16 u64::MAX => Err(StableMemoryError::OutOfMemory),
17 x => Ok(x),
18 }
19 }
20
21 fn stable_write(&self, offset: u64, buf: &[u8]) {
22 ic0::stable64_write(buf, offset);
23 }
24
25 fn stable_read(&self, offset: u64, buf: &mut [u8]) {
26 ic0::stable64_read(buf, offset);
27 }
28}