the "precomposed" thing would work too:

```rust
struct Entries<'a, K, V> {
    items: Zip<Items<'a, u64>, Zip<Items<'a, K>, Items<'a, V>>>
    size_hint: uint
}
```
initialised like
```rust
Entries {
    items: self.hashes.iter().zip(self.keys.iter().zip(self.vals.iter())),
    size_hint: ...
}
```

and then the `next` method below would be

```rust
for (hash, kv) in self.items {
    if hash != EMPTY_BUCKET {
        self.size_hint -= 1;
        return kv;
    }
}
None
```