I'm looking to store some kind of map between u8 and usize. I'd like it to be as fast as possible, as I'll be going through a lot of these. The obvious option is [usize; 256], using usuze::MAX to represent unset values, but that does waste a lot of memory, which could lead to low memory locality, which wouldn't be ideal. I've also considered Vec<(u8, usize)> which may save space, but is slow to access and by using heap allocation gives up memory locality entirely. A hash map without actually hashing seems like it might be ideal, especially since most commonly I'll have b'a' to b'z' is my values, so a map size of 32 would give no collisions.
Does a better data structure exist for me than just an array?