Tableau de struct champ

Je voudrais créer un arbre binaire non de la structure de la Rouille. Voici un essai

struct TreeNode<T> {
    tag : T,
    father : Weak<TreeNode<T>>,
    childrenlists : [Rc<TreeNode<T>>]
}

Malheureusement, cela ne compile pas.

main.rs:4:1: 8:2 error: the trait `core::marker::Sized` is not implemented for the type `[alloc::rc::Rc<TreeNode<T>>]` [E0277]
main.rs:4 struct TreeNode<T> {
main.rs:5     tag : T,
main.rs:6     father : Weak<TreeNode<T>>,
main.rs:7     childrenlist : [Rc<TreeNode<T>>]
main.rs:8 }
main.rs:4:1: 8:2 note: `[alloc::rc::Rc<TreeNode<T>>]` does not have a constant size known at compile-time
main.rs:4 struct TreeNode<T> {
main.rs:5     tag : T,
main.rs:6     father : Weak<TreeNode<T>>,
main.rs:7     childrenlist : [Rc<TreeNode<T>>]
main.rs:8 }
error: aborting due to previous error

Le code se compile si l'on remplace un tableau avec une Vec. Cependant, la structure est immuable et je n'ai pas besoin d'un surutilisée Vec.

J'ai entendu qu'il pourrait être possible d'avoir une structure de champ avec la taille de l'inconnu au moment de la compilation, à condition qu'il soit unique. Comment pouvons-nous le faire?

  • Je pensais que l'exigence était la "dernière", mais de toute façon, c'est aussi le cas ici. J'ai trouvé reddit.com/r/rust/comments/357ji5/...
  • Dans la Rouille, les tableaux ont une taille fixe, connue au moment de la compilation. Ainsi, vous ne voulez pas un "tableau". &[T] est généralement appelé une tranche, je ne sais pas comment le prononcer [T].
  • Je suppose que ce serait "sans colle tableau".
InformationsquelleAutor user19018 | 2015-05-15