Last couples of days I was wondering what the message: "hard resetting via rts pin..." meant. It's not really an ERROR. Your uploaded program should work.

"hard resetting via rts pin..." just means, that your UART (USB-to-Serial) adapter performed an reset of your ESP. The reset is needed to boot properly.  It's not an error or something. But sometimes this essential reset, after uploading your binary can't be executed. That can have different reasons:

Your board does not support Autoreset.

Normally, boards like the WEMOS with an integrated USB-to-Serial Adapter support the reset. If not, you may have to reset the ESP manually. Because there is already some awesome documentation about how to do this, I will just link to it:

Changing the RESET Method.

Sometimes the reset via the RTS pin would not work. In the Arduino IDE you can choose between different RESET methods. Tools -> Reset Method -> ...

You used pins from the ESP8266 incorrectly

That is propably the reason why most boards won't start after flashing. You just used the pins on your ESP8266 incorrectly. There is a really cool website that shows you the pins that you can use, and the pins to avoid.

https://espeasy.readthedocs.io/en/latest/Reference/GPIO.html#best-pins-to-use-on-esp8266

For example you can get boot fails on different pins. Look up the pins you're using. Maybe you pulled some pins to ground, or pulled them up at startup. That way your ESP8266 won't boot.

Conclusion