Константа FAMILY
Константа FAMILY из модуля std::env содержит строку,
которая определяет семейство операционной системы, для которой
была скомпилирована программа. Значение этой константы задаётся
во время компиляции и соответствует целевому триплету. Константа
не принимает параметров и возвращает значение типа &'static str.
Возможные значения константы: "unix" для Unix-подобных
систем (Linux, macOS, BSD и другие), "windows" для Windows,
"wasm" для WebAssembly и другие значения для остальных
платформ. Это позволяет писать код, зависящий от семейства
операционной системы, без использования дополнительных крейтов.
Синтаксис
std::env::FAMILY
Пример
Давайте выведем значение константы FAMILY в консоль:
fn main()
{
let res = std::env::FAMILY;
println!("{}", res);
}
Результат выполнения кода на Linux:
"unix"
Пример
Давайте проверим, к какому семейству операционных систем относится текущая платформа, и выведем соответствующее сообщение:
fn main()
{
if std::env::FAMILY == "unix" {
println!("This is a Unix-like system");
} else if std::env::FAMILY == "windows" {
println!("This is Windows");
} else {
println!("Unknown family: {}", std::env::FAMILY);
}
}
Результат выполнения кода на Linux:
"This is a Unix-like system"
Пример
Давайте используем константу FAMILY для условной
компиляции кода, зависящего от платформы:
fn main()
{
let res = if cfg!(target_family = "unix") {
"unix-specific code"
} else if cfg!(target_family = "windows") {
"windows-specific code"
} else {
"other code"
};
println!("{}", res);
}
Результат выполнения кода на Linux:
"unix-specific code"
Смотрите также
-
константа
OS,
которая содержит имя операционной системы -
константа
ARCH,
которая содержит архитектуру процессора -
константа
EXE_EXTENSION,
которая содержит расширение исполняемых файлов -
константа
DLL_SUFFIX,
которая содержит суффикс динамических библиотек