鍍金池/ 教程/ Java/ type 別名
While 循環(huán)
宏命令
模式
Rust 嵌入到其他語言
變量綁定
if
發(fā)布通道
Lang 項目
匹配
文檔
棧和堆
不依賴 stdlib
原始指針
條件編譯
type 別名
關(guān)聯(lián)類型
全類型
詞匯表
基本類型
Hello, world!
測試
箱和模塊
字符串
向量
引用與借用
所有權(quán)
內(nèi)斂函數(shù)
基準測試
Nightly Rust
for 循環(huán)
特征
特征的對象
鏈接參數(shù)
介紹
'Deref'強制轉(zhuǎn)換
枚舉
內(nèi)聯(lián)匯編
泛型
方法語法
函數(shù)
外部函數(shù)接口
盒語法和模式
安裝 Rust
unsafe    
生存期
切片模式
Borrow 和 AsRef
If let
學習 Rust
“常量”和“靜態(tài)”
語法和語義
迭代器
相關(guān)學術(shù)研究
通用函數(shù)調(diào)用語法
哲學家就餐問題
類型轉(zhuǎn)換
閉包
并發(fā)性
Hello, Cargo!
屬性
注釋
結(jié)構(gòu)體
編譯器插件
高效 Rust
相關(guān)常量
猜謎游戲
可變性
錯誤處理
新手入門
操作符和重載

type 別名

你可以使用 type 關(guān)鍵字聲明另一類型的別名:

type Name = String;

然后,你可以就像使用一個真正的類型一樣使用這種類型:

type Name = String;

let x: Name = "Hello".to_string();

但是請注意,這是一個別名,不完全是一個新類型。換句話說,因為 Rust 是強類型的,所以你不能比較兩個不同類型:

let x: i32 = 5;
let y: i64 = 5;

if x == y {
   // ...
}

這會產(chǎn)生這樣的結(jié)果:

error: mismatched types:
 expected `i32`,
found `i64`
(expected i32,
found i64) [E0308]
 if x == y {
 ^

但是,如果我們有一個別名:

type Num = i32;

let x: i32 = 5;
let y: Num = 5;

if x == y {
   // ...
}

這個編譯沒有錯誤。無論如何,Num 類型的值和 i32 類型的值是相同的。

你還可以使用泛型類型別名:

use std::result;

enum ConcreteError {
Foo,
Bar,
}

type Result<T> = result::Result<T, ConcreteError>;

這將創(chuàng)建一個 Result 類型的專門的版本 ,它總是有一個針對 Result< T E > 的 E 部分的 ConcreteError 。這常被用在標準庫來為每一部分創(chuàng)建自定義錯誤。例如,io::Result 。

上一篇:所有權(quán)下一篇:匹配