Я пишу функцию, которая зависит от сравнения логических значений, а также от проверки типа enum с использованием синтаксиса if if. Есть ли более чистый способ, чем у меня ниже?
fn is_mine(&self, row: i32, col: i32) -> bool {
if self.bounds.is_in_bounds(row, col) {
if let MineCell::Mine = self.field[row as usize][col as usize] {
return true;
}
}
false
}
Это работает, но кажется грязным, возвращая true / false как единственный оператор внутри блока if. В моем случае сначала должно выполняться булево сравнение в элементе .is_in_bounds()
, а затем проверка if let
на тип enum безопасна.
Это технически правильно, но я чувствую, что должен быть более идиоматический способ сделать это. Здесь и в других местах я видел сообщения о том, как правильно составлять if let
операторы, но ничего о смешанных логических и if let
сравнениях.
Должен ли я принять правильную, но безобразную форму приведенного выше кода?