implicit_saturating_sub
どんな Lint か
飽和演算(ここでは飽和減算)にあたる処理を、 saturating_sub を使わず条件分岐で書いている場合に検出する 意味
ビルトイン関数を使った方が可読性が高い
既知の問題
記載なし
関連
もちろん加算版もある
implicit_saturating_add
ドキュメントに挙がっている例:
code:rs
// こういう処理があるとき
let mut i: u32 = end - start;
if i != 0 {
i -= 1;
}
// こう変換できる
let mut i: u32 = end - start;
i = i.saturating_sub(1);
自分が引っかかった例:
code:rust
// depth, base_depth は usize
// これを
let relative_depth = if depth > base_depth {
depth - base_depth
} else {
0
};
// こう書ける
let relative_depth = depth.saturating_sub(base_depth);