開発中の依存関係
テスト(あるいは例やベンチマーク)のためだけに、あるクレートに依存しなければならないことがあります。このような依存関係は、Cargo.toml
の[dev-dependencies]
セクションに追加します。このセクションに追加した依存関係は、このパッケージに依存するパッケージには適用されません。
そのようなクレートの例として、pretty_assertions
クレートが挙げられます。これは、標準のassert_eq!
とassert_ne!
マクロを拡張して、差分をカラフルに表示するものです。
ファイルCargo.toml
:
# standard crate data is left out
# 本節の内容に関係のない行は省略しています。
[dev-dependencies]
pretty_assertions = "1"
ファイルsrc/lib.rs
:
// externing crate for test-only use
// テストにのみ使うクレートをexternで宣言する
#[cfg(test)]
#[macro_use]
extern crate pretty_assertions;
pub fn add(a: i32, b: i32) -> i32 {
a + b
}
#[cfg(test)]
mod tests {
use super::*;
use pretty_assertions::assert_eq; // crate for test-only use. Cannot be used in non-test code.
// テストのためのクレートであり、テスト以外のコードには使えない。
#[test]
fn test_add() {
assert_eq!(add(2, 3), 5);
}
}
参照
依存関係の記述については、Cargoのドキュメントを参照してください。