Error handling 当函数没有返回成功值时,如何使用结果?

Error handling 当函数没有返回成功值时,如何使用结果?,error-handling,rust,Error Handling,Rust,要定义具有void return的函数,我的代码如下所示: trait Handler { fn on_message(&mut self, msg: String) -> Result<()> { println!("on_message: {}", msg); Ok(()) } } 这使我困惑。当我不关心函数的返回值时,应该如何定义函数?如果不需要错误处理,那么就不需要使用结果: fn on_message(&

要定义具有void return的函数,我的代码如下所示:

trait Handler {
    fn on_message(&mut self, msg: String) -> Result<()> {
        println!("on_message: {}", msg);
        Ok(())
    }
}

这使我困惑。当我不关心函数的返回值时,应该如何定义函数?

如果不需要错误处理,那么就不需要使用
结果:

fn on_message(&mut self, msg: String) { 
    // ... 
}
如果您需要处理错误,但没有一个有意义的“success”值,那么您可以说成功类型是
()
,但您仍然需要说错误类型是什么:

fn on_message(&mut self, msg: String) -> Result<(), MyError> {
    // ...
}
fn on_消息(&mut self,msg:String)->结果{
// ...
}

在我放置
MyError
的地方,可以使用内置错误,如
io::error
,自定义错误结构或枚举,或任何其他类型,如
String
。它甚至可以是
()
,使您的返回类型
Result
,这将让函数的用户知道它是否成功,而不提供任何关于成功结果或可能错误的信息。在这一点上,您可以考虑使用<代码>选项<代码>,或者甚至只是一个<代码> BOOL,它携带相同的信息量。

< P>如果您不需要错误处理,则不需要使用<代码>结果< /代码>:

fn on_message(&mut self, msg: String) { 
    // ... 
}
如果您需要处理错误,但没有一个有意义的“success”值,那么您可以说成功类型是
()
,但您仍然需要说错误类型是什么:

fn on_message(&mut self, msg: String) -> Result<(), MyError> {
    // ...
}
fn on_消息(&mut self,msg:String)->结果{
// ...
}

在我放置
MyError
的地方,可以使用内置错误,如
io::error
,自定义错误结构或枚举,或任何其他类型,如
String
。它甚至可以是
()
,使您的返回类型
Result
,这将让函数的用户知道它是否成功,而不提供任何关于成功结果或可能错误的信息。在这一点上,您可以考虑使用<代码>选项<代码>,或者甚至只是一个<代码> BOOL,它携带相同的信息量。

< P>错误消息试图告诉您<代码>结果< /C> >有两个类型参数,即<代码>结果< /代码>。以下是一个工作版本:

trait Handler {
    fn on_message(&mut self, msg: String) -> Result<(), ()> {
        println!("on_message: {}", msg);
        Ok(())
    }
}
trait处理程序{
fn on_消息(&mut self,msg:String)->结果{
println!(“在消息上:{}”,msg);
好(())
}
}

错误消息试图告诉您,
Result
采用两个类型参数,即
Result
。以下是一个工作版本:

trait Handler {
    fn on_message(&mut self, msg: String) -> Result<(), ()> {
        println!("on_message: {}", msg);
        Ok(())
    }
}
trait处理程序{
fn on_消息(&mut self,msg:String)->结果{
println!(“在消息上:{}”,msg);
好(())
}
}

您仍然应该添加一个错误作为第二个参数,因为您的函数可能仍然返回了一个错误。void只是
()
,所以您可以只在消息(&mut self,msg:String)->()
上添加一个错误,或者只在消息(&mut self,msg:String)上添加一个
但是函数应该已经返回了general@Stargateur显然,OP需要一些错误处理
Result
对此没有问题。您仍然应该添加一个错误作为第二个参数,因为您的函数可能仍然返回了一个错误。void只是
()
,所以您可以在消息(&mut self,msg:String)->()上添加一个错误,或者在消息(&mut self,msg:String)上添加一个
但是函数应该已经返回了general@Stargateur显然,OP需要一些错误处理<代码>结果可以。这个答案带来了什么,而已经建议使用
结果
的现有答案没有?这个答案带来了什么,而已经建议使用
结果
的现有答案没有?