有没有办法尽量减少以下功能检查?
#[cfg(feature = "eugene")]
pub mod eugene_set_steam_id;
#[cfg(feature = "eugene")]
pub mod eugene_balance;
#[cfg(feature = "eugene")]
pub mod eugene_force_map;
#[cfg(feature = "eugene")]
pub mod eugene_rating;
#[cfg(feature = "eugene")]
pub mod eugene_stat;
#[cfg(feature = "eugene")]
pub mod eugene_steam_id;
#[cfg(feature = "eugene")]
pub mod eugene_top;
Run Code Online (Sandbox Code Playgroud)
对于这样的事情:
#[cfg(feature = "eugene")] {
pub mod eugene_set_steam_id;
pub mod eugene_balance;
pub mod eugene_force_map;
pub mod eugene_rating;
pub mod eugene_stat;
pub mod eugene_steam_id;
pub mod eugene_top;
}
Run Code Online (Sandbox Code Playgroud)
这样可以更好地传达意义,更符合人体工程学.
She*_*ter 12
该CFG-如果箱子提供cfg-if!宏,它应该做你想要什么:
#[macro_use]
extern crate cfg_if;
cfg_if! {
if #[cfg(feature = "eugene")] {
pub mod eugene_set_steam_id;
pub mod eugene_balance;
pub mod eugene_force_map;
pub mod eugene_rating;
pub mod eugene_stat;
pub mod eugene_steam_id;
pub mod eugene_top;
} else {
}
}
Run Code Online (Sandbox Code Playgroud)
事实上,它甚至用你的话来描述自己:
根据大量
#[cfg]参数按人体工程学定义项目的宏.结构类似于if-else链,第一个匹配分支是发出的项.
ken*_*ytm 12
您可以创建一个导入所有文件的私有模块,然后让父模块从该私有模块重新导出所有内容:
#[cfg(feature = "eugene")]
#[path = ""]
mod reexport_eugene_modules {
pub mod eugene_set_steam_id;
pub mod eugene_balance;
pub mod eugene_force_map;
pub mod eugene_rating;
pub mod eugene_stat;
pub mod eugene_steam_id;
pub mod eugene_top;
}
#[cfg(feature = "eugene")]
pub use reexport_eugene_modules::*;
Run Code Online (Sandbox Code Playgroud)
你仍然需要#[cfg]两次写那行.
| 归档时间: |
|
| 查看次数: |
1104 次 |
| 最近记录: |