The manual also says that `as` somehow has a lower precedence than `*` and yet a higher precedence than `+`, which would be hilarious madness. Don't trust the manual.
On Fri, May 30, 2014 at 11:02 AM, Tommi <rusty.ga...@icloud.com> wrote: > 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 >
_______________________________________________ Rust-dev mailing list Rust-dev@mozilla.org https://mail.mozilla.org/listinfo/rust-dev