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
use crate::parser::LibraryName; use crate::values::*; use std::collections::HashMap; #[derive(Clone, Debug, PartialEq)] pub struct Library<R: RealNumberInternalTrait>(LibraryName, HashMap<String, Value<R>>); impl<R: RealNumberInternalTrait> Library<R> { pub fn new( library_name: LibraryName, definitions: impl IntoIterator<Item = (String, Value<R>)>, ) -> Self { Self(library_name, definitions.into_iter().collect()) } pub fn name(&self) -> &LibraryName { &self.0 } pub fn iter_definitions(&self) -> impl Iterator<Item = (&String, &Value<R>)> { self.1.iter().map(|(s, value)| (s, value)) } } #[macro_export] macro_rules! import_library_direct { ($($e:expr),+) => { ImportSetBody::Direct(library_name![$($e),+].into()).no_locate() }; }