Как отключить предупреждения о неиспользуемом коде в 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)] в мой код, но это не сработало.

Ответ 1

Вы также можете:

  • Добавьте атрибут allow для структуры, модуля, функции и т. Д.:

    #[allow(dead_code)]
    struct SemanticDirection;
    
  • Добавьте атрибут allow уровня ящика; обратите внимание ! :

    #![allow(dead_code)]
    
  • Передайте это rustc:

    rustc -A dead_code main.rs
    
  • Передайте его, используя cargo через переменную среды RUSTFLAGS:

    RUSTFLAGS="$RUSTFLAGS -A dead_code" cargo build
    

Ответ 2

Другой способ отключить это предупреждение - добавить префикс к идентификатору _:

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);

Ответ 3

Создание кода общественность также останавливает предупреждения; вам нужно будет также сделать публичный mod.

Это имеет смысл, когда вы пишете библиотеку: ваш код "не используется" внутри, потому что он предназначен для использования клиентским кодом.