Big refactor.

This commit is contained in:
Gav
2018-01-16 17:55:07 +01:00
parent 571ad85cfe
commit caff772b83
15 changed files with 1037 additions and 973 deletions
@@ -0,0 +1,23 @@
use slicable::Slicable;
use endiansensitive::EndianSensitive;
use runtime_support;
pub trait Storage {
fn storage_into(key: &[u8]) -> Self;
fn store(&self, key: &[u8]);
}
impl<T: Default + Sized + EndianSensitive> 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<T: Storage>(key: &[u8]) -> T {
T::storage_into(key)
}