gpt4 book ai didi

error-handling - 当函数没有返回成功值时如何使用 Result?

转载 作者:行者123 更新时间:2023-11-29 08:11:18 24 4
gpt4 key购买 nike

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

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

编译器告诉我这是错误的,因为 Result 应该总是有 2 个参数:

error[E0243]: wrong number of type arguments: expected 2, found 1
--> src/lib.rs:2:46
|
2 | fn on_message(&mut self, msg: String) -> Result<()> {
| ^^^^^^^^^^ expected 2 type arguments

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

最佳答案

如果您不需要错误处理,则无需使用 Result :

fn on_message(&mut self, msg: String) { 
// ...
}

如果你需要处理错误,但没有有意义的“成功”值,那么你可以说成功类型是() , 但您仍然需要说出错误类型是什么:

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

我放在哪里MyError , 你可以使用像 io::Error 这样的内置错误、自定义错误结构或枚举,或任何其他类型,例如 String .它甚至可以是 () ,使您的返回类型为 Result<(), ()> ,这将让您的函数的用户知道它是否成功,而无需提供有关成功结果或可能错误的任何信息。那时,您可能会考虑使用 Option<()>甚至只是一个 bool , 它们携带相同数量的信息。

关于error-handling - 当函数没有返回成功值时如何使用 Result?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51914124/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com