我想實現一種東西它可以唯一標識,此外,它不包含其他字段。它的類似於Ruby中的BasicObject
,或者java中的Object
。如何在生鏽的單元結構中執行`Hash`?
我已添加PartialEq
特質。
struct Thing;
impl PartialEq for Thing {
fn eq(&self, other: &Thing) -> bool {
unsafe {
self as *const Thing == other as *const Thing
}
}
}
現在,我想允許它進行散列,而問題是,我怎麼能實現Hash特質對不具有的Fileds單位結構?或者,我應該添加某種object_id
嗎?
你打算如何在這裏使用'Thing'?除非你總是希望每次都返回相同的散列,否則你確實需要一些數據。 – Dogbert 2014-10-11 08:20:27
@Dogbert我只是想創建一些可以唯一標識自己的東西。如果你創建了一個'Thing'的實例'a',然後是'b',然後''c'等等,那麼'a'不應該等於除了它本身之外的其他任何'Thing'實例。如果這可以實施,我認爲它應該使用其身份散列。 – 2014-10-11 08:47:07
依靠Rust中的對象標識(即它的內存位置)非常奇怪,因爲在堆棧上移動它可以改變位置。一個對象ID字段,例如隨機初始化或通過全局[原子計數器]初始化(http://doc.rust-lang.org/nightly/std/sync/atomic/struct.AtomicUint.html#method.fetch_add)會更好。 – huon 2014-10-11 13:07:18