【问题标题】:File or module level 'feature' possible?文件或模块级别的“功能”可能吗?
【发布时间】:2017-02-23 03:37:10
【问题描述】:

一些优化/算法使代码的可读性大大降低,因此保留禁用文件/模块中复杂且笨拙的功能的能力非常有用,这样修改此代码时引入的任何错误都可以针对简单代码进行快速测试.

目前使用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 可能更有意义。

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

【问题讨论】:

  • 对于它的价值,我认为clippy对此抱怨绝对是错误的;有时嵌套的 if 比 else if 链更容易阅读。如果您主要关心的是 clippy 的健康状况,我会寻找一些方法来关闭此 lint(可能仅针对此实例)。
  • 我去看了,当外部else 中有评论时,有一个issue 可以禁用此 lint。

标签: rust rust-cargo


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-12-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多