Метод pop
для Vec
возвращает Option
, поскольку Vec
может фактически быть пустым и, таким образом, возвращать None
, вы также должны это проверить.
Как говорится, Option<Vec<_>>
- это не то, что вам часто нужно. Это имеет смысл только в том случае, если вы действительно хотите разницы между пустым вектором и отсутствием вектора вообще, что, по-видимому, здесь не так. так что в итоге вы бы получили следующее:
fn main() {
let mut root = Node::new2d(3);
loop {
root.calc_scores(100);
if let Some(child) = root.children.pop() {
root = Node {
state: child.0,
children: vec![],
}
}
root.make_children();
}
}
struct Node<T> {
state: T,
children: Vec<(T, i32)>,
}