use crate::NodeID;
use std::cell::RefCell;
#[derive(Debug, Clone)]
pub struct NodeBuilder {
inner: RefCell<NodeBuilderInner>,
}
impl NodeBuilder {
pub fn new(next: NodeID) -> Self {
Self { inner: RefCell::new(NodeBuilderInner::new(next)) }
}
pub fn next_id(&self) -> NodeID {
self.inner.borrow_mut().next_id()
}
}
impl Default for NodeBuilder {
fn default() -> Self {
Self::new(0)
}
}
#[derive(Debug, Clone)]
pub struct NodeBuilderInner {
next: NodeID,
}
impl NodeBuilderInner {
pub fn new(next: NodeID) -> Self {
Self { next }
}
pub fn next_id(&mut self) -> NodeID {
let next = self.next;
self.next += 1;
next
}
}