Claudio, this and post (Field hash is deprecated) are still the first result when querying this problem, and unfortunately no example of a bespoke function is given (that can use >32 bits Nat).
I looked into Zhenya lib and this bespoke function seems to work:
public func hashNat(key: Nat): Nat32 {
var hash = Prim.intToNat64Wrap(key);
hash := hash >> 30 ^ hash *% 0xbf58476d1ce4e5b9;
hash := hash >> 27 ^ hash *% 0x94d049bb133111eb;
Prim.nat64ToNat32(hash >> 31 ^ hash & 0x3fffffff);
};
Do you see anything wrong in using it as a temporary solution, while we wait for Base library to provide a solution to this problem?