99re热视频这里只精品,久久久天堂国产精品女人,国产av一区二区三区,久久久精品成人免费看片,99久久精品免费看国产一区二区三区

type 別名

2018-08-12 22:03 更新

type 別名

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

type Name = String;

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

type Name = String;

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

但是請(qǐng)注意,這是一個(gè)別名,不完全是一個(gè)新類型。換句話說(shuō),因?yàn)?Rust 是強(qiáng)類型的,所以你不能比較兩個(gè)不同類型:

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

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

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

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

但是,如果我們有一個(gè)別名:

type Num = i32;

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

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

這個(gè)編譯沒(méi)有錯(cuò)誤。無(wú)論如何,Num 類型的值和 i32 類型的值是相同的。

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

use std::result;

enum ConcreteError {
Foo,
Bar,
}

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

這將創(chuàng)建一個(gè) Result 類型的專門(mén)的版本 ,它總是有一個(gè)針對(duì) Result< T E > 的 E 部分的 ConcreteError 。這常被用在標(biāo)準(zhǔn)庫(kù)來(lái)為每一部分創(chuàng)建自定義錯(cuò)誤。例如,io::Result 。

以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)