我想编写一个跨平台的库,因此我编写了以下代码
pub mod common;
#[cfg(target_os = "Linux")]
pub mod process_linux;
#[cfg(target_os = "Windows")]
pub mod process_windows;
但是现在我想在名称过程下重新导出两个模块。 这容易吗?我想我将来可能需要阅读有关模块和名称空间的更多信息,我尝试了以下操作:
pub mod process {
#[cfg(target_os = "Linux")]
pub use process_linux::*;
#[cfg(target_os = "Windows")]
pub use process_windows::*;
}
但是它仍然无法像我想要的那样工作,也许有人可以找到答案。
编辑: 例如,我希望能够在不同的机器上运行相同的代码,但是目前导入无法正常工作,我必须改用process_linux:
// doesnt work
use tryolib::process::*;
// works
use tryolib::process_linux::*;
好,所以我现在尝试:
#[cfg(target_os = "Linux")]
mod process_linux;
#[cfg(target_os = "Windows")]
mod process_windows;
#[cfg(target_os = "Linux")]
pub use process_linux as process;
#[cfg(target_os = "Windows")]
pub use process_windows as process;
答案 0 :(得分:1)
您只是有错字,操作系统必须是小写字母(如reference states)。以下代码有效(playground):
#[cfg(target_os = "linux")]
pub mod process_linux {
pub type T = ();
}
#[cfg(target_os = "linux")]
use process_linux as process;
fn main() {
let _: process::T = ();
}