I think a different word here would be better. They're not lossy, because converting back again perfectly recovers the original, and thus nothing was "lost". u32 as u16
is lossy; BinaryHeap<T>: From<Vec<T>>
is lossy; u32 as i32
is lossless. (Indeed, u32 as i32
is a nop at runtime. They're the same type in LLVM, so rustc emits literally nothing for it in codegen.)
I'm no fan of as
myself, but it would help to have a better word for it. Ideally something that we can say 1_i16 -> f32
has, since it's still the same numeric conceptual value, even though it changes the bit pattern of the concrete value.