use std::ops::Mul;
use crate::{error::PoolResult, id_generator::IdGenerator};
use super::NodeRef;
impl<'a> Mul<usize> for NodeRef<'a> {
type Output = PoolResult<NodeRef<'a>>;
fn mul(
self,
count: usize,
) -> Self::Output {
if let Some(current_node) = self.tree.get_node(&self.key.clone()) {
let mut nodes = Vec::new();
for _ in 0..count {
let mut node = current_node.as_ref().clone();
node.id = IdGenerator::get_id();
node.content = imbl::Vector::new();
nodes.push(node);
}
if let Some(parent) = self.tree.get_parent_node(&self.key.clone()) {
self.tree.add_node(&parent.id, &nodes)?;
}
}
Ok(NodeRef::new(self.tree, self.key.clone()))
}
}