Implementing `Comparable` for types with optional fields is too hard

I remember seeing this great idea a while ago. With Distillable, Equatable and Comparable implementations could be as simple as memcmp (†), plus you are automatically getting a compatible EQ/Hash/Less implementation adhering essential invariants:

a.hash != b.hash         ---->    a != b
!(a < b) && !(b < a)     <--->    a == b

The only thing I don't like about Distillable if its essence is always a dynamic data structure (say, implemented as an Array). Maybe it's possible implementing essence as an enum with two cases, one case for fixed sized structures (in which case the essence would be static / lock free value, implemented as a tuple or a new fixed array type) and another case for dynamic sized structures, in which case it could be backed by a normal array.

† - well, almost. There could be gaps between fields due to alignment, so it's a bit more complicated.