mod div;
mod text;
pub use div::*;
pub use text::*;
use crate::NodeIndex;
#[derive(Debug, Clone, Copy, PartialEq, Eq, thiserror::Error)]
#[cfg_attr(feature = "defmt", derive(defmt::Format))]
pub enum BuildError {
#[error("node capacity exceeded")]
NodeCapacity,
#[error("text capacity exceeded")]
TextCapacity,
}
pub trait ElementBuilder {
fn try_build(self) -> Result<NodeIndex, BuildError>;
}
pub trait ParentElement {
fn extend<E: ElementBuilder>(&mut self, elements: impl IntoIterator<Item = E>);
fn child<E: ElementBuilder>(mut self, child: E) -> Self
where
Self: Sized,
{
self.extend(core::iter::once(child));
self
}
fn children<E: ElementBuilder>(mut self, children: impl IntoIterator<Item = E>) -> Self
where
Self: Sized,
{
self.extend(children);
self
}
}