Development dependencies

Sometimes there is a need to have dependencies for tests (or examples, or benchmarks) only. Such dependencies are added to Cargo.toml in the [dev-dependencies] section. These dependencies are not propagated to other packages which depend on this package.

One such example is pretty_assertions, which extends standard assert_eq! and assert_ne! macros, to provide colorful diff.
One such example is using a crate that extends standard assert! macros.
File Cargo.toml:

# standard crate data is left out
pretty_assertions = "1"

File src/

// externing crate for test-only use
extern crate pretty_assertions;

pub fn add(a: i32, b: i32) -> i32 {
    a + b

mod tests {
    use super::*;
    use pretty_assertions::assert_eq; // crate for test-only use. Cannot be used in non-test code.

    fn test_add() {
        assert_eq!(add(2, 3), 5);

See Also

Cargo docs on specifying dependencies.

関連キーワード:  dependencies, 関数, use, Dev, Result, Example, By, Rust, crate, エラー