РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
829 of 1245 menu

Атрибут #[allow(dead_code)]

Атрибут #[allow(dead_code)] подавляет предупреждения компилятора о так называемом «мёртвом коде» - элементах программы, которые объявлены, но нигде не используются. По умолчанию Rust выдаёт предупреждение warning: function is never used для каждой неиспользуемой функции, метода, структуры, перечисления или поля. Атрибут не принимает параметров и может применяться как к отдельному элементу, так и к целому модулю.

Особенно часто этот атрибут используется в тестах, где вспомогательные функции могут вызываться не во всех сценариях, а также при разработке библиотек, где часть API предназначена для внешних пользователей.

Синтаксис

#[allow(dead_code)] fn unused_function() { // тело функции }

Пример

Давайте объявим функцию helper, которая не вызывается в коде, и применим к ней атрибут:

#[allow(dead_code)] fn helper() { println!("This function is not called"); } fn main() { println!("Program finished"); }

Результат выполнения кода:

"Program finished"

Компилятор не выдаст предупреждение о том, что функция helper не используется, благодаря атрибуту #[allow(dead_code)].

Пример

Давайте применим атрибут к целому модулю, содержащему несколько неиспользуемых элементов:

#[allow(dead_code)] mod utils { pub fn unused_one() {} pub fn unused_two() {} pub struct Config { pub value: i32, } } fn main() { println!("Module defined"); }

Результат выполнения кода:

"Module defined"

Все элементы внутри модуля utils защищены от предупреждений о неиспользуемом коде одним атрибутом.

Пример

Давайте применим атрибут к отдельному полю структуры, которое не читается в коде:

struct Point { x: i32, #[allow(dead_code)] y: i32, } fn main() { let p = Point { x: 1, y: 2 }; println!("{}", p.x); }

Результат выполнения кода:

1

Поле y не вызывает предупреждение, хотя и не используется при чтении, поскольку к нему применён атрибут.

Смотрите также

  • атрибут cfg(test),
    который включает код только при тестировании
  • атрибут cfg,
    который условно компилирует код по заданной конфигурации
  • атрибут ignore,
    который пропускает выполнение конкретного теста
  • макрос assert!,
    который проверяет истинность условия в тестах
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить