本文简要介绍rust语言中 Trait std::cmp::Eq
的用法。
用法
pub trait Eq: PartialEq<Self> { }
相等比较的特征是 equivalence relations 。
这意味着,除了 a == b
和 a != b
是严格逆元之外,相等性必须是(对于所有 a
、 b
和 c
):
- 自反:
a == a
; - 对称:
a == b
意味着b == a
;和 - 及物:
a == b
和b == c
意味着a == c
。
编译器无法检查此属性,因此 Eq
意味着 PartialEq
,并且没有额外的方法。
可导出的
此特征可与 #[derive]
一起使用。当derive
d 时,因为Eq
没有额外的方法,它只是通知编译器这是等价关系而不是部分等价关系。请注意,derive
策略要求所有字段都是 Eq
,这并不总是需要的。
如何实现 Eq
?
如果您不能使用 derive
策略,请指定您的类型实现 Eq
,它没有方法:
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
}
}
impl Eq for Book {}
外来类型的实现
impl <'a> Eq for Utf8LossyChunk <'a>
相关用法
- Rust Entry.or_insert_with用法及代码示例
- Rust ExitStatus.code用法及代码示例
- Rust Error.source用法及代码示例
- Rust Error.last_os_error用法及代码示例
- Rust Entry.or_insert用法及代码示例
- Rust ExactSizeIterator.is_empty用法及代码示例
- Rust Extend.extend用法及代码示例
- Rust Entry.and_modify用法及代码示例
- Rust ExitStatusError.code用法及代码示例
- Rust ExactSizeIterator用法及代码示例
- Rust Error.chain用法及代码示例
- Rust Error.description用法及代码示例
- Rust ExitStatusError用法及代码示例
- Rust Error.kind用法及代码示例
- Rust ExitStatus.exit_ok用法及代码示例
- Rust Entry.or_insert_with_key用法及代码示例
- Rust Entry.key用法及代码示例
- Rust Entry.or_default用法及代码示例
- Rust ExitStatus.success用法及代码示例
- Rust Error.from_raw_os_error用法及代码示例
- Rust Entry.insert用法及代码示例
- Rust Extend用法及代码示例
- Rust Error.get_ref用法及代码示例
- Rust Error用法及代码示例
- Rust Error.into_inner用法及代码示例
注:本文由纯净天空筛选整理自rust-lang.org大神的英文原创作品 Trait std::cmp::Eq。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。