struct Tree<T> {
leaf: Vec<?>
}
fn main() {
let fuji = Tree { leaf: vec![1, 2, [[3, 4, 5], 6, [7, 8, 9]] };
}
我不知道我应该在Vec<>
中放什么,以便上面的代码可以运行。
Rust 的Vec
tor 写Vec<T>
这意味着它的每个元素都必须是T
类型。如果你需要一个向量向量,这是可能的 - 那么它是一个Vec<Vec<T>>
(现在每个元素都是一个Vec<T>
)。
在你的代码中,你写道:
vec![1, 2, [[3, 4, 5], 6, [7, 8, 9]]
这是尝试创建一个包含整数的向量和一个由固定长度 (3) 整数和整数数组组成的固定长度 (3) 数组。呼!这与Vec
数据类型所需的同质性相去甚远。
您可以像这样创建向量的向量:
let v: Vec<Vec<i32>> = vec![vec![1,2,3], vec![4,5], vec![6]];
由于向量的类型(与数组不同)的类型不绑定到其长度,因此这是Vec
tor的有效Vec
,而 tor又是有效的,因为它们只包含整数(i32
)。
我建议阅读 The Rust Book,这是基本 Rust 知识的最佳来源。