Result { Ok(()) } 结果: -6ren">
gpt4 book ai didi

rust - 为什么我正在处理它却得到 "unused Result which must be used ... Result may be an Err variant, which should be handled"?

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

fn main() {
foo().map_err(|err| println!("{:?}", err));
}

fn foo() -> Result<(), std::io::Error> {
Ok(())
}

结果:

warning: unused `std::result::Result` that must be used
--> src/main.rs:2:5
|
2 | foo().map_err(|err| println!("{:?}", err));
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
= note: #[warn(unused_must_use)] on by default
= note: this `Result` may be an `Err` variant, which should be handled

Finished dev [unoptimized + debuginfo] target(s) in 0.58s
Running `target/debug/playground`

playground link

最佳答案

您不是在处理结果,而是将结果从一种类型映射到另一种类型。

foo().map_err(|err| println!("{:?}", err));

该行的作用是调用 foo() ,返回 Result<(), std::io::Error> .那么map_err使用闭包返回的类型(在本例中为 () ),并修改错误类型并返回 Result<(), ()> .这是您没有处理的结果。由于您似乎只想忽略此结果,最简单的做法可能是调用 ok() .

foo().map_err(|err| println!("{:?}", err)).ok();

ok()转换 Result<T,E>Option<T> , 将错误转换为 None ,您不会因忽略而收到警告。

或者:

match foo() {
Err(e) => println!("{:?}", e),
_ => ()
}

关于rust - 为什么我正在处理它却得到 "unused Result which must be used ... Result may be an Err variant, which should be handled"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53368303/

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