5

Как отключить предупреждения о неиспользуемом коде на уровне крейта в Rust?

24

Я сталкиваюсь с проблемой в Rust, когда во время работы над проектом меня постоянно беспокоят предупреждения о "мертвом коде", что затрудняет концентрацию на задачах. Я попытался использовать атрибут #[allow(dead_code)], однако он позволяет подавить только одно предупреждение за раз.

Вот пример кода:

struct SemanticDirection;

fn main() {}

При компиляции я получаю следующее предупреждение:

warning: struct `SemanticDirection` is never constructed
 --> src\main.rs:1:8
  |
1 | struct SemanticDirection;
  |        ^^^^^^^^^^^^^^^^^
  |
  = note: `#[warn(dead_code)]` on by default

Как мне отключить эти предупреждения на уровне всего крейта?

5 ответ(ов)

1

Еще один способ отключить это предупреждение — это префиксировать идентификатор знаком _:

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

Чтобы отключить предупреждения о неиспользуемом коде и переменных в вашем файле на Rust, добавьте следующие строки в начало файла:

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

Эти директивы указывают компилятору игнорировать предупреждения о неиспользуемых элементах, что может быть полезно, если вы планируете использовать их в будущем или если они необходимы для документации.

0

Да, когда вы делаете код публичным, это также устраняет предупреждения. Вам потребуется сделать публичными также и содержащие его mod.

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

0

В дополнение: Rust предлагает пять уровней предупреждений (lint levels): allow (разрешить), warn (предупредить), force-warn (обязательное предупреждение), deny (отказать) и forbid (запретить).

Для подробной информации о каждом из уровней вы можете ознакомиться с официальной документацией по адресу: Lint Levels.

0

Если у вас есть неиспользуемые функции, вы должны сделать функцию публичной, но будьте осторожны. Если структура не является публичной, то вы все равно получите ошибку, как в следующем примере:

// эта структура также должна быть публичной
struct A {
   A {}
}

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

    }
}

Если вы не хотите, чтобы структура была публичной, вы можете использовать атрибут #[allow(unused)], чтобы подавить предупреждение о неиспользуемом коде.

Чтобы ответить на вопрос, пожалуйста, войдите или зарегистрируйтесь