1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35
use crate::arnalisamplic::{Mapping, Sampling}; use crate::Result; use indexmap::{IndexMap, IndexSet}; pub trait LoadableDevice { fn load_sampling_mapping( &self, sampling_id: &str, mapping_id: &str, ) -> Result<Mapping>; fn load_sampling_mapping_index( &self, sampling_id: &str, ) -> Result<IndexSet<String>>; fn load_sampling_mappings( &self, sampling_id: &str, ) -> Result<IndexMap<String, Mapping>> { self.load_sampling_mapping_index(sampling_id)? .into_iter() .map(|id| { let item = self.load_sampling_mapping(sampling_id, &id)?; Ok((id, item)) }) .collect::<Result<_>>() } fn load_sampling(&self, sampling_id: &str) -> Result<Sampling> { Ok(Sampling { mappings: self.load_sampling_mappings(sampling_id)?, }) } }