日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

15.枚举enum.rs

發布時間:2024/4/11 编程问答 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 15.枚举enum.rs 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
//枚舉類在 Rust 中并不像其他編程語言中的概念那樣簡單,但依然可以十分簡單的使用#[derive(Debug)] enum Book {Papery,Electronic, }//如果你現在正在開發一個圖書管理系統,你需要描述兩種書的不同屬性(紙質書有索書號,電子書只有 URL),你可以為枚舉類成員添加元組屬性描述 enum Book2 {Papery(u32),Electronic(String), }//如果你想為屬性命名,可以用結構體語法 enum Book3 {Papery { index: u32 },Electronic { url: String }, }fn main() {let book = Book::Papery;println!("{:?}", book);let pbook2 = Book2::Papery(1001);let ebook2 = Book2::Electronic(String::from("url://..."));let pbook3 = Book3::Papery { index: 1001 };let ebook3 = Book3::Electronic {url: String::from("url..."),};//switch 語法很經典,但在 Rust 中并不支持,Rust 通過 match 語句來實現分支結構//match 塊也可以當作函數表達式來對待,它也是可以有返回值的,但是所有返回值表達式的類型必須一樣!match ebook3 {Book3::Papery { index } => {println!("papery book {}", index);}Book3::Electronic { url } => {println!("Electronic book {}", url);}}//如果把枚舉類附加屬性定義成元組,在 match 塊中需要臨時指定一個名字enum Book4 {Papery(u32),Electronic { url: String },}let book = Book4::Papery(1001);match book {Book4::Papery(i) => {println!("{}", i);}Book4::Electronic { url } => {println!("{}", url);}}//match 除了能夠對枚舉類進行分支選擇以外,還可以對整數、浮點數、字符和字符串切片引用(&str)類型的數據進行分支選擇。//其中,浮點數類型被分支選擇雖然合法,但不推薦這樣使用,因為精度問題可能會導致分支錯誤//對非枚舉類進行分支選擇時必須注意處理例外情況,即使在例外情況下沒有任何要做的事 . 例外情況用下劃線 _ 表示:let t = "abc";match t {"abc" => println!("Yes"),_ => {}}//Option 是 Rust 標準庫中的枚舉類,這個類用于填補 Rust 不支持 null 引用的空白/*enum Option<T> {Some(T),None,}*/let opt = Option::Some("Option_Some_str");match opt {Option::Some(something) => {println!("{}", something);}Option::None => {println!("opt is nothing");}}//如果你的變量剛開始是空值,你體諒一下編譯器,它怎么知道值不為空的時候變量是什么類型的呢?所以初始值為空的 Option 必須明確類型let opt: Option<&str> = Option::None;match opt {Option::Some(something) => {println!("{}", something);}Option::None => {println!("opt is nothing");}}//由于 Option 是 Rust 編譯器默認引入的,在使用時可以省略 Option:: 直接寫 None 或者 Some()//Option 是一種特殊的枚舉類,它可以含值分支選擇let t = Some(64);match t {Some(64) => println!("Yes64"),Some(72) => println!("Yes72"),_ => println!("No"),}//普通matchlet i = 0;match i {0 => println!("zero"),_ => {}}//if let 語法let i = 0;if let 0 = i {println!("zero");}//可以在之后添加一個 else 塊來處理例外情況。//if let 語法可以認為是只區分兩種情況的 match 語句的"語法糖"(語法糖指的是某種語法的原理相同的便捷替代品)。let book = Book2::Electronic(String::from("url://..."));//if let Book2::Papery(index) = book {if let Book2::Electronic(index) = book {println!("Papery {}", index);} else {println!("Not papery book");}let t: Option<i32> = Option::None;println!("{:?}", t.ok_or("123"));let errr = t.ok_or("123"); }

?

總結

以上是生活随笔為你收集整理的15.枚举enum.rs的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。