итератором. Соотв есть указатель let mut curr: &mut Node. Дальше пробегаемся по итератору и создаём каждый раз новую ноду вставляя в предыдущую ссылку на следующую.
struct Node {
next: Box<Node>,
value: i32
}
let mut curr: &mut Node = root;
for i in 0..10 {
let mut new_node = Node::new(i);
curr.next = Box::new(new_node);
curr = &mut new_node; // тут всё рушится, и не удивительно
}
Как такие ситуации принято разруливать? При этом мне не нужен тут Rc по идее.
struct Node { next: Box<Node>, value: i32 } это же не дерево, а односвязный список?
Это бесконечная структура же. Должно быть Option<Next>
https://play.rust-lang.org/?version=stable&mode=debug&edition=2018&gist=e1cde79c34d1a5fbda73d89acc1dde92 сделал и оно даже работает… (да там по памяти плохо, trie не оптимизирован и в main строки клонируются)
Обсуждают сегодня