有没有一种方法可以显示警告,指出Result作为返回类型是多余的?

时间:2018-07-14 20:51:47

标签: rust

是否存在像#[warn(redundant_result_as_return_type)]这样的属性来显示警告,提示Result作为返回类型是多余的?

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

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

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

playground

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

我一直在决定如何从我的项目中使用的包装箱中正确实现函数的错误处理。在深入研究了函数实现之后,事实证明没有错误产生。

从那时起,我想在自己的代码中防止此类情况。理想情况下,在使用带有冗余Result的方法时,也可以从导入的板条箱内部获得此类警告,但是据我所知,如果不调整其代码,对已用板条箱进行这种检查是不可能的。

问题在某种程度上与Possible to declare functions that will warn on unused results in Rust?相反。

1 个答案:

答案 0 :(得分:2)

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


我挑战说这是一种普遍现象,甚至是实际上是一个问题。即使是这样,我相信这样的警告也会有很多缺点:

  • 我使用这种模式来构架我很确定一旦实现它们就会返回错误的函数。

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

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

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