1use serde::de::DeserializeOwned;
2use serde::Serialize;
3use crate::vmt::Vmt;
4use crate::interner::intern_key;
5
6impl Vmt {
7 pub fn get_block<T: DeserializeOwned>(&self, key: &str) -> Result<Option<T>, source_kv::Error> {
9 if let Some(val) = self.get_raw(key) {
10 let parsed: T = source_kv::from_value(val.clone())?;
11 return Ok(Some(parsed));
12 }
13 Ok(None)
14 }
15
16 pub fn set_block<T: Serialize>(&mut self, key: &str, value: &T) -> Result<&mut Self, source_kv::Error> {
19 let serialized_value = source_kv::to_value(value)?;
20
21 self.properties.insert(
22 intern_key(key),
23 vec![serialized_value]
24 );
25
26 Ok(self)
27 }
28}