итератором. Соотв есть указатель 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 строки клонируются)
Обсуждают сегодня