If I were going to make this trait, I would naturally write something like:

```rust
pub trait Hash {
    fn hash(&self) -> u64;
}
```

I'm a little hazy on the details of why it's different, but it would be nice to have documentation to why this is a little more verbose. If I were expecting to take a state object, I would also expect it to take a mutable reference to it, so could you document why it's `state: S` instead of `state: &mut S`?