use alloc::collections::BTreeMap;
use alloc::string::String;
use alloc::vec::Vec;
use super::StorageValueName;
use crate::Word;
#[derive(Clone, Debug, Default)]
pub struct InitStorageData {
value_entries: BTreeMap<StorageValueName, String>,
map_entries: BTreeMap<StorageValueName, Vec<(Word, Word)>>,
}
impl InitStorageData {
pub fn new(
entries: impl IntoIterator<Item = (StorageValueName, String)>,
map_entries: impl IntoIterator<Item = (StorageValueName, Vec<(Word, Word)>)>,
) -> Self {
let value_entries = entries
.into_iter()
.filter(|(entry_name, _)| !entry_name.as_str().is_empty())
.collect::<BTreeMap<_, _>>();
InitStorageData {
value_entries,
map_entries: map_entries.into_iter().collect(),
}
}
pub fn placeholders(&self) -> &BTreeMap<StorageValueName, String> {
&self.value_entries
}
pub fn get(&self, key: &StorageValueName) -> Option<&String> {
self.value_entries.get(key)
}
pub fn map_entries(&self, key: &StorageValueName) -> Option<&Vec<(Word, Word)>> {
self.map_entries.get(key)
}
}