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

Reply via email to