1use crate::stable;
3
4pub fn stable_save<T>(t: T) -> Result<(), candid::Error>
8where
9 T: candid::utils::ArgumentEncoder,
10{
11 candid::write_args(&mut stable::StableWriter::default(), t)
12}
13
14pub fn stable_restore<T>() -> Result<T, String>
18where
19 T: for<'de> candid::utils::ArgumentDecoder<'de>,
20{
21 let bytes = stable::stable_bytes();
22
23 let mut de = candid::de::IDLDeserialize::new(bytes.as_slice()).map_err(|e| format!("{e:?}"))?;
24 let res = candid::utils::ArgumentDecoder::decode(&mut de).map_err(|e| format!("{e:?}"))?;
25 Ok(res)
26}