Skip to content

Multi-lined pattern of if let #3648

Open
@topecongiro

Description

@topecongiro

From rust-lang/rust-clippy#4123 (comment):

     F: FnMut(&ast::Block, Option<&ast::Label>),
 {
     if let ast::ExprKind::While(_, loop_block, label)
-        | ast::ExprKind::ForLoop(_, _, loop_block, label)
-        | ast::ExprKind::Loop(loop_block, label)
-        = &expr.node
+    | ast::ExprKind::ForLoop(_, _, loop_block, label)
+    | ast::ExprKind::Loop(loop_block, label) = &expr.node
     {
         func(loop_block, label.as_ref());
     }

In this case,

  1. Should we add indentation to each clause that appears after the first one?
  2. Should we keep the expression (&expr.node) on the same line as the last clause, or put it on the next line?

Note that for multi-lined patterns of match's arm, rustfmt does not add indentation.

match some_value {
    ast::ExprKind::While(_, loop_block, label)
    | ast::ExprKind::ForLoop(_, _, loop_block, label)
    | ast::ExprKind::Loop(loop_block, label) = &expr.node
    => {
        // ...
    }

Metadata

Metadata

Assignees

No one assigned

    Labels

    a-matchesmatch arms, patterns, blocks, etcp-low

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions