文件或模块级别'功能'可能?

时间:2017-02-23 03:37:10

标签: rust rust-cargo

某些优化/算法会使代码的可读性大大降低,因此保持在文件/模块中禁用复杂且难以处理的功能的能力非常有用,因此可以快速测试修改此代码时引入的任何错误反对简单的代码。

目前使用const USE_SOME_FEATURE: bool = true;似乎是一种合理的方式,但是使代码读取有点奇怪,因为USE_SOME_FEATURE的使用方式与C中的ifdef一样。

例如,clippy希望你写:

if foo {
    { ..other code.. }
} else {
    // final case
    if USE_SOME_FEATURE {
        { ..fancy_code.. }
    } else {
        { ..simple_code.. }
    }
}

如:

if foo {
    { ..other code.. }
} else if USE_SOME_FEATURE {
    // final case
    { ..fancy_code.. }
} else {
    // final case
    { ..simple_code.. }
}

哪个恕我直言会伤害可读性,可以忽略 - 但这是因为使用布尔值feature可能更有意义。

有没有办法在文件中公开某个功能而不将其列在包中?(因为这仅用于内部调试并测试对代码的更改)

1 个答案:

答案 0 :(得分:4)

您可以使用构建脚本来创建新的cfg条件。在构建脚本中使用println!("cargo:rustc-cfg=whatever"),然后可以在函数和语句中使用#[cfg(whatever)]