rust - 如果实现了 partialeq,则比较结构
问题描述
如果类型参数T
实现,我如何比较泛型结构PartialEq
?我尝试了以下方法,但无法编译。我知道我可以只做Foobar<T>
派生Eq
等等,但是是否有可能Foobar
“继承”或以PartialEq
某种方式获取T
?我猜这样的东西已经为 了Vec
,例如你可以比较Vec
s 当且仅当T
implements PartialEq
。
struct Foobar<T> {
foobar: T
}
fn x() -> bool {
let a = Foobar{foobar: 1};
let b = Foobar{foobar: 2};
a == b
}
解决方案
关于Vec<_>
滚动其文档以查看是否有用,有一个trait 实现Eq
可以随心所欲地传播。
impl<T, A> Eq for Vec<T, A> where
T: Eq,
A: Allocator,
所以你需要做同样的事情:
struct Foobar<T> {
foobar: T
}
impl<T> PartialEq for Foobar<T> where T: PartialEq {
fn eq(&self, other: &Self) -> bool {
self.foobar == other.foobar
}
}
impl<T> Eq for Foobar<T> where T: Eq {}
fn x() -> bool {
let a = Foobar{foobar: 1};
let b = Foobar{foobar: 2};
a == b
}
fn main() {
println!("{}", x()); // false
}
推荐阅读
- java - 在 EditText 中禁用@char
- go - 错误的输出golang,我的go代码有什么问题?
- r - R box-cox 变换到对数变换
- ruby-on-rails - 如何在 Mac 上运行没有 nokogiri“无法加载此类文件 - nokogiri/nokogiri (LoadError)”错误的“rails 控制台”?
- javascript - 根据特定值对我的对象中的数组进行分组 - Javascript
- python - SharePoint HTTP 请求在浏览器中有效,但在“文件不存在”脚本中
- javascript - Paypal 信用卡购物车付款在 JavaScript 项目中不起作用
- android - 未解决的参考:animateColorAsState
- javascript - 大数据的 ng-repeat 崩溃
- sql - 来自 json_value 的科学记数法数字与另一个数字不匹配