如何标记为条件编译使用语句? [重复](How to mark use statements f

2019-09-25 15:19发布

这个问题已经在这里有一个答案:

  • 如何排除被建在OS X中的文件? 2个回答
  • 如何在鲁斯特使用条件编译宏示例 1回答
  • 是否有所有CFG功能列表? 3个回答

是否有可能标志着某些包括只得到包括在相关的操作系统的?

例如,你可以这样做:

#[cfg(unix)] {
    use std::os::unix::io::IntoRawFd;
}
#[cfg(windows)] {
   // https://doc.rust-lang.org/std/os/unix/io/trait.AsRawFd.html  suggests this is equivalent?
   use std::os::windows::io::AsRawHandle;
}

试图编译上面的代码给我的语法错误(即error: expected item after attributes )。

我试图修补锈病的项目,我在GitHub上发现,在Windows上编译(同时仍使其保留将其现有的目标编译的能力 - 即Unix系统及WASM)。 目前我正在运行到其中的一些文件中导入特定于平台的部分从问题std::os (例如, use std::os::unix::io::IntoRawFd;从而结束了在Windows破坏构建。

注:我使用的防锈稳定(1.31.1),而不是每晚。

Answer 1:

你正在寻找的语法是:

#[cfg(target_os = "unix")]
use std::os::unix::io::IntoRawFd;

#[cfg(target_os = "windows")]
use std::os::windows::io::AsRawHandle;


文章来源: How to mark use statements for conditional compilation? [duplicate]