Rust — условные проверки конфигурации

Опубликовано: 16 Февраля, 2023

Rust использует условные проверки конфигурации (cfg), чтобы различать среду, которая используется для запуска программ Rust. Это делается с помощью двух атрибутов:

  • атрибут cfg (используется в позициях атрибутов)
  • cfg! макрос (используется в логических выражениях)

Атрибут cfg (#cfg) используется, когда мы проверяем атрибуты в позиции атрибута, и включает условную компиляцию без удаления каких-либо кодов. С другой стороны, cfg! макрос используется, когда нам нужно использовать значение макроса в логических выражениях, таких как оценка литералов True или False во время выполнения. Какие бы выражения ни требовалось вычислить, cfg! макрос делает это независимо от всех условий.

Пример:

Rust




// Rust code for Configuration conditional checks
#[cfg(target_os = "linux")]
fn checking_on_linux() {
    println!("Currently on linux!");
}
  
#[cfg(not(target_os = "linux"))]
fn checking_on_linux() {
    println!("Not on linux!");
}
  
fn main() {
   checking_on_linux();
    if cfg!(target_os = "linux") {
        println!("Running on linux");
    } else {
        println!("Not Running on linux");
    }
}

Выход:

Объяснение:

В этом примере мы объявляем функцию check_on_linux(), которая проверяет, является ли целевая операционная система Linux или нет. Мы используем атрибут cfg, чтобы проверить, является ли операционная система Linux или нет, объявив переменную target_os как «Linux». Далее мы объявляем и описываем еще один атрибут cfg, который проверяет, является ли операционная система чем-то отличным от Linux или нет. После запуска кода в IDE на основе терминала мы видим, что вывод добавлен на экран.