如何标记条件编译的use语句?
How to mark use statements for conditional compilation?
是否可以将某些包含标记为仅包含在相关 OS 中?
例如,你能不能做这样的事情:
#[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 上找到的 Rust 项目以在 Windows 上编译(同时仍然使其保留在其现有目标上编译的能力 - 即 Unixes 和 WASM ).目前我 运行 遇到了一些文件从 std::os
(例如 use std::os::unix::io::IntoRawFd;
)导入平台特定部分的问题,这最终破坏了 Windows 上的构建。
注意:我使用的是 Rust Stable (1.31.1) 而不是 nightly。
您要查找的语法是:
#[cfg(target_os = "unix")]
use std::os::unix::io::IntoRawFd;
#[cfg(target_os = "windows")]
use std::os::windows::io::AsRawHandle;
是否可以将某些包含标记为仅包含在相关 OS 中?
例如,你能不能做这样的事情:
#[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 上找到的 Rust 项目以在 Windows 上编译(同时仍然使其保留在其现有目标上编译的能力 - 即 Unixes 和 WASM ).目前我 运行 遇到了一些文件从 std::os
(例如 use std::os::unix::io::IntoRawFd;
)导入平台特定部分的问题,这最终破坏了 Windows 上的构建。
注意:我使用的是 Rust Stable (1.31.1) 而不是 nightly。
您要查找的语法是:
#[cfg(target_os = "unix")]
use std::os::unix::io::IntoRawFd;
#[cfg(target_os = "windows")]
use std::os::windows::io::AsRawHandle;