在rust中,match的基本作用是解构。它能对tuple,enum,struct,ref,pointer等各种类型进行解构。但不同的类型,还是略有些不同。

一、一般的match
如tuple,enum,struct等。在这种情况下,match 需要覆盖全部情况。
更多的是进行分支判断,以下的例子见《Rust by Example》。

fn main() {let pair = (0, -2);// TODO ^ Try different values for `pair`println!("Tell me about {:?}", pair);// Match can be used to destructure a tuplematch pair {// Destructure the second(0, y) => println!("First is `0` and `y` is `{:?}`", y),(x, 0) => println!("`x` is `{:?}` and last is `0`", x),_      => println!("It doesn't matter what they are"),// `_` means don't bind the value to a variable}
}

二、ref下的match

如ref,pointer等。在这种情况,感觉match往往是再做一个唯一的确定项。

1、更多的是进行解构。2、此外,match中并没有所有的可能情况出现,比如_

fn main() {let reference = &4;match reference {&val => println!("Got a value via destructuring: {:?}", val),}// 特别有意思的是:match (*reference)*2 {val => println!("Got a value via dereferencing: {:?}", val), //=> 4*2=8}let _not_a_reference = 3;let ref _is_a_reference = 3;let value = 5;let mut mut_value = 6;match value {ref r => println!("Got a reference to a value: {:?}", r),}match mut_value {ref mut m => {*m += 10;println!("We added 10. `mut_value`: {:?}", m);},}
}

Rust : ref下的match相关推荐

  1. Rust语言- 匹配器 match

    Rust语言- 匹配器 match Rust中的match表达式有些类似其他语言中的switch 和 case 语句,=>左边是需要匹配的模式,=>右边是待执行的代码.需要注意的是,mat ...

  2. ref:下一个项目为什么要用 SLF4J

    ref:http://blog.mayongfa.cn/267.html 阿里巴巴 Java 开发手册 前几天阿里巴巴在云栖社区首次公开阿里官方Java代码规范标准,就是一个PDF手册,有命名规范,让 ...

  3. rust火箭下楼_rust火箭基地刷新 | 手游网游页游攻略大全

    发布时间:2016-01-09 模拟人生4" data_ue_src="http://www.douxie.com/game/11727.html" style=&quo ...

  4. 深入RUST标准库内核(六)—Iterator

    本书github链接: inside-rust-std-library 本书前面章节: 深入RUST标准库内核(序言) 深入RUST标准库内核(一)概述 深入RUST标准库内核(二)内存 深入RUST ...

  5. 8万字带你入门Rust

    Rust ?? 学习建议: 先从 整体出发,不要让自己陷入到细节中去 和自己已知的知识建立联系 rust 和go一样采用 组合的手段实现代码复用,不要深思为什么不是继承 学会阅读源码,从源码中学习 R ...

  6. Rust语言之模式匹配

    概述 模式匹配是一种机制,用于判断某个类型或值是否匹配某一个模式,一旦匹配,就可以根据模式中指定的规则对类型或值进行解析.模式匹配经常应用于数据结构字符串中,比如在某个字符串中查找特定字串.在Rust ...

  7. rust主播排行_「Rust日报」2019每周精选 • 第四期

    前言: 从2018年开始,我每天会花1个小时关注Rust社区动态,并且在Rust.CC论坛.tg channel.Steemit.GitHub.语雀订阅都开通了Rust日报,分享我每天的见闻,偶尔也夹 ...

  8. 在Windows下完成QTL-seqMutMap

    纯粹就是记录下如何在Window下少写代码完成QTL-seq&MutMap,并没有详细讲解QTL-seq&MutMap的原理和每一步背后的含义.详细原理以及实验设计可以看文章 QTL- ...

  9. 五分钟入门rust语言

    1. 入坑rust 1.1 rust发展历程 2006年,Mozilla 员工 "Graydon Hoare" 开发了Rust. 2015年5月15日,Rust编程语言核心团队正式 ...

  10. JavaScript之match()方法讲解

    定义和用法 match() 方法可在字符串内检索指定的值,或找到一个或多个正则表达式的匹配. 该方法类似 indexOf() 和 lastIndexOf(),但是它返回指定的值,而不是字符串的位置. ...

最新文章

  1. AI一分钟 | “芯片门”影响仍在,英伟达旗下多款芯片也遭遇“幽灵”漏洞影响;贾跃亭邀媒体试乘法乐第FF91,你怎么看?
  2. 一个有趣的算法问题:如何定义一个分数类
  3. CCPC 2018桂林站游记
  4. drill apache_如何使用Apache Drill分析高度动态的数据集
  5. 怎么把html转换成jpg6,html转为图片(六):xhtmlrenderer
  6. c语言将链表写入二进制文件_通过逐级遍历将二进制树转换为单链表的C程序
  7. java实现两个字符串相连接_P005 实现两个字符串的连接 ★
  8. MAVEN项目的搭建
  9. 结构体构造函数_Go 语言的数据结构 :栈与队列
  10. 前端开源项目周报0412
  11. I2c-tools工具使用及调试
  12. 数电第四章:组合逻辑电路
  13. 平面中判断点在三角形内算法(重心法)
  14. m3u8 文件代码片段.
  15. SRE稳定性指标:MTBF、MTTR
  16. 【XJOI】燃烧的远征
  17. Linux系统启动过程及其修复过程简析(CentOS5、6)
  18. ceph学习之路----OSD DNE状态处理
  19. 适合学生党的蓝牙耳机品牌有哪些?性价比高的无线耳机推荐
  20. MySQL5.7修改密码问题解决方案

热门文章

  1. BZOJ1034: [ZJOI2008]泡泡堂BNB
  2. 在注册表更改Program Files的位置
  3. HeadFIrst Ruby 第二章总结 methods and classes
  4. xxx.app已损坏,打不开.你应该将它移到废纸篓-已解决
  5. 自然语言交流系统 phxnet团队 创新实训 个人博客 (十)
  6. Linux一些基本概念
  7. centos 安装qrcode  二维码
  8. 深度学习caffe:最优化方法
  9. 20200123每日一句
  10. 190727每日一句