> 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.

We find holes in code generation all the time, but never add assertions to the output.

> Large binaries. Your assertion that rust has 2 MB binaries by default because of assertions is incorrect. 

The *initial* size might be 2MB because of the I/O design, but the steep climb in code growth from there when not even using I/O is certainly not. There's a rampant overuse of generics (without common code hoisted out), unwinding, inline annotations and always-on assertions.

> 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.

There are going to be very few users passing extra flags like this, so the defaults are really all that matters. If it's on by default, that's nearly the same as always being on.