gesha_rust_types/
module_declarations.rs

1use crate::ModuleName;
2use std::fmt;
3use std::fmt::Display;
4
5#[derive(Clone, Debug)]
6pub struct ModuleDeclarations(Vec<ModuleName>);
7
8impl ModuleDeclarations {
9    pub fn empty() -> Self {
10        Self(vec![])
11    }
12}
13
14impl Display for ModuleDeclarations {
15    fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
16        self.0
17            .iter()
18            .try_for_each(|module| writeln!(f, "pub mod {};", module))
19    }
20}
21
22impl FromIterator<ModuleName> for ModuleDeclarations {
23    fn from_iter<T: IntoIterator<Item = ModuleName>>(iter: T) -> Self {
24        let set = iter.into_iter().collect();
25        Self(set)
26    }
27}