国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Rust之枚舉與模式匹配

這篇具有很好參考價(jià)值的文章主要介紹了Rust之枚舉與模式匹配。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

枚舉類(lèi)型,簡(jiǎn)稱(chēng)枚舉,允許列舉所有可能的值來(lái)定義一個(gè)類(lèi)型。

1、定義枚舉:

枚舉類(lèi)型:已知所有可能的值,并且所有值的出現(xiàn)是互斥的,即每次只能取一種可能的值,才使用枚舉類(lèi)型。
示例:聲明一個(gè)枚舉

enum IpAddrKind{
	V4,
	V6,
}

使用IpAddrKind中的兩個(gè)變體來(lái)創(chuàng)建實(shí)例:

let four = IpAddrKind::V4;
let six = IpAddrKind::V6;

注:枚舉的變體全部處于其標(biāo)識(shí)符的命名空間內(nèi),并使用兩個(gè)冒號(hào)將標(biāo)識(shí)符和變體分隔開(kāi)。
枚舉允許直接將其相關(guān)聯(lián)的數(shù)據(jù)嵌入枚舉變體內(nèi),這樣就可以更簡(jiǎn)單的表達(dá)意思。示例:

enum IpAddr{
	V4(String),
	V6(String),
}
let home = IpAddr:V4(String::from("127.0.0.1"));
let loopback = IpAddr::V6(String::from("::1"));

可以直接將數(shù)據(jù)附加到枚舉的每個(gè)變體中,這樣就不需要額外的使用結(jié)構(gòu)體了。
使用枚舉還可以讓每個(gè)變體擁有不同類(lèi)型和數(shù)量的關(guān)聯(lián)數(shù)據(jù)。
示例:

enum IpAddr{
	V4(u8,u8,u8,u8),
	V6(String),
}
let home = IpAddr::V4(127.0.0.1);
let loopback = IpAddr::V6(String::from("::1"));

2、Option枚舉:

在Rust中雖然沒(méi)有空值的概念,但是卻提供了一個(gè)擁有類(lèi)似概念的枚舉,可以使用它來(lái)標(biāo)識(shí)一個(gè)值的無(wú)效或缺失。這個(gè)枚舉就是Option<T>,它在標(biāo)準(zhǔn)庫(kù)中的定義如下:

enum Option<T>{
	Some(T),
	None,
}

這里的<T>表示一種泛型,即可以指代任意類(lèi)型的數(shù)據(jù)。
因?yàn)?code>Option<T>和T(T表示任意數(shù)據(jù)類(lèi)型)是不同的類(lèi)型,因此編譯器不允許像使用普通值一樣去直接使用Option<T>的值。

3、控制流運(yùn)算符match:

Rust中存在一個(gè)控制流運(yùn)算符:match,它允許將一個(gè)值與一系列的模式相比較,并根據(jù)匹配的模式執(zhí)行相應(yīng)的代碼。模式可以由字面量、變量名、通配符和其他組成。
示例:

enum Coin {
	Penny,
	Nickel,
	Dime,
	Quarter,
}
fn value_in_cents(coin:Coin) -> u32{
	match coin{
		Coin::Penny => 1,
		Coin::Nickel => 5,
		Coin::Dime => 10,
		Coin::Quarter => 25,
	}
}

使用match進(jìn)行匹配時(shí),必須窮舉所有的可能,來(lái)確保代碼的合法性。

4、_通配符:

當(dāng)不需要處理所有可能的值的時(shí)候,可以使用_通配符去匹配其余值。
示例:

let some_u8_value = 0u8;
match some_u8_value{
	1 => println!("one"),
	3 => println!("three"),
	5 => println!("five"),
	_ => (),
}

這里的_可以匹配任何值,將_放在其他分支后面,可以幫助匹配所有沒(méi)有被顯式指定出來(lái)的情形。

5、簡(jiǎn)單控制流if let

if let能夠用來(lái)處理只關(guān)心某一種匹配而忽略其他匹配的情況。
示例:
使用match進(jìn)行匹配:

let some_u8_value = Some(0u8);
match some_u8_value{
	Some(3) => println!("three"),
	_ => (),
}

使用if let進(jìn)行改寫(xiě):文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-610584.html

let some_u8_value = Some(0u8);
if let Some(3) = some_u8_value{
	println!("three"),
}

到了這里,關(guān)于Rust之枚舉與模式匹配的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶(hù)投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包