pretty_assertions 0.1.0

Overwrite `assert_eq!` with a drop-in replacement, adding a colorful diff.
Documentation
[![Build status](https://travis-ci.org/colin-kiegel/rust-pretty-assertions.svg?branch=master)](https://travis-ci.org/colin-kiegel/rust-pretty-assertions)
[![Latest version](https://img.shields.io/crates/v/rust-pretty-assertions.svg)](https://crates.io/crates/rust-pretty-assertions)
[![All downloads](https://img.shields.io/crates/d/rust-pretty-assertions.svg)](https://crates.io/crates/rust-pretty-assertions)
[![Downloads of latest version](https://img.shields.io/crates/dv/rust-pretty-assertions.svg)](https://crates.io/crates/rust-pretty-assertions)

# Pretty Assertions

When writing tests in Rust, you'll probably use `assert_eq!(a, b)` _a lot_.

If such a test fails, it will present all the details of `a` and `b`, but you have to spot, the differences yourself, which is not always straightforward, like here:

![standard assertion](examples/standard_assertion.png)

Wouldn't that task be _much_ easier with a colorful diff?

![pretty assertion](examples/pretty_assertion.png)

Yes it would. And you only need **one line of code** to make it happen —
seriously:

```rust
// add the following line to the top of your crate root to
// overwrite `assert_eq!` with a colorful drop-in replacement
#[macro_use] extern crate pretty_assertions;
```

Ok, and don't forget to add the `pretty_assertions` dependency to `Cargo.toml`.
Does that count as a line of code?.. ;-)

## Note

* `pretty_assertions` is an ultra-thin wrapper around the
  [`difference`]https://crates.io/crates/difference crate, which does
  the heavy lifting. It replaces the `assert_eq!` macro with just about 22
  lines of code.
* The replacement is only effective in your own crate, not in other libraries
  you include.

## Example

This is the Rust code behind the screenshots above.

```rust
// uncomment the next line to make the assertions colorful:
//#[macro_use] extern crate pretty_assertions;

fn main() {
    #[derive(Debug, PartialEq)]
    struct Foo {
        lorem: &'static str,
        ipsum: u32,
        dolor: Result<String, String>,
    }

    let x = Some(Foo { lorem: "Hello World!", ipsum: 42, dolor: Ok("hey".to_string())});
    let y = Some(Foo { lorem: "Hello Wrold!", ipsum: 42, dolor: Ok("hey ho!".to_string())});

    assert_eq!(x, y);
}
```

## License

Licensed under either of

- Apache License, Version 2.0, ([LICENSE-APACHE]LICENSE-APACHE or <http://www.apache.org/licenses/LICENSE-2.0>)
- MIT license ([LICENSE-MIT]LICENSE-MIT or <http://opensource.org/licenses/MIT>)

at your option.

### Contribution

Unless you explicitly state otherwise, any contribution intentionally
submitted for inclusion in the work by you, as defined in the Apache-2.0
license, shall be dual licensed as above, without any additional terms or
conditions.