У меня есть следующая функция, которая включает некоторую логику восстановления после ошибки и process::exit(0)
в конце:
fn gracefully_shutdown() {
// Do some logic for the recover
process::exit(7);
}
Я хочу вызвать эту функцию в случае ошибки, но match
жалуется на incompatible arms
.Но он не жалуется, когда я записываю его явно в руку соответствия, как показано ниже:
fn handle_result(my_result: Result<i32, MyError>) -> i32 {
match my_result {
Ok(val) => val,
//Err(_error) => { process::exit(0); } // Does not complain
Err(_error) => {
gracefully_shutdown();
} // Does complain
}
}
Действительно ли сложно для компилятора понять, что gracefully_shutdown()
содержит process::exit(0)
в себе?
Я ожидаю, что мог бы написать код таким образом:
fn handle_result(my_result: Result<i32, MyError>) -> i32 {
match my_result {
Ok(val) => val,
Err(_error) => {
gracefully_shutdown();
}
}
}
Есть идеи, как сделать эту работу?
Детская площадка