Error handling 当函数没有返回成功值时,如何使用结果?
要定义具有void return的函数,我的代码如下所示: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(&
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需要一些错误处理<代码>结果可以。这个答案带来了什么,而已经建议使用结果
的现有答案没有?这个答案带来了什么,而已经建议使用结果
的现有答案没有?