Best algorithm for switching between bullets before reloading the current one

I’m wondering about how most 2d games deal with switching between player bullets when the current one isn’t / is being reloaded.

Currently, I have these configurations in my brain:

  1. Let the player switch to another bullet but he will have to reload the current one completely even if it was 100ms left to be fully reloaded, when he switches back to it.

  2. Let the player switch between bullets and when he switches back to the current one (the one he was left not reloaded), he will just need to wait the remaining time for it to be reloaded and not the entire reload time.

  3. The player would be able to switch between bullets but after some delay and when he gets back to the one that was left not reloaded, he will find it ready for use.

These are the ideas that came to my mind, but I’ll be glad if you present better ones for me.

So which one is better ? Which improvements do they need ?