在Rust中检测平台

时间:2017-04-08 09:28:23

标签: path rust cross-platform

如何使用Rust检测操作系统类型?我需要指定一个特定于操作系统的默认路径。应该使用条件编译吗?

例如:

#[cfg(target_os = "macos")]
static DEFAULT_PATH: &str = "path2";
#[cfg(target_os = "linux")]
static DEFAULT_PATH: &str = "path0";
#[cfg(target_os = "windows")]
static DEFAULT_PATH: &str = "path1";

3 个答案:

答案 0 :(得分:7)

有点晚了,但是有一种内置的方法可以使用std lib来检测操作系统。例如:

use std::env;

println!("{}", env::consts::OS); // Prints the current OS.


可能的值在here

中进行了描述

希望这对以后有帮助的人。

答案 1 :(得分:4)

您还可以使用cfg!语法扩展名。

if cfg!(windows) {
    println!("this is windows");
} else if cfg!(unix) {
    println!("this is unix alike");
}

答案 2 :(得分:3)

编辑:

自写这个答案以来,os_type crate的作者似乎已经撤回了暴露像Windows这样的操作系统的功能。条件编译可能是你最好的选择 - os_type现在似乎只检测Linux发行版,从它的lib.rs判断。

原始回答:

您可以随时使用os_type包。从头版:

extern crate os_type;

fn foo() {
      match os_type::current_platform() {
        os_type::OSType::OSX => /*Do something here*/,
        _ => None
    }
}