I find the behavior of
NaN being silently turned into
0 on float-to-int conversion very surprising. It feels like a major footgun. I suggest making this method failible, just like
try_into(), and returning error on NaN and possibly
Looking through the original issue, it seems this has been already proposed and discussed in detail. It seems that the CPUs allow efficient detection of
NaN conversions to integer, too. It was not an option for
as keyword since that must be infallible, but sounds like a great option for this API.
Bikeshedding ahead: It is also surprising to have
modulo_to produce a negative value - anything called "modulo" should return only non-negative numbers in my mind. It is also inconsistent with
try_into(). I suggest calling it
truncate_into(). Also, use of the word "round" in float-to-float conversions is surprising as it's already reserved for turning a float into an integer - see e.g. the built-in
Other than that, looks very good to me! I would be glad to see this in the language.