blob: e269f1cfa7d04a2df6a0711659e07dc6503529a2 [file] [log] [blame] [view]
r[expr.placeholder]
# `_` expressions
r[expr.placeholder.syntax]
```grammar,expressions
UnderscoreExpression -> `_`
```
r[expr.placeholder.intro]
Underscore expressions, denoted with the symbol `_`, are used to signify a
placeholder in a destructuring assignment.
r[expr.placeholder.lhs-assignment-only]
They may only appear in the left-hand side of an assignment.
r[expr.placeholder.pattern]
Note that this is distinct from the [wildcard pattern](../patterns.md#wildcard-pattern).
Examples of `_` expressions:
```rust
let p = (1, 2);
let mut a = 0;
(_, a) = p;
struct Position {
x: u32,
y: u32,
}
Position { x: a, y: _ } = Position{ x: 2, y: 3 };
// unused result, assignment to `_` used to declare intent and remove a warning
_ = 2 + 2;
// triggers unused_must_use warning
// 2 + 2;
// equivalent technique using a wildcard pattern in a let-binding
let _ = 2 + 2;
```