It's fine because `*y` and `*z` are integers, and they seem to get copied rather than moved. This code compiles fine:

```rust
fn foo() {
    let mut x = A { a: 1, b: box 2 };
    let y = &mut x.a;
    drop(*y);
}
```

but if I use the `x.b` field, which is a `Box<int>`, like this:

```rust
fn bar() {
    let mut x = A { a: 1, b: box 2 };
    let y = &mut x.b;
    drop(*y);
}
```

then I get an error:

```
test.rs:24:10: 24:12 error: cannot move out of dereference of `&mut`-pointer
test.rs:24     drop(*y);
                    ^~
```