開発中の依存関係

テスト(あるいは例やベンチマーク)のためだけに、あるクレートに依存しなければならないことがあります。このような依存関係は、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のドキュメントを参照してください。