Prompted by people always running into problems with the old bugbear of numerical analysis, that is floats truncation, viz equality, I would like to propose a novel representation of floating rationals. This will much exceed the accuracy of the current IEEE 754 floats standard, as well as entirely avoid many of the floats truncation induced inequality errors.
Essentially, it is "the best of both worlds" of combined rationals and floats, for a modest cost in extra memory and cpu cycles.
A rational typically consists of i64 and u64 (only one sign needed). To turn it into a floating rational, we only need to add, say two bytes exponent (16 bits, again saving one exponent, while exceeding the 11 bits exponent of IEEE754). The calculations will take roughly twice as long as a fast dedicated floating processor, though hardware support may also be possible in medium to long term. On the plus side, some operations like taking the reciprocals come totally free and division is entirely eliminated (replaced by rationals multiplication). Also, all powers of two factors from both numerator and denominator can be subsumed in the exponent, thus making more room in the rational's fields that will now hold odd numbers only.
The biggest win, in keeping with the Rust philosophy of safety, is that all calculations and comparisons are integer based and the classical truncating floats become entirely unnecessary.
Rationals also open up nice possibilities of using repeating continued fractions to represent square roots exactly.