I think this tells me we differ greatly in our development approach. Because it seems you still practice a kind of traditional TDD.
I'm not saying one is better, but I think this is either a personal preference of style, or maybe you haven't tried the Repl driven approach?
For example, I almost never use REPL/refresh.
Any amount of, delete state, reinitialize the whole app from scratch, be it by restarting the app like cargo does, or some tear-down/re-init like refresh does, is a very different approach to how I use the REPL, where I make many small changes that I hot-reload as I go, never really needing a full refresh.
That allows me to maintain state and context as I code.
Also, small applications are nice, but most real app will grow to be big applications, not sure how `cargo watch -X run` will keep up in that setting, it doesn't just become compile/start times at some point, it's also how long does it take to instantiate your SQL driver and establish a DB connection, start your web server, etc. REPL driven development allows all this to be initialized in the morning when you start your day, and just kept open till you clock out. So all development throughout the day you get instant hot-reloads of the functions you're changing, while maintaining all that state alive as you go.