gpt4 book ai didi

Rust 从 fn : mismatched types 返回结果错误

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

我希望这个函数返回一个错误结果:

fn get_result() -> Result<String, std::io::Error> {
// Ok(String::from("foo")) <- works fine
Result::Err(String::from("foo"))
}

错误信息

error[E0308]: mismatched types
--> src/main.rs:3:17
|
3 | Result::Err(String::from("foo"))
| ^^^^^^^^^^^^^^^^^^^ expected struct `std::io::Error`, found struct `std::string::String`
|
= note: expected type `std::io::Error`
found type `std::string::String`

我很困惑如何在使用预期结构时打印出错误消息。

最佳答案

错误信息很清楚。 get_result 的返回类型是Result<String, std::io::Error> ,意味着在 Result::Ok案例,Ok 的内在值(value)变体的类型是 String ,而在 Result::Err案例,Err 的内在值(value)变体的类型是 std::io::Error .

您的代码试图创建一个 Err内部值类型为 String 的变体,并且编译器理所当然地提示类型不匹配。创建一个新的 std::io::Error , 您可以使用 new method on std::io::Error .以下是使用正确类型的代码示例:

fn get_result() -> Result<String, std::io::Error> {
Err(std::io::Error::new(std::io::ErrorKind::Other, "foo"))
}

关于Rust 从 fn : mismatched types 返回结果错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45583246/

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