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

时间:2017-01-26 08:42:47

标签: vector types rust

struct Tree<T> {
    leaf: Vec<?>
}

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

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

1 个答案:

答案 0 :(得分:2)

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个有效Vec的{​​{1}} tor,反过来,有效,因为它们只包含整数(i32)。

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