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()
    };
}