【发布时间】:2019-03-22 03:01:05
【问题描述】:
我有一个存储只读引用的结构,例如:
struct Pt { x : f32, y : f32, }
struct Tr<'a> { a : &'a Pt }
我想impl Eq 为Tr 测试底层a 是否引用完全相同的Pt:
let trBase1 = Pt::new(0.0, 0.0);
let trBase2 = Pt::new(0.0, 0.0);
assert!(trBase1 == trBase2); // ok.
let tr1 = Tr::new(&trBase1);
let tr2 = Tr::new(&trBase2);
let tr3 = Tr::new(&trBase1);
assert!(tr1 == tr3); // ok.
assert!(tr1.a == te2.a); // ok. Using Eq for Pt that compare values.
assert!(tr1 != tr2); // panicked! Not intended.
所以现在我有
impl<'a> PartialEq for Tr<'a> {
fn eq(&self, v : &Tr<'a>) -> bool {
// self.a == v.a // doesn't work.
}
}
我应该写什么?
【问题讨论】: