我在一些Rust示例中看到了关键字 type
,但我从未见过它的解释 . 我看到它如何使用的几个例子:
impl Add<Foo> for Bar {
type Output = BarFoo;
// omitted
}
type T = HashMap<i32,String>; // Type arguments used in a type expression
let x = id::<i32>(10); // Type arguments used in a call expression
有人可以解释这个关键字的作用吗?我在Rust by Example或Rust书中找不到它 .
1 回答
impl
之外的简单type Foo = Bar;
定义了一个类型别名,并且是documented in The Book . 有一个通用版本type Foo<T> = ...
但是如果你理解泛型,那么这是一个明显的扩展 .type
中的type
定义了关联类型 . 它们是documented in The Book,但我已经写了一个简短的摘要,所以你也得到了:当你有像
Add
这样的特征时,你不仅要抽象出可以添加什么类型的东西,还要抽象它们的总和类型 . 添加整数会产生整数,添加浮点会导致浮点数 . 但是你不希望结果类型是Add
的参数Add
,原因我将在这里略过 .因此,该特征带有与
impl
相关联的类型 . 给定Add
的任何实现,例如impl Add<Foo> for Bar
,已经确定了相加结果的类型 . 这是在这样的特征中声明的:然后所有实现都定义了结果的类型: