99re热这里只有精品视频,7777色鬼xxxx欧美色妇,国产成人精品一区二三区在线观看,内射爽无广熟女亚洲,精品人妻av一区二区三区

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è)新類型。換句話說,因?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è)編譯沒有錯(cuò)誤。無論如何,Num 類型的值和 i32 類型的值是相同的。

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

use std::result;

enum ConcreteError {
Foo,
Bar,
}

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

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

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

掃描二維碼

下載編程獅App

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

編程獅公眾號(hào)