It's true, @nikomatsakis has been talking recently about allowing the following, which I would be quite excited about! (an example of a limitation of today's borrow checker).

```rust
fn replace<T>(slot: &mut T, t: T) -> T {
    let ret = *slot;
    *slot = t;
    return ret;
}
```