stable-hash 0.4.3

A stable, structured hash with backward compatibility
Documentation
// TODO: Implement stable_hash for f32 and f64.
// For backward compatible migrations for arbitrary float precision to be satisfied,
// it needs to be implemented using the following structs, which are similar to Integer<T>
// TODO: +-0.0 compare the same, so have is_negative be false in that case.

/*
enum Float<T> {
    // Must be discriminant 0 for this to be the default
    Number(Finite<T>),
    PosInfinity,
    NegInfinity,
    Nan,
}

// https://floating-point-gui.de/formats/fp/
// https://evanw.github.io/float-toy/
struct Finite<T> {
    is_negative: bool,
    exponent: i16, // This could be generic, but this fits all values required for f32 and f64
    mantissa: T,   // Must be Borrow<[u8]>, should trim_zeroes when writing.
}
*/

// TODO: Test which exhaustively verifies all f32 bit patterns hash to the same values as (f32 as f64)