Атрибут #[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 не вызывает предупреждение, хотя и не используется
при чтении, поскольку к нему применён атрибут.