This is our own implementation of a "lossy From" trait, representing a conversion that can have precision loss. It is essentially adapted from https://github.com/rust-lang/rfcs/pull/2484.
If and when such a trait is standardized, we should switch to that. Alternatively, a case can be made it should move somewhere else, or we should adopt a similar trait (it has some similarity to AsPrimitive from num_traits).
fn round_from(x: T) -> Self
Blanket implementation, no conversion needed.