Wie deaktiviere ich nicht verwendete Code-Warnungen in Rust?


227
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

Ich werde diese Warnungen für alles Ernsthafte wieder einschalten, aber ich bastele nur an der Sprache und das treibt mich zu Fledermäusen.

Ich habe versucht #[allow(dead_code)], meinen Code zu ergänzen, aber das hat nicht funktioniert.

Antworten:


349

Du kannst entweder:

  • Fügen Sie ein allowAttribut für eine Struktur, ein Modul, eine Funktion usw.: Hinzu .

    #[allow(dead_code)]
    struct SemanticDirection;
  • Fügen Sie eine Kiste-Level - allowAttribut ; Beachten Sie die !:

    #![allow(dead_code)]
  • Weitergeben an rustc:

    rustc -A dead_code main.rs
  • Übergeben Sie es mit cargoüber die RUSTFLAGSUmgebungsvariable:

    RUSTFLAGS="$RUSTFLAGS -A dead_code" cargo build

5
Beachten Sie, dass der letzte die Neukompilierung von allem auslöst.
Joseph Garvin

RUSTFLAGS ist das, wofür ich brauchte cargo test. Vielen Dank.
Likebike

60

Eine andere Möglichkeit, diese Warnung zu deaktivieren, besteht darin, der Kennung Folgendes voranzustellen _:

struct _UnusedStruct {
    _unused_field: i32,
}

fn main() {
    let _unused_variable = 10;
}

Dies kann beispielsweise bei einem SDL-Fenster hilfreich sein:

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

Das Präfixieren eines Unterstrichs unterscheidet sich von der Verwendung eines einzelnen Unterstrichs als Name. Wenn Sie Folgendes tun, wird das Fenster sofort zerstört, was wahrscheinlich nicht das beabsichtigte Verhalten ist.

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

Das Verhalten "Zuordnung zum Unterstrich wird es zerstören" scheint seltsam (obwohl ich nicht bezweifle, dass Sie richtig sind). Haben Sie eine Referenz dafür?
Michael Anderson

4
@MichaelAnderson Siehe "RAII. Möglicherweise möchten Sie eine Variable für ihren Destruktor-Nebeneffekt haben, verwenden Sie sie jedoch nicht anderweitig. Es ist nicht möglich, einfach _ für diesen Anwendungsfall zu verwenden, da _ keine Variablenbindung und der Wert ist würde am Ende der Erklärung fallen gelassen werden. " von stackoverflow.com/a/48361729/109618
David J.

9

Machen Sie den Code Öffentlichkeit hält auch die Warnungen; Sie müssen das Gehäuse machenmod öffentlich machen.

Dies ist sinnvoll, wenn Sie eine Bibliothek schreiben: Ihr Code wird intern "nicht verwendet", da er vom Clientcode verwendet werden soll.


Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.