"make even basic tasks sometimes extraordinarily difficult, or so I've heard"
That would be an understatement :-)
But it's a trade-off. You fight the borrow-checker to ensure safe code.
It's really subjective. Are you using a language for front-end/middle-tier service/back-end process, etc. etc.
Back in the day - you had a handful of people writing C code via CGI for web development.
Every good language addresses a problem.
Rust = safe code. Crystal = IMO...productivity.