2017-02-23 2 views
1

いくつかの最適化/アルゴリズムは、コードをかなり読みにくくするので、ファイル/モジュール内の複雑で扱いにくい機能を無効にすることができれば便利です。ファイルまたはモジュールレベルの「機能」は可能ですか?

現在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

価値があるのは、クリピが絶対に間違っていると思います。時にはネストされたifは 'else if'よりも読みやすくなります。主にclippyからのきれいな健康保険を心配しているなら、私はこのリントをオフにする方法を探しています(このインスタンスのためだけかもしれません)。 – trentcl

+0

私は探していましたが、外側の 'else'にコメントがあるときにこのlintを無効にするには[issue](https://github.com/Manishearth/rust-clippy/issues/798)があります。 – trentcl

答えて

3

ビルドスクリプトを使用して、新しいcfg条件を作成できます。ビルドスクリプトでprintln!("cargo:rustc-cfg=whatever")を使用すると、関数とステートメントに#[cfg(whatever)]を使用できます。

関連する問題