- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有以下定义:
enum Either<T, U> {
Left(T),
Right(U),
}
#[derive(PartialEq)]
的这种类型?我想使用
match
表达式,例如:
impl<T: PartialEq, U: PartialEq> PartialEq for Either<T, U> {
fn eq(&self, other: &Either<T, U>) -> bool {
use Either::*;
match (*self, *other) {
(Left(ref a), Left(ref b)) => a == b,
(Right(ref a), Right(ref b)) => a == b,
_ => false,
}
}
}
*self
表达式,这也会消耗
*other
和
match
,从而导致错误:
error[E0507]: cannot move out of borrowed content
--> src/lib.rs:9:16
|
9 | match (*self, *other) {
| ^^^^^ cannot move out of borrowed content
error[E0507]: cannot move out of borrowed content
--> src/lib.rs:9:23
|
9 | match (*self, *other) {
| ^^^^^^ cannot move out of borrowed content
最佳答案
通常,您只需要使用#[derive(PartialEq)]
,就像这样:
#[derive(PartialEq)]
enum Either<T, U> {
Left(T),
Right(U),
}
impl<T: PartialEq, U: PartialEq> PartialEq for Either<T, U> {
fn eq(&self, other: &Self) -> bool {
use Either::*;
match (self, other) {
(&Left(ref a), &Left(ref b)) => a == b,
(&Right(ref a), &Right(ref b)) => a == b,
_ => false,
}
}
}
match *foo
时,您不必放弃所有权。
impl<T: PartialEq, U: PartialEq> PartialEq for Either<T, U> {
fn eq(&self, other: &Self) -> bool {
use Either::*;
match (self, other) {
(Left(a), Left(b)) => a == b,
(Right(a), Right(b)) => a == b,
_ => false,
}
}
}
关于rust - 如何为枚举实现PartialEq?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61895181/
关于 rust 数组的问题(恒定大小的数组,[T, ..Size])。我正在尝试进行以下工作: #[deriving(PartialEq)] struct Test { dats : [f32,
我有一个 Rust 程序,它包含许多不同的结构,这些结构都实现了一个名为 ApplyAction 的特性。另一个结构 ActionList 包含一个实现 ApplyAction 的装箱对象向量。我想创
我有以下定义: enum Either { Left(T), Right(U), } 对于这种类型,我如何获得等价于 #[derive(PartialEq)] 的东西?我想使用 mat
我正在尝试编写一个派生 PartialEq 的枚举,其中包含一个手动执行此操作的特征对象。我使用了解决方案 here为了强制 Trait 的实现者编写相等方法。这无法编译: trait Trait {
是否有一种简单的方法来注释结构中的字段,以便在派生 PartialEq 特征时忽略它们?例如: #[derive(PartialEq,Eq)] pub struct UndirectedGraph {
我正在尝试在我创建的结构和我的结构实现了 From 特性的其他类型之间实现 PartialEq。实际代码更复杂,并且为其他类型实现了 From,但这是核心问题的精简版。 我希望能够做到: let s
我要存储 MyStruct在 BinaryHeap使用我自己的订购标准。我必须实现 Ord和 PartialEq ,但是堆会使用 PartialEq仅用于订购或它也将使用它来决定MyStruct实例
我正在尝试创建一个函数,它将两个迭代器作为参数并通过引用迭代项目。每个 Iterator 项都应该实现 PartialEq。 我的第一次尝试是: fn compute(first: T, second
我有以下定义: pub struct List { memory: Vec, } 我会得到相当于 #[derive(PartialEq)] 的值对于这种类型,如 How can I impl
我正在尝试编写一些基本的泛型: pub struct MyGeneric { vec: Vec } impl MyGeneric { fn add(&mut self, item: T
在我的程序中,我用以下结构表示“事件”: struct Event { value: &'static str, timestamp: usize, } 到目前为止,我使用 Parti
假设我有两个 Ref T 所在的对象工具 PartialEq , 我该如何比较它们? 以下代码无法编译: use std::cell::RefCell; fn main() { let a =
我想定义一个枚举,其中两个不同的值相等,但是我想这样做而不必显式写出 Test::B == Test::B, Test::C = 的所有匹配情况= 测试::C. pub enum Test {
我想在模式匹配时使用常量 net::Ipv4Addr::LOCALHOST 过滤掉 IPv4 本地主机地址: use get_if_addrs; // 0.5.3 use std::net; fn m
我正在阅读 the Rust book并尝试了解 PartialEq 的用例和 Eq特质。 我意识到 PartialEq用于不一定自反的关系(即可以有这样的 x 那个 x != x )和那个 Eq是一
这个问题在这里已经有了答案: Why is this match pattern unreachable when using non-literal patterns? (1 个回答) 关闭 5
我想在一个泛型类中使用 int,它需要它的泛型类型来实现 core::cmp::PartialEq 特性。我知道 int 正在实现它,因为我可以做 4 != 5。问题是编译器无法识别并引发以下错误:
我有一个包含未知键的 JSON 对象的文件。我想将这个对象解码成一个结构,但不明白如何声明这个结构。 extern crate rustc_serialize; use rustc_serialize
看起来不对称和基本,所以我想了解这个的推理,为什么PartialOrd定义 partial_cmp , 返回 Option ; fn partial_cmp(&self, other: &Rhs) -
我是一名优秀的程序员,十分优秀!