范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文
国学影视

Rust学习笔记(十三)match(模式匹配)

  match在Rust中是一个强大的控制流运算符。match允许一个值与一系列模式进行匹配,并执行成功匹配上的模式对应的代码。模式可以是字面值、变量名、通配符... 例: enum Coin {     Penny,     Nickel,     Dime,     Quarter, }  fn value_in_cents(coin: Coin) -> u8{     match coin {         Coin::Penny => 1,//只有一行要执行的代码时可省略`{}`,与下一个模式之间用`,`隔开         Coin::Nickel => 5,         Coin::Dime => {             println!("{}", 10);             10         }//在Rust中逗号在`{}`后以及最后一个时都可省略         Coin::Quarter => {             println!("{}", 25);             25         }     } }  fn main() {     let value = value_in_cents(Coin::Nickel);     println!("{}", value); } 绑定值的模式
  匹配的分支可以是绑定到被匹配对象的部分值,因此可以从枚举的变体中提取值。例: #[derive(Debug)] enum UsState {     Alabama,     Alaska, }  enum Coin {     Penny,     Nickel,     Dime,     Quarter(UsState), }  fn value_in_cents(coin: Coin) -> u8 {     match coin {         Coin::Penny => 1, //只有一行要执行的代码时可省略`{}`,与下一个模式之间用`,`隔开         Coin::Nickel => 5,         Coin::Dime => {             println!("{}", 10);             10         } //在Rust中逗号在`{}`后以及最后一个时都可省略         Coin::Quarter(state) => {//绑定值             println!("{:#?}", state);             25         }     } }  fn main() {     let value = value_in_cents(Coin::Quarter(UsState::Alaska));     println!("{}", value); }  匹配Option
  例: //若传入的Option中有值则值+1,无值则返回None fn plus_one(x: Option) -> Option {     match x {         Some(value) => Some(value + 1),         None => None,     } }  fn main() {     let value = Some(666);     let r = plus_one(value);      let value1 = None;     let r1 = plus_one(value1);      println!("{:#?}, {:#?}", r, r1); } match必须穷举所有可能
  对上一个例子中的plus_one函数做以下修改: fn plus_one(x: Option) -> Option {     match x {         Some(value) => Some(value + 1),     } }
  编译器会给出以下错误提示: error[E0004]: non-exhaustive patterns: `None` not covered    --> srcmain.rs:3:11     | 3   |     match x {     |           ^ pattern `None` not covered
  所以使用match时必须覆盖所有可能性,不然无法成功编译。若match分支较多,我们不想一一匹配处理,可使用_通配符来代替剩下的还没有列出的值。例: fn main() {     let value = 6u8;     match value {         1 => println!("one"),         2 => println!("two"),         3 => println!("three"),         4 => println!("four"),         5 => println!("five"),         _ => (),     }//value是u8类型(0-255),但是我们只想处理1-5,      //所以除了1-5都会进入通配符_分支 } if let
  如果我们只想处理一种情况,可使用if let语法简化我们的代码。例: fn main() {     let value = Some(6u8);     if let Some(6) = value {         println!("{:#?}", value);     } }
  此外还可搭配else、else if使用,例: fn main() {     let value = Some(7u8);     if let Some(6) = value {         println!("6 => {:#?}", value);     } else if let Some(5) = value {         println!("5 => {:#?}", value);     } else {         println!("_ => {:#?}", value);     } }

癌症未来可以根治吗?未来世界医学的发展一定是十分巨大的,在癌症治疗方面,也会有越来越多的办法,在癌症根治方面,未来一些癌症肯定会有根治办法出现,但这个过程相对漫长,需要我们进行长期的科学研究才行。癌症你为什么用华为手机?好用耐用用习惯了不用。性价比不行首先呢,华为手机质量确实是不错,现在都要提倡用国产的产品,必须要支持国货,性价比也是不错!赞赞赞,所以我选用国产的手机,也是比较了解的手机品牌,感觉216的手机现在能用来干嘛?没用的人就是纸上谈兵,老机虽差也有用武之地。奇客手里就有一台216手机,100块钱入的二手中兴G720C,这手机怎么还不扔呢,因为它有一点很强大,甚至干掉目前市面两千元以上新机!(请问一只耳正常的,另一只耳听力下降需要配助听器吗?简单说,如果听力损失影响到个人的正常生活,工作交流,就应该选配助听器。是否需要助听器,由每个人的听力损失类型,听损程度,年龄,需求,身体,工作等等因素来决定,不能一概而论。左耳耳朵什么视频播放器是国内最好用的?在这个颜值即正义的年代,IINA一如原生般简约而现代的播放界面瞬间俘获了我的芳心优雅的播放界面在这美丽而优雅的界面之下,隐藏着一颗强大的内芯和详细完备的功能特性。首先就是IINA使华为降了公积金,为什么别的小企业纷纷效仿?首先明确一点,降公积金比例是政府为了减小企业人力成本压力而施展的措施,并不需要华为带头,有生存压力的企业自然会做缴存比例的调整,请勿将此归咎于华为带头。其次,华为降低公积金比例其实湖北考生作弊内幕曝光,为什么大家会更加愤怒?湖北考生作弊内幕曝光,可以说大家的第一反应是惊愕,随之而来的是愤怒。大家所质疑的就是该生如何能够顺利的过五关斩六将,将手机带入考场并将试题上传。还有就是高考如何保证公平公正。一该生收购珠海银隆对格力电器是福还是祸?按长远发展的方向。以后新能源汽车是首选。现在银隆。公交车上好多城市都有。销量已经排在前3。只要注重研发。发展是有前途的。看好格力。因为他做每件东西都是注重品质。是福是祸首先要看银隆未来陪伴视障伙伴出门的会是谁?封面图前不久,小米十一周年,雷军以我的梦想,我的选择为主题进行了一场年度演讲。其中有一款黑科技令人印象深刻,即小米首款仿生四足机器人CyberDog,昵称铁蛋。(图)小米Cyber再见燃油车路特斯计划未来五年推四款纯电动车型创立于1948年的路特斯,旗下的跑车以纯粹的驾驶乐趣和轻量化的设计而著称,但就是这样一家追求极致驾驶乐趣的车企,却也抵挡不住新能源大潮,被迫同流合污。2021年7月,路特斯发布了一未来需要的是存储空间和节省耗电量我们为什么需要分布式存储?很多人可能从来没有考虑过这个问题,为什么需要分布式存储?实际上,使用分布式存储是被迫的,因为随着互联网的飞速发展应用越来越丰富用户数量越来越多数据也成几何
科沃斯2020年净利增长431自主品牌发力高端化成效显著2021年4月23日,科沃斯机器人股份有限公司(以下简称科沃斯,股票代码603486。SH)发布2020年年度报告,报告显示,科沃斯2020年实现营业收入72。34亿元,同比增长3营收超600亿连续两季度盈利,阿里云迎来重要分水岭文杨剑勇过去一年,新冠在全球流行,给各行业带来挑战,但全球云服务市场依旧迎来稳健增长。IDC近日所发布的报告显示,2020年全球公有云服务整体市场规模(IaaSPaaSSaaS)达百度金山云份额跌至Others,云服务市场阿里华为腾讯三分天下文杨剑勇近几个月来,尽管全球资本市场遭遇震荡波动,但道琼斯指数时不时创历史新高。此外,以苹果微软亚马逊与谷歌为代表的科技巨头们,虽然在过去几天中表现低迷,其市值依旧在高位。截至目前剑指下一个五年的竞争,AI底层框架为何强者更强文杨剑勇1956年,人工智能概念首次提出。长时间以来,科学家对人工智能研究从未停止,而人工智能走向大众转折点则在2016年。这一年,谷歌旗下AI系统阿尔法狗与世界围棋冠军李世石的一头部效应显现美的华为欧瑞博领跑,智能家居将加速落地文杨剑勇近年来,智能家居设备日益普及,消费者对智能家电智能音箱智能门锁等智能设备需求强劲,从而促使智能家居设备呈现高速增长态势。以前依据权威调研机构IDC此前发布的报告显示,预计到市值一夜蒸发超800亿,营收与利润双降,巨头英特尔前景如何?文杨剑勇近年来,在人工智能等新技术驱动下,信息科技展现惊人的速度发展,一个数以百亿规模连接的物联网时代到来。2020年,全球物联网连接规模达300亿,IDC早前报告预测,到2024韩国品牌捷尼赛思G70Edition1官图发布中国市场限88台日前,捷尼赛思官方发布了G70Edition1车型的官图。新车预售价为36。18万元,中国市场限量88台。新车有望于10月份上市,将于年底前交付。新车定位豪华中型运动轿车,兼具运动特斯拉杀手来了?更高续航,售价50万起据外媒报道,9月28日美国电动车初创公司Lucid表示,将于10月下旬开始交付其豪华电动轿车LucidAir,续航里程将超过特斯拉,售价7。74万美元起,梦幻版的售价高达16。9万自主库里南来了红旗全尺寸SUV实车曝光日前,红旗LS7实车曝光,新车为一汽红旗大型SUV,整体延续红旗品牌家族式设计语言,搭载自主设计的V8发动机。新车详解外观部分,新车整体设计十分硬朗结实,家族式的超大尺寸中网自然不迈巴赫LV会擦出什么火花?迈巴赫电动概念车12月1日亮相近日,根据梅赛德斯奔驰官方信息梅赛德斯奔驰将再度与LV艺术总监VirgilAbloh携手,推出迈巴赫电动概念车,新车将有别于所有梅赛德斯奔驰车型。据悉,新车将于今年12月1日在迈阿天上卫星是不是都顺着地球自转方向飞行,有没有逆飞的?在地球上空飞行的卫星和飞船,是顺着地球自转方向飞行,还是逆着地球自转方向飞行呢?飞船起飞和返回,与地球的方向又是如何呢?航天顺向再入大气在讨论这个问题之前,我们要明白一个叫做参考系