How to quiet a warning for a single statement in Rust?

后端 未结 2 505
甜味超标
甜味超标 2020-12-11 14:30

Say there is a single warning such as path_statements, unused_variables. Is there a way to ignore a single instant of this, without isolating them

相关标签:
2条回答
  • 2020-12-11 15:03

    To silence warnings you have to add the allow(warning_type) attribute to the affected expression or any of its parents. If you only want to silence the warning on one specific expression, you can add the attribute to that expression/statement:

    fn main() {
        #[allow(unused_variables)]
        let not_used = 27;
    
        #[allow(path_statements)]
        std::io::stdin;
    
        println!("hi!");
    }
    

    However, the feature of adding attributes to statements/expressions (as opposed to items, like functions) is still a bit broken. In particular, in the above code, the std::io::stdin line still triggers a warning. You can read the ongoing discussion about this feature here.


    Often it is not necessary to use an attribute though. Many warnings (like unused_variables and unused_must_use) can be silenced by using let _ = as the left side of your statement. In general, any variable that starts with an underscore won't trigger unused-warnings.

    0 讨论(0)
  • 2020-12-11 15:22

    If you want to silence all warnings of a kind in a module, write e.g. #![allow(dead_code)] (note the exclamation mark) at the top of the module. This will disable all warnings of this kind in the whole module. You can also call rustc with e.g. -A dead_code.

    You can disable all warnings by writing #![allow(warnings)] at the top of the module.

    You can insert a module (as described in the Rust book) where the specific warnings are ignored.

    As Lukas said, you can also write e.g. #[allow(dead_code)] on a statement or an expression.

    0 讨论(0)
提交回复
热议问题