Rust forces you me to re-write my programs. Usually, the first design of a program is kind-of poor. It's basically a prototype that I keep hacking on and refactoring until it works well enough. But in the last three Rust projects that I've written, I've run into a series of roadblocks and shortcomings of the crates (rust packages) that I'd initially chosen. It's at that point that I get a gut desire to re-write it, with different dependencies, and a different data ownership design. Usually, that's much faster and easier and makes less comprimises than the hacked original version, because the type system allows me to re-use some of my old code, and usually the tests that I've written can be easily modified to the new version.