rust-lang/rust-clippy

Ban Stacked `if`'s

Open

#12,483 建立於 2024年3月14日

在 GitHub 查看
 (10 留言) (32 反應) (1 負責人)Rust (1,391 fork)batch import
A-lintgood first issue

倉庫指標

Star
 (10,406 star)
PR 合併指標
 (平均合併 19天 22小時) (30 天內合併 113 個 PR)

描述

What it does

This lint should prohibit placing bool returning if statements as the expression inside another if statement. Currently, there appears to be no limit to the depth of stacked if's permitted by both rust fmt and clippy

Advantage

  • Stacked if's are hard to read

Drawbacks

  • Ternary-style expressions couldn't be used inside an if statement, but I personally think that's poor form

Example

if if if a == b {
    b == c
} else {
    a == c
} {
    a == d
} else {
    c == d
} {
    println!("True!");
} else {
    println!("False!");
}

Could be written as:

let expression_1 = if a == b {
    b == c
} else {
    a == c
};

let expression_2 = if expression_1 {
    a == d
} else {
    c == d
};

if expression_2  {
    println!("True!");
} else {
    println!("False!");
}

貢獻者指南