首页 > 解决方案 > 有没有办法显示 Result 作为返回类型是多余的?

问题描述

是否有一个属性喜欢显示作为返回类型多余#[warn(redundant_result_as_return_type)]的警告?Result

#[derive(Debug)]
struct SomeError();

fn process_some() -> Result<(), SomeError> {
    Ok(())
}

fn main() {
    process_some().unwrap();
}

操场

尽管Result根本不需要作为返回类型,但此代码不会产生任何警告。

我一直在决定如何从我的项目中使用的 crate 中正确实现函数的错误处理。深入研究函数实现后,发现没有产生错误。

从那时起,我想在我自己的代码中防止这种情况。理想情况下,在使用带有冗余 s 的方法时,从导入的 crates 内部获得此类警告也会很棒Result,但据我了解,如果不调整代码,就不可能对使用过的 crates 进行此类检查。

这个问题在某种程度上与可能在 Rust 中声明对未使用结果发出警告的函数相反?.

标签: rust

解决方案


不,在编译器或Clippy中都没有这样的警告。当然,您可以向 Clippy 提交问题,建议他们添加它。


我质疑这是一个常见的事件,甚至是一个实际上是一个问题。即使是这样,我相信这样的警告也会有很多缺点:

  • 我使用这种模式来搭建功能,我很确定一旦实现它们就会返回错误。

  • 作为 trait 一部分的方法不能更改返回类型。

  • 您可能将函数作为函数指针或闭包参数传​​递,并且无法更改返回类型。

  • 更改返回类型会破坏 API 的向后兼容性,因此您必须等到主要版本出现问题。


推荐阅读