Support derive(Hash)
diff --git a/macro/src/expand.rs b/macro/src/expand.rs
index e065a55..c218267 100644
--- a/macro/src/expand.rs
+++ b/macro/src/expand.rs
@@ -230,6 +230,19 @@
});
}
}
+ Trait::Hash => {
+ let link_name = mangle::operator(&strct.name, "hash");
+ let local_name = format_ident!("__operator_hash_{}", strct.name.rust);
+ operators.extend(quote_spanned! {span=>
+ #[doc(hidden)]
+ #[export_name = #link_name]
+ extern "C" fn #local_name(this: &#ident) -> usize {
+ let mut hasher = ::std::collections::hash_map::DefaultHasher::new();
+ ::std::hash::Hash::hash(this, &mut hasher);
+ ::std::hash::Hasher::finish(&hasher) as usize
+ }
+ });
+ }
_ => {}
}
}