首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何抑制来自宏的Clippy警告?

如何抑制来自宏的Clippy警告?
EN

Stack Overflow用户
提问于 2020-09-09 01:34:45
回答 1查看 1.1K关注 0票数 9

我有这样一个带有return语句的宏:

代码语言:javascript
复制
macro_rules! return_fail {
    ( $res:expr ) => {
        match $res {
            Ok(val) => val,
            Err(e) => {
                eprintln!(
                    "An error: on {}:{} {}; aborting current function.",
                    file!(),
                    line!(),
                    e
                );
                return;
            }
        }
    };
}

fn bad(flag: bool) -> Result<(), String> {
    if flag {
        Ok(())
    } else {
        Err("u r idiot".to_string())
    }
}

fn main() {
    return_fail!(bad(true));
    return_fail!(bad(false));
}

Rust playground

当我在函数中间使用它时,这个宏工作得很好,但当我在函数末尾使用它时,我会收到来自Clippy的警告:

代码语言:javascript
复制
warning: unneeded `return` statement
  --> src/main.rs:12:17
   |
12 |                 return;
   |                 ^^^^^^^ help: remove `return`
...
28 |     return_fail!(bad(false));
   |     ------------------------- in this macro invocation
   |
   = note: `#[warn(clippy::needless_return)]` on by default
   = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return
   = note: this warning originates in a macro (in Nightly builds, run with -Z macro-backtrace for more info)

如何抑制此警告?我尝试将#[allow(clippy::needless_return)]添加到宏定义的最上面一行,但它不起作用。

EN

回答 1

Stack Overflow用户

发布于 2020-10-24 15:47:05

如果展开宏,则不需要最后一条return语句。

票数 -3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63798948

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档