I'm learning rust (coming from C++) and playing around with different small algorithms to understand the ownership & borrowing concepts better. Currently, I'm having difficulties finding the idiomatic way to reuse a Vector after iterating over it in a for-loop. This is the (very verbose) code I currently have:
fn build_trie(paths: &Vec<String>) -> TreeNode {
        let mut root = TreeNode::new('\0');
        for path in paths {
            // start at the root node
            let mut current_node = &mut root;
            for ch in path.as_bytes() {
                let ch = *ch as char;
                println!("Current char: {}", ch);
                let length: i32 = current_node.children.len() as i32;
                let mut found_child = false;
                // for each child of the current node, check if the current character matches
                for i in 0..length as usize {
                    // found a match, descend into the tree
                    if current_node.children[i].get_value() == ch {
                        println!("Found matching char: {}", ch);
                        found_child = true; // avoid adding a new child later
                        current_node.children[i].increment_count();
                        current_node = &mut current_node.children[i];
                        break;
                    }
                    found_child = false;
                }
                // no matching child found, add a new child
                // and descend into the tree
                if !found_child {
                    let new_node = TreeNode::new(ch);
                    current_node.children.push(new_node);
                    current_node = current_node.children.last_mut().unwrap();
                }
            }
        }
        root
    }
While this does seem to work, I wanted to replace the for i in 0..length header with for child in current_node.children.iter_mut().
The problem is that this does a mutable borrow of current_node.children which also happens in the last if-statement, which obviously isn't allowed twice. I have the feeling that I'm missing some simple detail. I did a lot of googling but couldn't find anything that answered my question.
PS: I'm not sure if this question is for Code Review or StackOverflow. But since it might be opinion-based (and those get closed immediately...) I thought I'd try here first.

