Peroxide works by denaturing the blood platelet proteins which releases the iron to be removed. That's why blood is difficult to remove. It's a protein based stain first and then a metal stain after denaturing. But Denaturing the protein with peroxide, especially when fresh doesn't allow the metal stain to set so it can be washed away.
Iron stains by themselves work better with chemical reducers such as Iron Out and CLR. Peroxide won't help rust stains because as an oxidizer it does nothing to actually remove the iron, in fact it will cause rusting if all the iron hasn't already rusted.
CLR and Iron Out has chelating agents that will actually bind to the iron allowing it to be removed with water.