gesha_rust_types/
module_declarations.rs1use 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}