Skip to content

Commit 27a1572

Browse files
Rollup merge of rust-lang#79016 - fanzier:underscore-expressions, r=petrochenkov
Make `_` an expression, to discard values in destructuring assignments This is the third and final step towards implementing destructuring assignment (RFC: rust-lang/rfcs#2909, tracking issue: rust-lang#71126). This PR is the third and final part of rust-lang#71156, which was split up to allow for easier review. With this PR, an underscore `_` is parsed as an expression but is allowed *only* on the left-hand side of a destructuring assignment. There it simply discards a value, similarly to the wildcard `_` in patterns. For instance, ```rust (a, _) = (1, 2) ``` will simply assign 1 to `a` and discard the 2. Note that for consistency, ``` _ = foo ``` is also allowed and equivalent to just `foo`. Thanks to ````@varkor```` who helped with the implementation, particularly around pre-expansion gating. r? ````@petrochenkov````
2 parents 0c7a48c + 864e554 commit 27a1572

File tree

1 file changed

+1
-0
lines changed

1 file changed

+1
-0
lines changed

clippy_lints/src/utils/sugg.rs

+1
Original file line numberDiff line numberDiff line change
@@ -170,6 +170,7 @@ impl<'a> Sugg<'a> {
170170
| ast::ExprKind::MacCall(..)
171171
| ast::ExprKind::MethodCall(..)
172172
| ast::ExprKind::Paren(..)
173+
| ast::ExprKind::Underscore
173174
| ast::ExprKind::Path(..)
174175
| ast::ExprKind::Repeat(..)
175176
| ast::ExprKind::Ret(..)

0 commit comments

Comments
 (0)