作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
根据documentation for cfg_attr , 可以同时执行这两项操作:
#[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_attr
有条件地启用一个或多个属性。
在此:
#[cfg(connection = "websocket")]
#[path = "websocket.rs"]
mod protocol;
整个 protocol
模块只有在条件为真时才会被包含,但是在这个:
#[cfg_attr(connection = "websocket", path = "websocket.rs")]
mod protocol;
protocol
模块始终启用。如果条件为真,编译器将在 websocket.rs
中查找其源代码,但如果条件为假,它将在 protocol.rs
中查找。换句话说,它等同于:
#[cfg(connection = "websocket")]
#[path = "websocket.rs"]
mod protocol;
#[cfg(not(connection = "websocket"))]
mod protocol;
关于rust - 内联 `cfg_attr(feature = x, path = "file.rs")` doesn' t work,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58150681/
根据documentation for cfg_attr , 可以同时执行这两项操作: #[cfg_attr(windows, path = "windows.rs")] #[cfg_attr(fea
我是一名优秀的程序员,十分优秀!