Similar to the reasoning in Add non-`unsafe` `get_mut` for `UnsafeCell`, I'd suggest that the absence of the infallible conversion implies that there isn't a correct one. The error message could reasonably point us to use try_into
.
I'm also sympathetic to the viewpoint that this particular conversion should be spelled something like
let n : u64 = 'a'.encode_utf32().into();
but I don't know if that's workable into a consistent API without deprecating some From
impls.