523 Stimmen

Wie deaktivieren Sie Dead-Code-Warnungen auf Crate-Ebene in Rust?

Beim Basteln in Rust bin ich wiederholt auf viele Dead-Code-Warnungen gestoßen, die es schwer machten, sich zu konzentrieren. Ich habe versucht, das äußere Attribut #[allow(dead_code)] zu verwenden, aber es unterdrückt immer nur eine Warnung auf einmal.

struct SemanticDirection;

fn main() {}

Warnung: Struct `SemanticDirection` wird nie erstellt
 --> src\main.rs:1:8
  |
1 | struct SemanticDirection;
  |        ^^^^^^^^^^^^^^^^^
  |
  = Hinweis: `#[warn(dead_code)]` standardmäßig aktiviert

Wie deaktiviere ich diese Warnungen auf Crate-Ebene?

823voto

Arjan Punkte 17211

Sie können entweder:

  • Fügen Sie ein allow-Attribut zu einer Struktur, Modul, Funktion usw. hinzu:

    #[allow(dead_code)]
    struct SemanticDirection;
  • Fügen Sie ein allow als crate-level Attribut hinzu; beachten Sie das !:

    #![allow(dead_code)]
  • Geben Sie es an rustc weiter:

    rustc -A dead_code main.rs
  • Geben Sie es über cargo durch die Verwendung der Umgebungsvariable RUSTFLAGS weiter:

    RUSTFLAGS="$RUSTFLAGS -A dead_code" cargo build

114voto

antoyo Punkte 9793

Ein weiterer Weg, diese Warnung zu deaktivieren, besteht darin, den Bezeichner mit einem _ voranzustellen:

struct _UnusedStruct {
    _unused_field: i32,
}

fn main() {
    let _unused_variable = 10;
}

Dies kann beispielsweise nützlich sein, wenn ein SDL-Fenster verwendet wird:

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

Das Voranstellen eines Unterstrichs unterscheidet sich davon, nur einen Unterstrich als Namen zu verwenden. 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);

77voto

M. Hamza Rajput Punkte 5219

Legen Sie diese beiden Zeilen oben in die Datei:

#![allow(dead_code)]
#![allow(unused_variables)]

37voto

Victor Basso Punkte 5098

Wenn Sie den Code auch öffentlich machen, hören auch die Warnungen auf; Sie müssen auch das umschließende mod öffentlich machen.

Dies macht Sinn, wenn Sie eine Bibliothek schreiben: Ihr Code wird intern als "ungenutzt" betrachtet, da er für die Verwendung durch Client-Code vorgesehen ist.

12voto

Muhammed Moussa Punkte 3282

Auch als Zusatz: Rust bietet fünf Ebenen von Lints (allow, warn, force-warn, deny, forbid).

https://doc.rust-lang.org/rustc/lints/levels.html#lint-levels

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X