网站首页 > 博客文章 正文
Rust1.4.2版本的更新指南中,提到一个更新了宏 matches!。我们一起来了解下
是的,其实就是我们常用到的match表达式,只是在使用matches!宏表达起来更简洁。
我们将上面的例子单拆出来说下,大家可能就一目了然了。
例子1
如果我们想表达这段匹配的模式,
'A'..='Z' | 'a'..='z' | '0'..='9'
那用match该怎么描述呢? 上代码:
实际上,get_foo匹配到其中一个模式后,返回true,未匹配到返回fasle
例子2
匹配到Some(x) if x > 2的值代码如下,其中这里的匹配模式:匹配守卫 if x > 2
- Some(x)是pattern匹配模式
- if x > 2 表示guard的匹配守卫(match guard)
- 关于匹配守卫的详细请参考链接:https://doc.rust-lang.org/stable/book/ch18-03-pattern-syntax.html#extra-conditionals-with-match-guards
这里的get_bar 匹配其中一个模式后,返回true,未匹配到返回fasle
好了,我们看了上面两个例子后,大概就能明白matches!宏的大致使用了。
matches!(expr,pattern)
- expr:是指条件判断的入参
- pattern 是期待为true的匹配模式。
演进
知道了matches!宏的原理,那我们自己推导一个类似该matches!宏的自定义matche_map函数。
- 接收一个闭包,返回bool类型函数,代码大致如下:
那我们看看怎么调用:
这里的match_map调用本质上类似上面的match匹配,上面列子做为参考演示下大致逻辑。
matches! 实现
我们来看下matches!的实现
- match匹配expression表达式
- pattern为匹配模式
- guard用?表示可能存在
- match 匹配上的模式返回true,其他返回false
总结
matches!宏极大简化了代码量,表达上直接。赶快将它用于你的Rust的代码中吧。墙裂推荐
猜你喜欢
- 2024-09-11 Rust 写操作系统之Hello world (三)
- 2024-09-11 Rust: 如何用Panic打造健壮应用(rust zig)
- 2024-09-11 在 Linux 新版内核中的 Rust 初探,原来是这样的
- 2024-09-11 Rust 向量(Vec)(rust 向量化)
- 2024-09-11 Rust 入坑指南:鳞次栉比 | CSDN 博文精选
- 2024-09-11 学习Rust编程——使用macro_rules!创建宏
- 2024-09-11 利用 Rust 过程宏实现的 derive-with 库
- 2024-09-11 Rust 基础入门-错误处理和宏-错误处理
- 2024-09-11 Rust 基础入门-错误处理和宏-属性式宏&函数式宏
- 2024-09-11 Rust编程语言里的宏回调(rust宏数据)
你 发表评论:
欢迎- 最近发表
- 标签列表
-
- ifneq (61)
- 字符串长度在线 (61)
- googlecloud (64)
- messagesource (56)
- promise.race (63)
- 2019cad序列号和密钥激活码 (62)
- window.performance (66)
- qt删除文件夹 (72)
- mysqlcaching_sha2_password (64)
- ubuntu升级gcc (58)
- nacos启动失败 (64)
- ssh-add (70)
- jwt漏洞 (58)
- macos14下载 (58)
- yarnnode (62)
- abstractqueuedsynchronizer (64)
- source~/.bashrc没有那个文件或目录 (65)
- springboot整合activiti工作流 (70)
- jmeter插件下载 (61)
- 抓包分析 (60)
- idea创建mavenweb项目 (65)
- vue回到顶部 (57)
- qcombobox样式表 (68)
- tomcatundertow (58)
- pastemac (61)
本文暂时没有评论,来添加一个吧(●'◡'●)