Rust的类型系统还有一些其它功能。如 newtype 和 类型别名(type aliases),一个类型似newtype但有首稍微不同的语义的功能。还有 ! 类型和动态大小类型。
为了类型安全和抽象而使用newtype模式
newtype模式可以用于一些其它我们还没讨论的功能,包括静态的确保某值不被混淆,和用来表示一个值的单元。
另一个newtype模式的应用在于抽象掉一些类型的实现细节:例如,封装类型可以暴露出出与直接使用其内部私有类型时所不同的公有api,以便限制其功能。
newtype也可以隐藏其内部的泛型类型。
类型别名用来创建类型同义词
连同newtype模式,Rust还提从了声明 类型别名(type alias)的能力,使用type关键字来给予现有类型另一个名。例如,可以像这样创建i32的别名 kilometers:
type kilometers = i32;
这意味首kilometers是i32的同义词(synonym)。
类型别名的主要用途是减少重复。