I had a ten-line shell script that parsed some logs and printed a summary. It worked. Then it grew an option, then another, then some date handling, and the point where a shell script's argument parsing turns into a swamp arrived right on schedule. So I rewrote it in Rust, which on the face of it is using a sledgehammer to crack a nut I had already cracked.
Was it worth it? For a tool only I use, honestly, yes, and not for the reasons the Rust crowd usually lead with. The speed was irrelevant; the script was already instant. What I got was clap doing the argument parsing properly, with --help and sane errors for free, and a compiler that refused to let me pretend a missing field was an empty string. The whole class of "works until the input is slightly wrong" bug that haunts quick shell scripts just does not compile.
The cost is real and I won't pretend otherwise. There is a Cargo.toml, a build step, a binary to put somewhere, and the first version took longer to write than the shell one took to live its entire life. For a genuine one-off, the script wins every time and I'd write it again tomorrow.
But this was not a one-off. It was a thing I reach for weekly and kept quietly extending. The dividing line, I think, is whether you will still be editing it in six months. If yes, the ceremony buys you a tool that tells you when you've broken it, instead of one that waits to surprise you in front of someone. This one earned its Cargo.toml.