Итак, я только начинаю изучать немного ржавчины, и я бегу к довольно простой проблеме. У меня есть рекурсивный тип вроде этого:Рекурсивные типы и массивы
struct Tree {
root : i32,
children : Box<[Option<Tree> ; 100]>
}
Позже, когда я пытался инициализировать дерево
hex.rs:30:29: 30:40 error: the trait `core::marker::Copy` is not implemented for the type `Tree` [E0277]
hex.rs:30 children : Box::new([None; 100])
^~~~~~~~~~~
error: aborting due to previous error
Итак, я добавил
#[derive(Copy)]
перед определением структуры, но я получил эта ошибка:
hex.rs:8:10: 8:14 error: the trait `Copy` may not be implemented for this type; field `children` does not implement `Copy` [E0204]
hex.rs:8 #[derive(Copy)]
^~~~
note: in expansion of #[derive]
hex.rs:8:1: 8:16 note: expansion site
error: aborting due to previous error
Я не совсем уверен, куда идти отсюда. Есть ли простой способ получения признаков для рекурсивных типов данных?
Это не просто '[None; 100], что вы не можете писать; '[None, None, None, None, ...]' будет работать нормально. Но семантически я полагаю, что 'Vec' больше того, чего вы хотите. –
Правильно, я пробовал это, и это сработало, но это не так по многим причинам. Vec работает для того, что мне нужно. –
Emil