use slicable::Slicable; use endiansensitive::EndianSensitive; use runtime_support; pub trait Storage { fn storage_into(key: &[u8]) -> Self; fn store(&self, key: &[u8]); } impl Storage for T { fn storage_into(key: &[u8]) -> Self { Slicable::set_as_slice(|out| runtime_support::read_storage(key, out) == out.len()) .unwrap_or_else(Default::default) } fn store(&self, key: &[u8]) { self.as_slice_then(|slice| runtime_support::set_storage(key, slice)); } } pub fn storage_into(key: &[u8]) -> T { T::storage_into(key) }