我想比较两个不同的哈希图,尽管它们包含的对象相同。我希望能够分辨出它们何时不同。我如何测试它们的底层对象身份是否不同?
fn main(){
let h1 = HashMap::<i64,i64>::new();
let h2 = HashMap::<i64,i64>::new();
assert!(h1 != h2); // this doesn't work, the maps have identical collections.
}
由于 Rust 只允许每个值有一个所有者,因此这种比较将始终是不平等的。
std::ptr::eq
:
assert!(!std::ptr::eq(&h1, &h2));
addr_eq
,或者Arc
和Rc
,有ptr_eq
。