当前位置: 首页 > news >正文

rust学习-trait std::cmp::PartialEq、Eq、PartialOrd、Ord

PartialEq

介绍

pub trait PartialEq<Rhs = Self>
whereRhs: ?Sized,
{// Required method,后文有讲解这个注释fn eq(&self, other: &Rhs) -> bool;// Provided method,后文有讲解这个注释fn ne(&self, other: &Rhs) -> bool { ... }
}
x.eq(y) can also be written x == y
x.ne(y) can be written x != y
a!=b if and only if !(a==b)

对于不具有完全等价关系type,此trait允许部分相等(This trait allows for partial equality, for types that do not have a full equivalence relation)。
例如,在浮点数(floating point numbers)中 NaN != NaN,因此浮点类型实现 PartialEq 但不实现 Eq。
Formally speaking正式来说,当Rhs==Self时,这个特质对应于部分等价关系(hen Rhs == Self, this trait corresponds to a partial equivalence relation)。

如果Self和Rhs也实现了PartialOrd或Ord,那么它们的方法必须与PartialEq一致。
通过派生一些特征并手动实现其他特征,很容易意外地让他们产生不同意见。

等式关系equality relation,必须满足以下条件(对于 A、B、C 类型的所有 a、b、c):

对称Symmetric:
如果 A: PartialEq<B> 和 B: PartialEq<A>
则a==b 意味着b==a传递Transitive:
如果 A: PartialEq<B> 和 B: PartialEq<C> 和 A: PartialEq<C>
则a==b 且 b==c 意味着 a==c注意
B: PartialEq<A>(对称)和 A: PartialEq<C>(传递)实现并不强制存在
但只要它们确实存在,这些要求就适用

此trait可以与#[derive] 一起使用

  • 当在structs上派生时,如果所有字段都相等,则两个实例相等;如果任何字段不相等,则两个实例不相等。
  • 当基于枚举派生时,如果两个实例是相同的变体并且所有字段都相等,则它们相等。

示例

两个相同类型的比较

enum BookFormat {Paperback,Hardback,Ebook,
}struct Book {isbn: i32,format: BookFormat,
}impl PartialEq for Book {fn eq(&self, other: &Self) -> bool {self.isbn == other.isbn}
}fn main() {let b1 = Book { isbn: 3, format: BookFormat::Paperback };let b2 = Book { isbn: 3, format: BookFormat::Ebook };let b3 = Book { isbn: 10, format: BookFormat::Paperback };assert!(b1 == b2);assert!(b1 != b3);
}

两个不同类型的比较

// The derive implements <BookFormat> == <BookFormat> comparisons
#[derive(PartialEq)]
enum BookFormat {Paperback,Hardback,Ebook,
}struct Book {isbn: i32,format: BookFormat,
}// 实现 <Book> == <BookFormat> 比较,注意先后顺序
impl PartialEq<

相关文章:

rust学习-trait std::cmp::PartialEq、Eq、PartialOrd、Ord

PartialEq 介绍 pub trait PartialEq<Rhs = Self> whereRhs: ?Sized, {// Required method,后文有讲解这个注释fn eq(&self, other: &Rhs) -> bool;// Provided method,后文有讲解这个注释fn ne(&self, other: &Rhs) -> bool {... } }x.eq(y)…...

k8s pod根据指标自动扩缩容举例

目录 基于 内存 指标实现pod自动扩缩容 举例配置 基于 cpu 指标实现pod自动扩缩容 举例配置 基于请求数&#xff08;次/秒&#xff09; 指标实现pod自动扩缩容 举例配置 基于 http请求响应时间 (ms) 指标实现pod自动扩缩容 举例配置 基于 Java GC暂停时间 (ms) 指标实现…...

深、浅拷贝之间的关系

深、浅拷贝之间的关系 什么是赋值 赋值是将某一数值或对象赋给某个变量的过程&#xff0c;分为下面 2 部分 基本数据类型&#xff1a;赋值&#xff0c;赋值之后两个变量互不影响引用数据类型&#xff1a;赋址&#xff0c;两个变量具有相同的引用&#xff0c;指向同一个对象&…...

服务器数据恢复-某银行服务器硬盘数据恢复案例

服务器故障&分析&#xff1a; 某银行的某一业务模块崩溃&#xff0c;无法正常使用。排查服务器故障&#xff0c;发现运行该业务模块的服务器中多块硬盘离线&#xff0c;导致上层应用崩溃。 故障服务器内多块硬盘掉线&#xff0c;硬盘掉线数量超过服务器raid阵列冗余级别所允…...

仪器器材经营小程序商城的作用是什么

互联网发展下&#xff0c;数字化转型已经成为常态&#xff0c;仅依赖传统线下经营模式将很难再增长。 作为产品销售及客户维护度高的仪器器材行业&#xff0c;拥有自营商城平台是必要的&#xff0c;不仅可以解决以上难题&#xff0c;还利于打造自身品牌多渠道传播&#xff0c;…...

京东数据分析:2023年9月京东洗烘套装品牌销量排行榜!

鲸参谋监测的京东平台9月份洗烘套装市场销售数据已出炉&#xff01; 根据鲸参谋平台的数据显示&#xff0c;今年9月份&#xff0c;京东平台洗烘套装的销量为7100&#xff0c;环比下降约37%&#xff0c;同比增长约87%&#xff1b;销售额为6000万&#xff0c;环比下降约48%&#…...

论文阅读-多目标强化学习-envelope MOQ-learning

introduction 一种多目标强化学习算法&#xff0c;来自2019 Nips《A Generalized Algorithm for Multi-Objective Reinforcement Learning and Policy Adaptation》本文引用代码全部来源于论文中的链接。主要参考run_e3c_double.py文件 1 总体思想 1.将输入中加入多目标的偏…...

【原创】【考法总结】指针*与++结合的题目考法总结

代码均已调试出结果&#xff0c;放心食用&#xff0c;大致总共5种考法 【理论铺垫】①a[i]恒等价于(ai)即*(&a[0]i)&#xff1b;i类似偏移量&#xff08;别忘a代表数组首元素地址即&a[0]&#xff09; ②*(&a[i])恒等价于a[i]&#xff1a;&a[i]表示a[i]的地址&a…...

react dispatch不生效的坑

一、前言 最近写react antd项目&#xff0c;在A页面中使用了dispatch方法&#xff0c;然后B页面中嵌套A页面&#xff0c;没有问题&#xff1b; 但是在C页面中嵌套A页面的时候&#xff0c;就发现dispatch方法没有执行&#xff0c;也不报错&#xff0c;就很奇怪&#xff1b; 还…...

Mingw快捷安装教程 并完美解决出现的下载错误:The file has been downloaded incorrectly

安装c语言编译器的时候&#xff0c;老是出现The file has been downloaded incorrectly&#xff0c;真的让人 直接去官网拿压缩包&#xff1a;https://sourceforge.net/projects/mingw-w64/files/ &#xff08;往下拉找到那个x86_64-win32-seh的链接&#xff0c;点击后会自动…...

OpenGL —— 2.6、绘制一个正方体并贴图(附源码,glfw+glad)

源码效果 C源码 纹理图片 需下载stb_image.h这个解码图片的库&#xff0c;该库只有一个头文件。 具体代码&#xff1a; vertexShader.glsl #version 330 corelayout(location 0) in vec3 aPos; layout(location 1) in vec2 aUV;out vec2 outUV;uniform mat4 _viewMatrix; u…...

JavaWeb从入门到起飞笔记——导学课程

学完这一节&#xff0c;我不知道学Web开发究竟能干什么&#xff1f;你知道吗&#xff1f; 以下是黑马程序员Java从入门到起飞的笔记 一、学完Javaweb能干什么&#xff1f; 学完Java后我们可以独立开发一些后台管理系统&#xff0c;例如CRMER器&#xff0c;京东和淘宝&#x…...

【LeetCode:1402. 做菜顺序 | 动态规划 + 贪心】

&#x1f680; 算法题 &#x1f680; &#x1f332; 算法刷题专栏 | 面试必备算法 | 面试高频算法 &#x1f340; &#x1f332; 越难的东西,越要努力坚持&#xff0c;因为它具有很高的价值&#xff0c;算法就是这样✨ &#x1f332; 作者简介&#xff1a;硕风和炜&#xff0c;…...

基于FPGA的图像拉普拉斯变换实现,包括tb测试文件和MATLAB辅助验证

目录 1.算法运行效果图预览 2.算法运行软件版本 3.部分核心程序 4.算法理论概述 5.算法完整程序工程 1.算法运行效果图预览 2.算法运行软件版本 matlab2022a vivado2019.2 3.部分核心程序 timescale 1ns / 1ps // // Company: // Engineer: // // Create Date: 202…...

高校教务系统登录页面JS分析——巢湖学院

高校教务系统密码加密逻辑及JS逆向 本文将介绍高校教务系统的密码加密逻辑以及使用JavaScript进行逆向分析的过程。通过本文&#xff0c;你将了解到密码加密的基本概念、常用加密算法以及如何通过逆向分析来破解密码。 本文仅供交流学习&#xff0c;勿用于非法用途。 一、密码加…...

人工智能、机器学习、深度学习的区别

人工智能涵盖范围最广&#xff0c;它包含了机器学习&#xff1b;而机器学习是人工智能的重要研究内容&#xff0c;它又包含了深度学习。 人工智能&#xff08;AI&#xff09; 人工智能是一门以计算机科学为基础&#xff0c;融合了数学、神经学、心理学、控制学等多个科目的交…...

Element Plus el-select选择框失去焦点blur

正常情况下&#xff0c;可以使用 el-select 自带的方法 blur 事件来使select失去焦点 示例&#xff1a; <el-select v-model"value" ref"selectRef"><el-optionv-for"item in options":key"item.value":label"item.la…...

Java File与IO流学习笔记

内存中存放的都是临时数据&#xff0c;但是在断电或者程序终止时都会丢失 而硬盘则可以长久存储数据&#xff0c;即使断电&#xff0c;程序终止&#xff0c;也不会丢失 File File是java.io.包下的类&#xff0c;File类的对象&#xff0c;用于代表当前操作系统的文件(可以是文…...

LabVIEW中PID控制的的高级功能

LabVIEW中PID控制的的高级功能 比例-积分-微分&#xff08;PID&#xff09;控制占当今控制和自动化应用的90%以上&#xff0c;主要是因为它是一种有效且简单的解决方案。虽然PID算法最初用于线性、时不变系统&#xff0c;但现在已经发展到控制具有复杂动力学的系统。在现实世界…...

STM32基于HAL库RT-Thread Demo测试

STM32基于HAL库RT-Thread Demo测试 &#x1f388;源码地址&#xff1a;https://github.com/RT-Thread/rt-thread/tree/master&#x1f4cc;基于STM32CUBEMX中间件安装《基于 CubeMX 移植 RT-Thread Nano》&#x1f4cd;环境搭建《使用 Env 创建 RT-Thread 项目工程》&#x1f5…...

video-compare:如何用专业级视频对比工具提升编码质量评估效率

video-compare&#xff1a;如何用专业级视频对比工具提升编码质量评估效率 【免费下载链接】video-compare Split screen video comparison tool using FFmpeg and SDL2 项目地址: https://gitcode.com/gh_mirrors/vi/video-compare 在视频编码优化、算法验证和媒体质量…...

Ollama环境变量调优实战:从基础配置到生产级安全加固

1. Ollama环境变量基础配置指南 第一次接触Ollama环境变量时&#xff0c;我完全被各种参数搞晕了。后来才发现&#xff0c;这些变量就像汽车的仪表盘&#xff0c;调对了能让你的模型跑得又快又稳。我们先从最基础的配置说起。 临时设置环境变量是最简单的入门方式。在Linux/mac…...

2026年AI原生工程范式:大模型与智能体如何重塑软件开发全生命周期

在人工智能技术爆发的时代&#xff0c;AI工具、大模型及其在垂直行业的深度落地正以不可逆转的态势重塑全球软件开发的底层逻辑与工作模式。当我们站在2026年的历史节点回望&#xff0c;可以清晰地发现&#xff0c;软件工程的进化已经跨越了单纯依赖人类编写代码的传统阶段&…...

春联生成模型-中文-base代码解析:从调用看AI模型服务化架构

春联生成模型-中文-base代码解析&#xff1a;从调用看AI模型服务化架构 最近在帮一个朋友调试一个调用AI模型生成春联的小程序&#xff0c;看着他那段几十行的Python代码&#xff0c;我突然意识到&#xff0c;这其实是一个绝佳的窗口&#xff0c;能让我们一窥现代AI模型服务化…...

Win11Debloat终极指南:免费快速优化Windows 11系统的完整方案

Win11Debloat终极指南&#xff1a;免费快速优化Windows 11系统的完整方案 【免费下载链接】Win11Debloat A simple, lightweight PowerShell script that allows you to remove pre-installed apps, disable telemetry, as well as perform various other changes to declutter…...

像素时装锻造坊企业应用:游戏公司IP衍生品快速视觉化落地实操手册

像素时装锻造坊企业应用&#xff1a;游戏公司IP衍生品快速视觉化落地实操手册 1. 工具介绍与核心价值 像素时装锻造坊&#xff08;Pixel Fashion Atelier&#xff09;是一款专为游戏公司设计的AI图像生成工作站&#xff0c;基于Stable Diffusion与Anything-v5技术构建。不同于…...

如何用Zotero Better Notes构建你的个人学术知识库?完整工作流指南

如何用Zotero Better Notes构建你的个人学术知识库&#xff1f;完整工作流指南 【免费下载链接】zotero-better-notes Everything about note management. All in Zotero. 项目地址: https://gitcode.com/gh_mirrors/zo/zotero-better-notes 你是否经常在阅读文献时感到…...

相机照片详细参数怎么修改?4款工具,新手零失误

拍好的照片参数不对真的很糟心&#xff01;要么光圈显示错了&#xff0c;要么ISO、焦距乱标&#xff0c;相机型号还可能被搞错。想改却找不到简单的工具&#xff0c;要么软件太复杂&#xff0c;要么改完参数不生效&#xff0c;甚至把原图画质搞坏了。其实用对工具超简单&#x…...

终极Windows优化指南:3分钟用Win11Debloat释放系统性能

终极Windows优化指南&#xff1a;3分钟用Win11Debloat释放系统性能 【免费下载链接】Win11Debloat A simple, lightweight PowerShell script that allows you to remove pre-installed apps, disable telemetry, as well as perform various other changes to declutter and c…...

西门子1200伺服步进FB块程序西门子程序模板 程序内含两个FB,一个是scl写的,一个是梯形...

西门子1200伺服步进FB块程序西门子程序模板 程序内含两个FB&#xff0c;一个是scl写的&#xff0c;一个是梯形图&#xff0c;可以多轴多次调用&#xff0c;中文注释详细。 真实可用&#xff0c;经过在专用设备真实调试运行&#xff0c;可以直接应用到实际项目中&#xff0c;提供…...