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?

9voto

zangw Punkte 36978
  • Direkter Weg ist, folgendes einfach im head der Datei zu platzieren

    #![allow(dead_code, unused_variables)]

    • Das dead_code Lint erkennt unbenutzte, nicht exportierte Elemente.
    • Das unused_variables Lint erkennt Variablen, die auf keine Weise verwendet werden.
  • Eine einfachere Möglichkeit ist es, folgendes im head der Datei zu platzieren

    #![allow(unused)]

Ref: Rust Lint Liste

6voto

AlexaP Punkte 141

Sie können das #[allow(dead_code)] Attribut zur Strukturdefinition hinzufügen, wie folgt:

#[allow(dead_code)]
struct SemanticDirection;

Oder Sie können die Warnung für die gesamte Datei deaktivieren, indem Sie das Attribut oben in der Datei hinzufügen, wie folgt:

#![allow(dead_code)]

struct SemanticDirection;

Aber diese Attribute funktionieren nur, wenn Sie den dead_code-Linter aktiviert haben. Standardmäßig ist der dead_code-Linter in Rust aktiviert, aber Sie können ihn deaktivieren, indem Sie Folgendes oben in Ihren Code einfügen:

#![deny(dead_code)]

Dadurch wird der dead_code-Linter für die gesamte Datei deaktiviert.

Es ist im Allgemeinen eine gute Idee, den dead_code-Linter aktiviert zu lassen, da er Ihnen helfen kann, Fehler in Ihrem Code zu erkennen und sicherzustellen, dass Sie keinen unnötigen Code in Ihr Projekt einfügen. Es kann jedoch lästig sein, wenn Sie nur experimentieren und verschiedene Dinge ausprobieren, daher ist es verständlich, wenn Sie es in diesen Fällen deaktivieren möchten.

5voto

PPP Punkte 1389

Für ungenutzte Funktionen sollten Sie die Funktion öffentlich machen, aber Vorsicht. Wenn die Struktur nicht öffentlich ist, erhalten Sie immer noch den Fehler wie hier:

//this should be public also
struct A{
   A{}
}

impl A {
    pub fn new() -> A {

    }
}

Oder wenn Sie es nicht öffentlich haben möchten, sollten Sie #[allow(unused)] hinzufügen

5voto

Aleksander Krauze Punkte 5017

Seit Rust 1.74.0 können Sie auch Lints auf Crate-Ebene mit dem neuen Abschnitt [lints] im Cargo-Manifest konfigurieren. Eine ausführliche Erklärung finden Sie im Cargo-Referenz, aber hier ist ein einfaches Beispiel.

Die folgenden Attribute im Wurzelverzeichnis der Crate:

#![allow(unused)]
#![forbid(unsafe_code)]
#![deny(clippy::enum_glob_use)]

können in der Cargo.toml wie folgt ausgedrückt werden:

[lints.rust]
unused = "allow"
unsafe_code = "forbid"

[lints.clippy]
enum_glob_use = "deny"

3voto

crimsondamask Punkte 41

Sie können jederzeit ungenutzte Variablen/Funktionen deaktivieren, indem Sie ein (_) dem Variablennamen hinzufügen, wie folgt:

let _variable = vec![0; 10];

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