Should it be a hash table instead to make the access constant-time? I think it wouldn't matter with the default size of 10 but maybe it would it the user sets shard_size to eg. 1000?