Cプリプロセッサでは、これを行うのが一般的です。
_#if defined(NDEBUG)
// release build
#endif
#if defined(DEBUG)
// debug build
#endif
_
Cargoのおおまかな同等物は次のとおりです。
cargo build --release
_リリース用。cargo build
_デバッグ用。Rustの#[cfg(...)]
属性またはcfg!(...)
マクロを使用して同様のことをするにはどうすればよいですか?
RustのプリプロセッサがCのように機能しないことを理解しています。私はドキュメントをチェックしました このページはいくつかの属性をリストしています 。 (このリストが包括的であると想定)
_debug_assertions
_はチェックできますが、より一般的なデバッグのケースをチェックするために使用すると誤解を招く可能性があります。
この質問が貨物に関連するべきかどうかわかりません。
_debug_assertions
_を適切な構成フラグとして使用できます。 #[cfg(...)]
属性と_cfg!
_マクロの両方で機能します。
_#[cfg(debug_assertions)]
fn example() {
println!("Debugging enabled");
}
#[cfg(not(debug_assertions))]
fn example() {
println!("Debugging disabled");
}
fn main() {
if cfg!(debug_assertions) {
println!("Debugging enabled");
} else {
println!("Debugging disabled");
}
#[cfg(debug_assertions)]
println!("Debugging enabled");
#[cfg(not(debug_assertions))]
println!("Debugging disabled");
example();
}
_
この構成フラグは、これを行うための正しい方法として この説明 と名付けられました。現在のところ、これ以上適切な組み込み条件はありません。
参照 から:
_
debug_assertions
_-最適化なしでコンパイルすると、デフォルトで有効になります。これは、開発では追加のデバッグコードを有効にするために使用できますが、本番環境では使用できません。たとえば、標準ライブラリの_debug_assert!
_マクロの動作を制御します。
もう少し複雑な方法は、#[cfg(feature = "debug")]
を使用し、 here のようにクレートの「デバッグ」機能を有効にするビルドスクリプトを作成することです。