panic!
позволяет настроить пользовательский (хотя и глобальный) хук . Есть ли что-нибудь сопоставимое для досрочного возврата с оператором ?
? У меня есть функция, которая должна специальным образом закрыть некоторые ресурсы перед выходом. Я мог бы написать функцию ok_or_close()
, которая закрывает ресурсы перед возвратом ошибки:
fn opens_resources() -> Result<(), MyError> {
//Opens some stuff.
//Now a bunch of functions that might raise errors.
ok_or_close(foo(), local variables)?;
ok_or_close(bar(), local variables)?;
ok_or_close(baz(), local variables)?;
ok_or_close(Ok(()), local variables)
}
Но это кажется многословным. Что я действительно хотел бы сделать, так это:
fn opens_resources() -> Result<(), MyError> {
//Opens some stuff.
//Now a bunch of functions that might raise errors.
foo()?;
bar()?;
baz()?;
on_err:
//Closes some stuff. Would prefer not to make
// this a function, uses many local variables.
Ok(())
}
Есть ли способ сделать это или шаблон программирования, который обходит это?