包含另一个向量的向量是什么类型?


struct Tree<T> {
leaf: Vec<?>
}
fn main() {
let fuji = Tree { leaf: vec![1, 2, [[3, 4, 5], 6, [7, 8, 9]] };
}

我不知道我应该在Vec<>中放什么,以便上面的代码可以运行。

Rust 的Vector 写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]];

由于向量的类型(与数组不同)的类型不绑定到其长度,因此这是Vector的有效Vec,而 tor又是有效的,因为它们只包含整数(i32)。

我建议阅读 The Rust Book,这是基本 Rust 知识的最佳来源。

最新更新