Макрос cfg!
Макрос cfg! проверяет, истинно ли указанное условие
конфигурации во время компиляции. Он возвращает
true, если условие выполнено, и
false в противном случае. В отличие от атрибута
#[cfg], который полностью удаляет код при
невыполнении условия, макрос cfg! лишь
подставляет логическое значение, позволяя использовать
обычные ветвления if и match.
Параметром макрос принимает условие конфигурации,
например test, unix или windows.
Синтаксис
cfg!(condition)
Пример
Давайте проверим, запущен ли код в режиме тестирования.
Для этого используем условие test:
fn main()
{
let res = cfg!(test);
println!("{}", res);
}
Результат выполнения кода:
false
Пример
Давайте проверим, скомпилирована ли программа под операционную систему Unix:
fn main()
{
if cfg!(unix) {
println!("unix");
} else {
println!("not unix");
}
}
Результат выполнения кода на Linux:
"unix"
Пример
Давайте проверим, включена ли отладочная сборка,
с помощью условия debug_assertions:
fn main()
{
let res = cfg!(debug_assertions);
println!("{}", res);
}
Результат выполнения кода при сборке через cargo run:
true
Смотрите также
-
атрибут
cfg,
который условно включает или исключает код при компиляции -
атрибут
cfg-test,
который включает код только при тестировании -
атрибут
cfg-not-test,
который исключает код при тестировании -
макрос
assert!,
который проверяет истинность условия во время выполнения