Operator Precedence
The table below defines operator precedence from tightest-binding (top) to loosest-binding (bottom).
| Operator | Associativity | Grammar |
|---|---|---|
| Binds tighter | ||
. -> | left | |
has, is, matches | left | has_expr is_expr matches_expr |
* / % | left | arith_expr |
+ - | left | arith_expr |
<< >> | left | bit_expr |
& | left | bit_expr |
^ | left | bit_expr |
| | left | bit_expr |
!== == != <= < >= > | requires parentheses | equality_expr ineq_expr |
&& | left | and_expr |
|| | left | or_expr |
==> | right | implies_expr |
<== | left | explies_expr |
<==> | requires parentheses | iff_expr |
.. | left | |
= | right | |
closures; forall, exists; choose | right | forall_expr exists_expr choose_expr |
&&& | left | prefix_and_expr |
||| | left | prefix_or_expr |
| Binds looser |
All operators that are from ordinary Rust have the same precedence-ordering as in ordinary Rust. See also the Rust operator precedence.