パターンマッチを持つ言語では、変数束縛とコンストラクタ/定数が構文上曖昧である場合がある。Rustでは以下の規則に従っている。 以下のように、構文的にパスであるとわかる場合は、常にコンストラクタ/定数とみなす。 :: を含んでいる場合。 (::A, self::A, <T as Trait>::X など) {} を後続する場合。 (A {} など) () を後続する場合。 (A() など) ../.../..= などの一部である場合。 (FOO_MIN .. FOO_MAX など) ! を後続する場合。 (your_macro_expanding_to_a_pattern!() など) 反駁不可文脈では常に変数束縛とみなす。反駁不可文脈かどうかは以下のように定義される。 match, if let, while let のパターンは反駁可能でもよい。 let, for, 関数の引数部のパタ