use serde::Serialize;
use serde::de::DeserializeOwned;
use crate::{Result, host};
pub struct State;
impl State {
pub async fn get<T: DeserializeOwned>(&self, key: &str) -> Result<Option<T>> {
match host::state_get(key).await? {
Some(bytes) => Ok(Some(serde_json::from_slice(&bytes)?)),
None => Ok(None),
}
}
pub async fn set<T: Serialize>(&self, key: &str, value: &T) -> Result<()> {
host::state_set(key, &serde_json::to_vec(value)?).await
}
}