retain_mut 0.1.3

Provide retain_mut method that has the same functionality as retain but gives mutable borrow to the predicate.
Documentation
# RetainMut

<!-- cargo-sync-readme start -->

This crate provides trait `RetainMut` which
provides `retain_mut` method for `Vec` and `VecDeque`.

`retain_mut` is basically the same as `retain` except that
it gives mutable reference of items to the predicate function.

Since there is no reason `retain` couldn't have been designed this way,
this crate basically just copies the code from std with minor changes
to hand out mutable reference.
The code these impls are based on can be found in code comments of this crate.

This was probably a historical mistake in Rust library,
that `retain` should do this at the very beginning.
See [rust-lang/rust#25477](https://github.com/rust-lang/rust/issues/25477).

## Examples

### `Vec`

```rust
let mut vec = vec![1, 2, 3, 4];
vec.retain_mut(|x| { *x *= 3; *x % 2 == 0 });
assert_eq!(vec, [6, 12]);
```

### `VecDeque`

```rust
let mut deque = VecDeque::from(vec![1, 2, 3, 4]);
deque.retain_mut(|x| { *x *= 3; *x % 2 == 0 });
assert_eq!(deque, [6, 12]);
```

<!-- cargo-sync-readme end -->