W3Cschool
恭喜您成為首批注冊用戶
獲得88經(jīng)驗(yàn)值獎勵
你可以使用 type 關(guān)鍵字聲明另一類型的別名:
type Name = String;
然后,你可以就像使用一個真正的類型一樣使用這種類型:
type Name = String;
let x: Name = "Hello".to_string();
但是請注意,這是一個別名,不完全是一個新類型。換句話說,因?yàn)?Rust 是強(qiáng)類型的,所以你不能比較兩個不同類型:
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 。這常被用在標(biāo)準(zhǔn)庫來為每一部分創(chuàng)建自定義錯誤。例如,io::Result
。
Copyright©2021 w3cschool編程獅|閩ICP備15016281號-3|閩公網(wǎng)安備35020302033924號
違法和不良信息舉報(bào)電話:173-0602-2364|舉報(bào)郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號
聯(lián)系方式:
更多建議: