This is getting a little bit off track. There's a few things being discussed here:

* debug assertions. These don't exist today, and in theory you would turn them off with `--cfg ndebug`. We also don't build the standard library today with `--cfg ndebug` by default. I believe that this gives us a great deal more test coverage while rust is still under development. We should most certainly have a `./configure` flag to enable `--cfg ndebug` and I expect this to become default further on down the road.

* Slowing down this hashmap. I am not trying to slow down this hashmap. I am trying to assert at runtime that this unsafe implementation. The `FullIndex` and `EmptyIndex` abstractions are not enough to guarantee safety (I commented elsewhere as to the bugs associated with this)

* Large binaries. Your assertion that rust has 2 MB binaries by default because of assertions is incorrect. It is almost entirely due to the I/O design. Bringing that up as part of this discussion is borderline inflammatory and irrelevant to the code size or speed of hash map. Assertions are indeed a problem with code size, and this is why I'm advocating for only turning these on with `--cfg ndebug` (reasons explained above).

Please remember that rust is a *safe* language by default. You have a very unsafe abstraction with an attempt to have a safe interface around it. I thought that this was safe but then discovered a hole in it. These *debug* assertions are the only things keeping the hashmap safe at that point.

I am not advocating for a slow hash map. I am not advocating for slow binaries. I am advocating for a safe hash map with extra checks in debug mode.