@alexcrichton: I unzipped by default. It's an old-ish habit of mine.

@huonw: Theoretically, you're absolutely right. However, another useful feature of unzipping is alignment. If we have a hashtable of u64 to u8, then any zipping is going to waste a huge amount of memory.

Unzipping is just a more appropriate thing to do.

Regarding the 7 -> 17 words, this is for a few reasons:

1) Unzipping adds 4 extra words, but saves one per key/value pair due to the Option, and even more if you account for oddly-sized values messing up alignment.
2) This hashtable supports shrinking when it gets to 1/4 size. The old one did not. That adds another 2 words: one for a "minimum size", and one for a size to shrink at.
3) In theory, the load factor can be configured. I haven't exported this yet, but I plan to in the future. That's another 2 words.
4) The old hashtable did a lot of mods. I maintain a bitmask. That's another word.