我目前正在从发生错误的位置上对错误进行管理。
我正在使用?
运算符来传播void函数的错误,但是会导致以下返回类型:
fn my_fn() -> Result<(), Error>
由于这是一个void函数,因此我需要明确声明我要为成功的情况返回unit
。
所以我不得不将返回值声明为Ok(())
,这不是必须的,但是看起来像是事实上的标准用法。
有没有更好的用法,而不是明确地说成功与否?
fn main() {
if let Err(my_error) = void_function() {
println!("Error occurred : {:?}", my_error)
}
}
fn do_something() -> Result<(), MyError> {
// ... logic;
// If error case
// Could throw different error and mapped to MyError also.
return Err(MyError::MyError1);
}
fn void_function() -> Result<(), MyError> {
// Do Something and thwrow error to upper level.
do_something()?;
Ok(()) // Do I really need to give this return value explicitly?
}
#[derive(Debug)]
enum MyError {
MyError1,
}