use crate::{Debug, Formatter, INDENT};
use super::DebugInner;
#[must_use = "must eventually call `finish()` on Debug builders"]
pub struct DebugSet<'a> {
inner: DebugInner<'a>,
}
pub(crate) fn new(fmt: &mut Formatter) -> DebugSet {
fmt.word("{");
fmt.cbox(INDENT);
fmt.zerobreak();
DebugSet {
inner: DebugInner {
fmt,
has_fields: false,
},
}
}
impl<'a> DebugSet<'a> {
pub fn entry(&mut self, entry: &dyn Debug) -> &mut Self {
self.inner.entry(entry);
self
}
pub fn entries<D, I>(&mut self, entries: I) -> &mut Self
where
D: Debug,
I: IntoIterator<Item = D>,
{
for entry in entries {
self.entry(&entry);
}
self
}
pub fn finish(&mut self) {
if self.inner.has_fields {
self.inner.fmt.trailing_comma(true);
}
self.inner.fmt.offset(-INDENT);
self.inner.fmt.end();
self.inner.fmt.word("}");
}
}