Array ein struct-Feld

Möchte ich zu einer non-binary-tree-Struktur in Rost. Hier ist ein try -

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

Leider nicht kompilieren.

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

Der code wird kompiliert, wenn wir ersetzen Sie ein array mit einem Vec. Doch die Struktur ist unveränderlich, und ich brauche nicht eine überlastete Vec.

Hörte ich, könnte es möglich sein, auf ein struct-Feld mit einer Größe von unbekannt ist zur compile-Zeit, sofern es eindeutig ist. Wie können wir es tun?

  • Ich dachte die Vorgabe war die "Letzte", aber trotzdem ist es auch hier der Fall. Ich fand reddit.com/r/rust/comments/357ji5/...
  • In Rost, arrays eine Feste Größe haben, zur Kompilierzeit bekannt ist. Damit Sie nicht möchten, dass ein "array". &[T] ist in der Regel als eine Scheibe, ich weiß nicht, wie auszusprechen [T].
  • Ich denke, das wäre "ohne Größenangabe array".
InformationsquelleAutor user19018 | 2015-05-15
Schreibe einen Kommentar