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

Атрибут cfg

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

Синтаксис

#[cfg(condition)] item

Пример

Давайте включим функцию только для целевой платформы Linux:

#[cfg(target_os = "linux")] fn platform_info() { println!("Running on Linux"); } fn main() { platform_info(); }

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

"Running on Linux"

Пример

Давайте используем атрибут cfg с отрицанием not, чтобы код выполнялся на всех платформах, кроме Windows:

#[cfg(not(target_os = "windows"))] fn platform_info() { println!("Not Windows"); } fn main() { platform_info(); }

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

"Not Windows"

Пример

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

#[cfg(all(target_arch = "x86_64", target_os = "linux"))] fn platform_info() { println!("x86_64 Linux"); } fn main() { platform_info(); }

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

"x86_64 Linux"

Пример

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

#[cfg(any(target_os = "linux", target_os = "macos"))] fn platform_info() { println!("Unix-like system"); } fn main() { platform_info(); }

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

"Unix-like system"

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

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