The manual says that the precedence of `as` operator is lower than that of the 
binary `*` operator. Thus I would not expect the following to compile (but it 
does):

let a: u16 = 1;
let b: u32 = 2;

let r = a * b as u16;


Since multiplication is supposed to have precedence over casting, I would 
expect the last line to be equivalent to:

let r = (a * b) as u16;

...which doesn't compile because `a` and `b` have different types.


Here the compiler clearly first converts `b` to u16 and then multiplies `a` 
with the result of that conversion:

let r = a * b as u16;

...but that should happen only if the `as` operator has a higher precedence 
than the binary `*` operator.

_______________________________________________
Rust-dev mailing list
Rust-dev@mozilla.org
https://mail.mozilla.org/listinfo/rust-dev

Reply via email to