I don't understand why I can't convert u16 into
usize when subtracting here:
fn main() {
let n_u16: u16 = 20;
let n_usize: usize = 20;
println!("{}", n_usize == n_u16.into()); // works
println!("{}", n_usize - n_u16.into()); // error[E0284]: type annotations needed
}
Rust playground link: Rust Playground
Honestly it'd be better if neither worked. Because any time this works, it's very fragile to addition of new impl
s. IIRC that subtraction used to work, but then the new Sub
impl for references was added, and it broke a bunch of code.
1 Like
The implementations for references have existed since 1.0.0, but a little experimentation shows they are what stumps inference.
1 Like