Rust 内联'cfg'u attr(feature=x,path=file.rs)`donds';行不通

Rust 内联'cfg'u attr(feature=x,path=file.rs)`donds';行不通,rust,Rust,根据,可以同时执行以下两项: #[cfg_attr(windows, path = "windows.rs")] #[cfg_attr(feature = "magic", sparkles, crackles)] 然而,当我试图将它们一起使用时,我发现了一个错误 // this works #[cfg(connection = "websocket")] #[path = "websocket.rs"] mod protocol; // file not found for module

根据,可以同时执行以下两项:

#[cfg_attr(windows, path = "windows.rs")]
#[cfg_attr(feature = "magic", sparkles, crackles)]
然而,当我试图将它们一起使用时,我发现了一个错误

// this works
#[cfg(connection = "websocket")]
#[path = "websocket.rs"]
mod protocol;

// file not found for module `protocol`
#[cfg_attr(connection = "websocket", path = "websocket.rs")]
mod protocol ;

cfg
有条件地启用整个项目
cfg\u attr
有条件地启用一个或多个属性

在这方面:

#[cfg(connection = "websocket")]
#[path = "websocket.rs"]
mod protocol;
只有在条件为真时,才会包括整个
协议
模块,但在以下情况下:

#[cfg_attr(connection = "websocket", path = "websocket.rs")]
mod protocol;
协议
模块始终处于启用状态。如果条件为true,编译器将在
websocket.rs
中查找其源代码,但如果条件为false,则将在
protocol.rs
中查找。换句话说,它相当于:

#[cfg(connection = "websocket")]
#[path = "websocket.rs"]
mod protocol;

#[cfg(not(connection = "websocket"))]
mod protocol;