Руководство разработчика: как получить имя операционной системы в Rust

Метод 1: константа std::env::consts::OS

Стандартная библиотека Rust предоставляет удобный способ доступа к имени ОС через константу std::env::consts::OS. Эта константа возвращает строку, представляющую целевую операционную систему. Вот пример того, как его использовать:

use std::env;
fn main() {
    let os_name = env::consts::OS;
    println!("The current operating system is: {}", os_name);
}

Метод 2: Ящик os_info

Если вам нужна более подробная информация об операционной системе, вы можете использовать крейт os_info. Этот контейнер предоставляет функции для получения различных сведений, связанных с ОС, включая имя ОС. Чтобы использовать его, добавьте следующую зависимость к вашему Cargo.toml:

[dependencies]
os_info = "0.8.0"

Вот пример использования ящика os_info:

use os_info::Type;
fn main() {
    let os_info = os_info::get();
    match os_info.os_type() {
        Type::Windows => println!("Running on Windows"),
        Type::Linux => println!("Running on Linux"),
        Type::Macos => println!("Running on macOS"),
        Type::Other => println!("Running on some other OS"),
    }
}

Метод 3: команда uname

Если вы предпочитаете более системно-ориентированный подход, вы можете выполнить команду uname, чтобы получить имя ОС. Для запуска команд оболочки в Rust вы можете использовать структуру std::process::Command. Вот пример:

use std::process::Command;
fn main() {
    let output = Command::new("uname").arg("-s").output().unwrap();
    let os_name = String::from_utf8_lossy(&output.stdout);
    println!("The current operating system is: {}", os_name);
}

Метод 4: Ящик sysinfo

Для получения дополнительной информации о системе, включая название ОС, отличным выбором может стать контейнер sysinfo. Этот набор предоставляет обширный API для сбора различных сведений о системе. Чтобы использовать его, добавьте следующую зависимость к вашему Cargo.toml:

[dependencies]
sysinfo = "0.20.0"

Вот пример использования крейта sysinfoдля получения имени ОС:

use sysinfo::{System, SystemExt};
fn main() {
    let mut system = System::new_all();
    system.refresh_all();
    let os_name = system.get_os_version().unwrap_or_else(|| String::from("Unknown"));
    println!("The current operating system is: {}", os_name);
}

Вот и все! Мы рассмотрели четыре различных метода получения имени операционной системы в Rust. Вы можете выбрать тот, который лучше всего соответствует вашим потребностям и предпочтениям.

Не забудьте изучить официальную документацию по каждому методу, чтобы узнать больше об их возможностях и потенциальных ограничениях. Приятного кодирования!