From 0f3ee4167371efa36c9dc0d09ec8136242dfa3ca Mon Sep 17 00:00:00 2001 From: Rendo Date: Sat, 8 Nov 2025 18:03:54 +0500 Subject: [PATCH] Insertion --- src/node/node_modifier.rs | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/src/node/node_modifier.rs b/src/node/node_modifier.rs index fb4b449..c748d7e 100644 --- a/src/node/node_modifier.rs +++ b/src/node/node_modifier.rs @@ -8,6 +8,7 @@ pub struct NodeModifier<'a> { } impl<'a> NodeModifier<'a> { + //Builders pub fn from_random(root: &'a mut Node) -> NodeModifier<'a> { let mut selected = root; while random_range(0..PICK_STOP_PROBABILITY) == PICK_STOP_PROBABILITY - 1 { @@ -21,4 +22,16 @@ impl<'a> NodeModifier<'a> { pub fn from_node(node: &'a mut Node) -> NodeModifier<'a> { NodeModifier { picked_node: node } } + + pub fn add_node(&mut self, node: Node) { + self.picked_node.children.push(node); + } + + pub fn insert_node(&mut self, mut node: Node, between: Option) { + let children_count = self.picked_node.children.len(); + let operated_index = between.unwrap_or(random_range(0..children_count)); + let moved = self.picked_node.children.remove(operated_index); + node.children.push(moved); + self.picked_node.children.insert(operated_index, node); + } }