Как сделать изменяемый указатель на поле узла дерева и изменить его? [Дубликат]

На этот вопрос уже есть ответ:

Не удается получить изменяемую ссылку при итерации рекурсивной структуры: нельзя заимствовать как изменяемый более одного раза за раз 4 ответа

Я хочу найти какой-то узел в дереве, и мне нужен указатель на контейнер узлов:&mut Vec<Node>

struct Node {
    c: Vec<Node>,
    v: i32,
}

impl Node {
    pub fn new(u: i32, n: Node) -> Node {
        let mut no = Node {
            c: Vec::new(),
            v: u,
        };

        no.c.push(n);

        no
    }
}

fn main() {
    let mut a = Node::new(1,
        Node::new(2,
        Node::new(3,
        Node::new(4,
        Node::new(5,
        Node {
            c: Vec::new(),
            v: 6,
        })))));

    let mut p: &mut Vec<Node> = &mut a.c;

    while p.len() > 0 {
        p = &mut p[0].c;
    }

    p.push(Node {
        c: Vec::new(),
        v: 7,
    });
}

Ответы на вопрос(1)

Ваш ответ на вопрос