mod impls;
mod parse;
#[cfg(feature = "std")]
mod std;
mod validate;
#[cfg(feature = "std")]
mod builder;
use crate::{
MAX_NODES,
compat::{Comment, Name, Vec},
};
#[cfg(feature = "std")]
pub use builder::NodesBuilder;
#[derive(Debug, Default, PartialEq, Eq, Hash, Clone)]
pub struct Node {
name: Name,
comment: Option<Comment>,
}
impl Node {
#[inline]
pub(crate) fn new(name: Name) -> Self {
Self {
name,
comment: None,
}
}
#[inline]
#[cfg(feature = "std")]
pub(crate) fn with_comment(name: Name, comment: Option<Comment>) -> Self {
Self { name, comment }
}
#[inline]
#[must_use = "return value should be used"]
pub fn name(&self) -> &str {
self.name.as_str()
}
#[inline]
#[must_use = "return value should be used"]
pub fn comment(&self) -> Option<&str> {
self.comment.as_ref().map(|c| c.as_str())
}
#[inline]
pub(crate) fn set_comment(&mut self, comment: Comment) {
self.comment = Some(comment);
}
}
type InnerNodes = Vec<Node, { MAX_NODES }>;
#[derive(Debug, Default, PartialEq, Eq, Hash, Clone)]
pub struct Nodes {
nodes: InnerNodes,
}