某些优化/算法会使代码的可读性大大降低,因此保持在文件/模块中禁用复杂且难以处理的功能的能力非常有用,因此可以快速测试修改此代码时引入的任何错误反对简单的代码。
目前使用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
可能更有意义。
有没有办法在文件中公开某个功能而不将其列在包中?(因为这仅用于内部调试并测试对代码的更改)。
答案 0 :(得分:4)
您可以使用构建脚本来创建新的cfg条件。在构建脚本中使用println!("cargo:rustc-cfg=whatever")
,然后可以在函数和语句中使用#[cfg(whatever)]
。