use std::collections::BTreeSet;
use crate::default::DefaultHelper;
#[derive(Default)]
pub(crate) struct Outputspace {
cs: codespace::Codespace,
default_helpers: BTreeSet<DefaultHelper>,
}
impl Outputspace {
pub(crate) fn cs(&mut self) -> &mut codespace::Codespace {
&mut self.cs
}
pub(crate) fn add_default_helper(&mut self, helper: DefaultHelper) {
self.default_helpers.insert(helper);
}
pub(crate) fn into_codespace(self) -> codespace::Codespace {
let Self {
mut cs,
default_helpers,
} = self;
if !default_helpers.is_empty() {
let defaults_mod = cs.get_root_mod().get_mod("defaults");
for helper in default_helpers {
defaults_mod.add_item("", helper.definition());
}
}
if cs.get_root_mod().has_mod("defaults") {
cs.get_root_mod()
.get_mod("defaults")
.add_docs(" Generation of default values for serde.");
}
cs
}
}