web-dev-qa-db-fra.com

Comment désactiver les avertissements de code inutilisés dans 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

Je vais réactiver ces avertissements pour des raisons sérieuses, mais je ne fais que bricoler avec le langage et cela me pousse.

J'ai essayé d'ajouter #[allow(dead_code)] à mon code, mais cela n'a pas fonctionné.

164
Andrew Wagner

Vous pouvez soit:

  • Ajoutez un attribut allow sur une structure, un module, une fonction, etc.:

    #[allow(dead_code)]
    struct SemanticDirection;
    
  • Ajoutez un attribut allow au niveau de la caisse ; remarquez le !:

    #![allow(dead_code)]
    
  • Passez-le à rustc:

    rustc -A dead_code main.rs
    
  • Passez-le en utilisant cargo via la variable d’environnement RUSTFLAGS:

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

Une autre façon de désactiver cet avertissement consiste à préfixer l'identifiant par _:

struct _UnusedStruct {
    _unused_field: i32,
}

fn main() {
    let _unused_variable = 10;
}

Cela peut être utile, par exemple, avec une fenêtre SDL:

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

La préfixe avec un trait de soulignement est différente de l’utilisation d’un nom de soulignement isolé. Procédez comme suit pour détruire immédiatement la fenêtre, ce qui est peu probable.

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

Rendre le code public arrête également les avertissements; vous devrez également rendre public le contenu de mod qui le contient.

Cela a du sens lorsque vous écrivez une bibliothèque: votre code est "inutilisé" en interne car il est destiné à être utilisé par le code client.

4
Vituel