<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      Rust的枚舉介紹

      Rust的枚舉的變體可以持有值,并且每個變體持有的值的數據類型可以是不同的。

      enum IpAddrKind {
          V4(u8,u8, u8, u8),
          V6(String)
      }
      let home = IpAddrKind::V4(127,0,0,1);
      let loopback = IpAddrKind::V6(String::from("::1"));
      

      可以為枚舉實現方法,如下代碼:

      fn main(){
          let m=Message::Write(String::from("hello"));
          m.call();
      }
      enum Message {
          Quit,//Quit變體不持有數據
          Move {x:i32,y: i32 },//持有的數據是類型是結構體Struct
          Write(String),
          ChangeColor(i32,i32,i32)//持有的數據類型是元組Tuple
      }
      impl Message {
          fn call(&self){
          //...
          }
      }
      

      Option Enum 系統級的標準庫內置聲明的枚舉

      表示值存在或不存在兩種變體的枚舉。變體 None 就相當于其他語言中的null,rust語言沒有null(不允許不確定),None變體即是從語言層面上處理null的方式

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

      Option及其變體 None、Some(T) 都是系統內置即Prelude的,所以可以直接使用,而不用指明一長串的命名空間。如下示例:

      Let some_number = Some(5);//變量類型為Option<i32>
      Let some_string = Some("a string");//變量類型為Option<String>
      let absent_number:0ption<i32> = None;//變量類型為Option<i32>, 這里注意由于None是不指示類型的,所以聲明時,必須指明變量absent_number時,須顯示指明類型
      

      match 表達式,用來控制流程

      enum Coin {
      Penny,
      Nickel,
      Dime,
      Quarter,
      }
      fn value_in_cents(coin:Coin) => u8 {
          match coin {
          Coin::Penny => 1,
          Coin::Nickel => 5,
          Coin::Dime => 16,
          Coin::Quarter => 32,//如果Quarter同時持有數據,則寫法示例為 Coin::Quarter(data: String){println!("{data}"); 32}
          }
      }
      //match 表達式的條件分支必須窮盡所有可能性
      

      match 表達式如果直接傳遞變量,則會使的原變量換去所有權,而無法在繼續使用。如下代碼將在最后一行再次想使用 opt 時報錯,因為數據在 Some(s:String) 這一行時被移動

      fn main(){
          let opt:0ption<String>=Some(String::from(s:"Hello world"));
      }
      match opt {
          Some(s:String) => println!("Some: {}",s),//注:如果這里使用 Some(_) => println!("Some: Unused"),即在match花括號內未使用opt,則opt所有權不會移動 最后一行不會報錯
          None => println!("None!")
      }
      println!("{:?}",opt);
      

      所以,一般情況下,match表達式的參數使用引用方式傳遞,即采用不獲取原變量的所有權的方式,如下圖:
      image

      if let 當需要僅匹配一種情況時的控制流程表達式

      // if let 結構讀作:若 let 將 config_max 解構成 Some(max),則執行語句塊{println!("The maximum number is }",max);}
      if let Some(max:u8) = config_max {
          println!("The maximum number is }",max);
      }
      
      //如果使用match,則需要寫出其他情況的表達式。
      Let config_max= Some(3:u8);
      match config_max{
      Some(max:u8) => println!("The maximum is configured to be {max}),
      _=>(),//_ 其他情況,() 什么也不做
      }
      
      posted on 2024-11-19 19:33  hrx521  閱讀(39)  評論(0)    收藏  舉報
      主站蜘蛛池模板: 精品久久久久久无码不卡| 国产精品自拍中文字幕| 国产精品爆乳奶水无码视频免费| 国产精品精品一区二区三| 亚洲欧美日韩精品久久| 亚洲熟妇无码另类久久久| 亚洲综合国产成人丁香五| 久久国产精品第一区二区| 久久永久视频| 欧美一本大道香蕉综合视频 | 人妻中文字幕精品系列| 国产在线观看免费观看| 成在线人视频免费视频| 中国女人大白屁股ass| 97精品久久久大香线焦| 不卡一区二区国产精品| 在线成人精品国产区免费| 狠狠躁夜夜躁人人爽天天5| 熟女女同亚洲女同中文字幕| 国产三级精品三级在线专区1| 无码国模国产在线观看免费| 国产亚洲精品久久77777| 国产人妻无码一区二区三区18| 国产精品中文字幕综合| 午夜综合网| 女女互揉吃奶揉到高潮视频 | 国内揄拍国内精品少妇国语| 麻豆天美国产一区在线播放| 亚洲一区二区偷拍精品| 边添小泬边狠狠躁视频| 国产av一区二区亚洲精品| 国产精品第二页在线播放| 日本一区二区三区四区黄色| 国产激情无码一区二区三区| 国产av综合色高清自拍| 日韩av一区二区三区在线| 国产偷窥熟女高潮精品视频| 日韩伦理片| 人妻丝袜AV中文系列先锋影音 | 亚洲高清WWW色好看美女| 一区二区在线观看 激情|