web-dev-qa-db-ja.com

Rustで未使用のコード警告を無効にする方法は?

struct SemanticDirection;

fn main() {}
warning: struct is never used: `SemanticDirection`
 --> src/main.rs:1:1
  |
1 | struct SemanticDirection;
  | ^^^^^^^^^^^^^^^^^^^^^^^^^
  |
  = note: #[warn(dead_code)] on by default

深刻な事態が発生した場合はこれらの警告をオンに戻しますが、私は言語をいじくり回しているだけであり、これが私を怒らせています。

#[allow(dead_code)]をコードに追加しようとしましたが、うまくいきませんでした。

150
Andrew Wagner

あなたはできる

  1. 構造体、モジュール、関数などにallow属性を追加します。

    #[allow(dead_code)]
    struct SemanticDirection;
    
  2. crate-level allow attribute ;を追加します!に注目してください。

    #![allow(dead_code)]
    
  3. それをrustcに渡します:

    rustc -A dead_code main.rs
    
  4. cargo環境変数経由でRUSTFLAGSを使用して渡します。

    RUSTFLAGS="$RUSTFLAGS -A dead_code" cargo build
    
227
Arjan

この警告を無効にする別の方法は、識別子の前に_を付けることです。

struct _UnusedStruct {
    _unused_field: i32,
}

fn main() {
    let _unused_variable = 10;
}

これは、たとえばSDLウィンドウで便利です。

let _window = video_subsystem.window("Rust SDL2 demo", 800, 600);

アンダースコアを前に付けることは、名前として単独のアンダースコアを使用することとは異なります。次の操作を行うと、すぐにウィンドウが破壊されますが、これは意図した動作ではありません。

let _ = video_subsystem.window("Rust SDL2 demo", 800, 600);
47
antoyo

コードを作成するpublicも警告を停止します。囲んでいるmodも公開する必要があります。

これは、ライブラリを作成している場合に意味があります。クライアントコードで使用することを目的としているため、コードは内部で「使用されません」。

4
Vituel