`Vec<T>` 是什么意思?

What does `Vec<T>` mean?

The Rust Book 有时会说 "here we want a Vec<T>".

这除了 "a thing of type Vector?" 之外还有什么意思吗 另外,你怎么发音 - "vec tee"?

Vec<T> 是一个泛型类型,表示一个向量,其中每个元素的类型都是 T。有关详细信息,请参阅 vectors and generics 部分。

Vec<T> 表示 "A vector of items. The items are of type T"。让我们稍微解压一下...

A vector 是一种包含零个或多个相同类型项的数据结构。这些项目有一个顺序,您可以通过索引(0、1、...)访问这些项目。您可以添加和删除项目。项目本身存储在连续的堆分配区域中。

T 是一个常见的 通用类型参数 。类型参数允许您编写对特定类型进行抽象的代码,而无需关心该类型是什么。在这个例子中,我们可以创建一个 MyThingany kind 的内在价值:

struct MyThing<T> {
    thing: T,
}

这里,T是一个类型参数,因为它包含在<>中。它不一定是 T,它可以是 SZMyLittlePony。但是,T 用作 "type" 的 shorthand 是很常见的。使用单字母名称以避免与具体类型名称冲突也很常见。

作为人类,我们有时会在术语方面有些拘谨,使用 T 的方式与我们在数学中使用 x 或在编程中使用 foo 的方式相同- 我们还不想具体说明的事情。

我会大声念成 "vec tee" 或 "a vec of tee",但这很主观。