rust常用的宏使用记录(九)
matches! 宏使用
matches! 是 Rust 标准库中一个非常有用的宏,它允许你方便地匹配一个表达式的结果是否符合某个模式。它的基本用法如下:matches!(expression, pattern)
这个宏返回一个布尔值,如果 expression 匹配 pattern,则返回 true,否则返回 false。下面是一些常见的用法示例:基本用法let value = Some(3);
assert!(matches!(value, Some(3)));
匹配枚举enum MyEnum {Foo,Bar(i32),
}let e = MyEnum::Bar(10);
assert!(matches!(e, MyEnum::Bar(10)));
匹配并忽略值
使用 _ 忽略模式中的值:let value = Some(42);
assert!(matches!(value, Some(_)));
多模式匹配
使用 | 运算符进行多模式匹配:enum MyEnum {Foo,Bar,Baz,
}let e = MyEnum::Bar;
assert!(matches!(e, MyEnum::Foo | MyEnum::Bar));
结合守卫(guard)
结合条件表达式使用:let value = Some(4);
assert!(matches!(value, Some(x) if x > 3));
结合 Option 和 Result
rust
复制代码
let opt = Some(10);
assert!(matches!(opt, Some(x) if x > 5));let res: Result<i32, &str> = Ok(2);
assert!(matches!(res, Ok(2)));
assert!(matches!(res, Err(_)));
结合结构体和元组struct Point {x: i32,y: i32,
}let p = Point { x: 1, y: 2 };
assert!(matches!(p, Point { x: 1, y: 2 }));
结合复杂模式enum MyEnum {Foo(i32, i32),Bar { x: i32, y: i32 },
}let e = MyEnum::Foo(1, 2);
assert!(matches!(e, MyEnum::Foo(1, 2)));let e = MyEnum::Bar { x: 3, y: 4 };
assert!(matches!(e, MyEnum::Bar { x: 3, y: 4 }));
结合引用let value = &Some(5);
assert!(matches!(value, &Some(5)));
这些示例展示了 matches! 宏的多种用法,涵盖了基本匹配、忽略值、多模式匹配、结合守卫、结构体匹配和复杂模式匹配等场景。matches! 宏的灵活性使得它在各种条件检查和模式匹配中都非常有用。
相关文章:
rust常用的宏使用记录(九)
matches! 宏使用 matches! 是 Rust 标准库中一个非常有用的宏,它允许你方便地匹配一个表达式的结果是否符合某个模式。它的基本用法如下:matches!(expression, pattern) 这个宏返回一个布尔值,如果 expression 匹配 pattern,则返回…...
【Python机器学习】支持向量机——手写数字识别问题
基于SVM的数字识别步骤: 1、收集数据:提供的文本文件 2、准备数据:基于二值图像构造向量 3、分析数据:对图像向量进行目测 4、训练算法:采用两种不同的核函数,并对径向基核函数采用不同的设置来运行SMO算法…...
学习笔记-Cookie、Session、JWT
目录 一、验证码的生成与校验 1. 创建生成验证码的工具类 2. 写一个 Controller 3. 实现验证码验证 1. 获取验证码 2. 验证码请求过程 3. 验证码的校验 4. 原理说明 5. 验证 6. 总结 二、JWT登录鉴权 1. 为什么要做登录鉴权? 2. 什么是 JWT 3. JWT相比…...
题海战术,面试必胜秘诀
目录 1.Java 的优势是什么?2.什么是 Java 的多态特性?3.Java 中的参数传递是按值还是按引用?4.为什么 Java 不支持多重继承?5.什么是 Java 中的不可变类?总结 题目 来自面试鸭刷题神器 1.Java 的优势是什么? Java 的跨平台性、垃圾回收机制以及其强…...
设计模式详解(十九)——命令模式
命令模式简介 命令模式定义 命令模式(Command Pattern)是一种在面向对象程序设计中常用的行为型设计模式。命令模式的核心思想在于将请求封装成一个对象,从而使发出请求的责任和执行请求的责任分割开。它可以让请求发送者和请求接收者之间消…...
实战:MySQL数据同步神器之Canal
1.概叙 场景一:数据增量实时同步 项目中业务数据量比较大,每类业务表都达到千万级别,虽然做了分库分表,每张表数据控制在300W以下,但是效率还是达不到要求,为了提高查询效率,打算使用ES进行数…...
5.6软件工程-运维
运维 系统转换系统维护系统评价练习题 系统转换 新老系统的转换 系统转换是指:新系统开发完毕,投入运行,取代现有系统的过程,需要考虑多方面的问题,以实现与老系统的交接,有一下三种转换计划: …...
在JavaScript中如何确保构造函数只被new调用
构造函数是一个特殊的函数,用于初始化一个新创建的对象。它是在创建对象时自动调用的。构造函数通常用于为对象的属性赋值,或者执行其他必要的设置。 使用函数名大写字母开头,这是一种命名约定,用于区分构造函数和普通函数。如何…...
【数据结构算法经典题目刨析(c语言)】反转链表(图文详解)
💓 博客主页:C-SDN花园GGbond ⏩ 文章专栏:数据结构经典题目刨析(c语言) 目录 一、题目描述 二、思路分析 三、代码实现 一、题目描述: 二、思路分析 : 通过三个指针n1,n2,n3来实现链表的反转 1.首先初始化 n1为…...
机器学习之争:Python vs R,谁更胜一筹?
一、引言 随着人工智能和大数据的迅速发展,机器学习已成为现代科技的重要组成部分。在医疗、金融、零售、制造等多个领域,机器学习技术的应用无处不在。从数据分析到预测建模,再到深度学习,机器学习正在改变我们的工作和生活方式…...
Vulnhub靶机:JANGOW_ 1.0.1
目录 前言: 一、安装虚拟机Jangow:1.0.1靶机 二、Web部分 前言: 难度:简单,本文使用VirtualBox打开,下载地址: https://download.vulnhub.com/jangow/jangow-01-1.0.1.ova 一、安装虚拟机J…...
Python脚本实现USB自动复制文件
USB驱动器作为常见的数据存储设备,经常用于数据传输和备份。 然而,我们在手动处理文件复制可能效率低下且容易出错。 因此,我们可以利用Python编写脚本来自动化这一过程,提高效率和数据安全性。 准备工作 首先,我们需…...
【C++学习第19天】最小生成树(对应无向图)
一、最小生成树 二、代码 1、Prim算法 #include <cstring> #include <iostream> #include <algorithm>using namespace std;const int N 510, INF 0x3f3f3f3f;int n, m; int g[N][N]; int dist[N]; bool st[N];int prim() {memset(dist, 0x3f, sizeof di…...
第一个 Flask 项目
第一个 Flask 项目 安装环境创建项目启动程序访问项目参数说明Flask对象的初始化参数app.run()参数 应用程序配置参数使用 Flask 的 config.from_object() 方法使用 Flask 的 config.from_pyfile() 方法使用 Flask 的 config.from_envvar() 方法步骤 1: 设置环境变量步骤 2: 编…...
利用 Angular 发挥环境的力量
一.介绍 您是否曾想过如何在不同的环境中为同一应用设置不同的颜色、标题或 API 调用?可以肯定的是,生产 API 和测试 API 是不同的,应谨慎使用。部署时,我们不会在项目的所有地方手动更改所有 API 调用。不应这样做,因…...
Vue3+TypeScript+printjs 实现标签批量打印功能
前言:临时性需求没怎么接触过前端,代码实现有问题及优化点希望大佬可以留言告知一下 开发工具:VS CODE 界面开发:Vue3TypeScriptElementPlus 打印组件:Print-JS 前端打印入口图: 标签页面: …...
微信文件如何直接打印及打印功能在哪里设置?
在数字化时代,打印需求依旧不可或缺,但传统打印店的高昂价格和不便操作常常让人头疼。幸运的是,琢贝打印作为一款集便捷、经济、高效于一体的网上打印平台,正逐渐成为众多用户的首选。特别是通过微信小程序下单,更是让…...
dataX -20240804-master分支
1、相关报错 Error: java.io.IOException: java.lang.RuntimeException: ORC split generation failed with exception: org.apache.orc.impl.SchemaEvolution$IllegalEvolutionException: ORC does not support type conversion from file type struct<nanos:int> (10)…...
【网络】传输层
传输层 一、预备知识1、端口号1、端口号范围划分2、知名端口号3、两个问题4、netstat && iostate5、pidof6、谈下面协议始终铭记两个问题 二、UDP协议(简单)1、UDP协议端格式2、UDP的特点3、面向数据报4、UDP缓冲区 三、TCP协议(重点…...
学生管理系统之更新和删除、筛选
学生管理系统之更新和删除 建立新的窗口 添加组件 进行布局 使用Widget把二个放在一块,作为一列,然后全选进行栅格布局,最后添加弹簧进行微调。 编写增加的槽函数 在主函数中调用对话框...
Arduino控制步进电机全攻略:从脉冲计算到加速曲线优化
Arduino控制步进电机全攻略:从脉冲计算到加速曲线优化 引言:为什么需要精准控制步进电机? 在创客和嵌入式开发领域,步进电机因其精准的开环控制特性而广受欢迎。不同于普通直流电机,步进电机能够通过精确控制脉冲数量来…...
使用LaTeX自动生成伏羲模型气象分析报告
使用LaTeX自动生成伏羲模型气象分析报告 每次跑完伏羲模型,看着那一大堆NetCDF或GRIB格式的预报数据,你是不是也头疼过?数据有了,漂亮的图也画好了,但要把它们整理成一份格式规范、图表清晰、文字描述专业的正式报告&…...
Endnote参考文献序号对齐的终极解决方案
1. 为什么参考文献序号会对不齐? 很多科研工作者在使用Endnote插入参考文献时都遇到过这样的尴尬:当文献序号从个位数增长到十位数时(比如从[9]变成[10]),原本整齐排列的参考文献列表突然变得参差不齐。这个问题看似简…...
提示工程架构师进阶之路:AI提示设计用户体验的无障碍设计指南
提示工程架构师进阶:AI提示设计的无障碍体验指南——让每一句交互都“触手可及” 摘要:为什么你的AI提示,可能把16%的用户拒之门外? 清晨7点,张阿姨对着手机里的AI助手说:“帮我订张下周三去闺女家的火车票。” 助手回复:“请提供具体的出发地、目的地及日期。” 张阿…...
基于Chrome WebRTC与语音大模型的端到端AI辅助开发实战
最近在做一个需要实时语音交互的智能应用,项目要求低延迟、高音质,并且要能集成一个语音大模型进行实时分析和反馈。经过一番技术选型和实践,最终选择了基于 Chrome WebRTC 技术栈来构建端到端的解决方案。整个过程踩了不少坑,也积…...
AI赋能Java开发:在快马平台轻松构建集成智能对话与代码分析的Java应用
最近尝试用Java结合AI能力做了个小项目,发现这种组合特别适合快速开发智能应用。在InsCode(快马)平台上实践后发现,整个过程比想象中简单很多,分享下具体实现思路。 项目框架搭建 用Spring Initializr创建基础项目,选择Web和Lombo…...
电镀生产线组态王6.55和三菱PLC联机仿真程序10(OPC通讯)带运行效果操作讲解视频和设计...
电镀生产线组态王6.55和三菱PLC联机仿真程序10(OPC通讯)带运行效果操作讲解视频和设计要求io表接线图主电路CAD曲线报表报警界面作为一名高级程序员兼IT知识写手,我将按照您的要求创作一篇关于电镀生产线组态王6.55和三菱PLC联机仿真程序10&a…...
openclaw改配置
配置在 ~/.openclaw/openclaw.json建议先备份:cp ~/.openclaw/openclaw.json ~/.openclaw/openclaw_bp.json修改后重启:openclaw gateway restart查看模型修改是否生效:openclaw models status...
Qwen3-ForcedAligner-0.6B效果实测:不同方言口音(潮汕/客家/闽南)识别对比
Qwen3-ForcedAligner-0.6B效果实测:不同方言口音(潮汕/客家/闽南)识别对比 1. 引言:当AI语音识别遇上“十里不同音” 你有没有遇到过这样的尴尬?用手机语音转文字,自己明明说的是普通话,结果出…...
3步打造本地化文档处理中枢:Convert-Lite全流程效率提升指南
3步打造本地化文档处理中枢:Convert-Lite全流程效率提升指南 【免费下载链接】convert-lite flashai-convert-lite,离线免费文档转换工具,支持pdf to markdown,word to markdown,excel to markdown,ppt to markdown, html to markdown,image …...
