Rust: it's not (always) great
Rust: it's not (always) great
I really like Rust a lot. But a general rule I have in my life is that if you can't go on a half hour rant about all the downsides of your favorite tool/language/whatever, you're probably either not very versed in it or unable/unwilling to support its continued evolution, and in my book that does a disservice to a thing. In quite a few ways I think Rust has fallen into a pit of success - e.g. cargo was such an improvement over many other build systems that potential issues or dead ends were overlooked, and now we're kinda stuck with them. I'm not too worried since Rust continues to grow in popularity, certainly fueled by the fact that memory safety has rapidly become table stakes for large projects. Add systems level performance/scope and there's not a lot out there that can compete.
But
Option<&String>, <&str>, <String>
aaaaAAA verbose- AAAAAAAAA
impl<T, U> Pwn<T> for Option<U>
where
U: ToOwned<Owned = T>,
- hot reloading
- slow compile times, monomorph a splode
- proc macro perf & IDE support (link matklad)
- two macro systems with a third coming up, srsly?
- and yet we're limited (no easy global registry, orphan rule, ...)
- orphan rule in general grr
- fossilized cargo, serde, ...
- no build artifacts support -> xtask, cargo make etc, gotta know, less dogfooding, more complicated build, break potential
- codegen is a fuck
- nested workspaces wtf (ferrous blog)
- IDE experience (embedded - vs. cube ide, arduino etc)
- async
- drop
- ergonomics
- generics
- lifetime proliferation
- bizarre difficulty (avu split, axum handlebars -but mention warp-, web-sys o m g)
target/
spam- no dyn stdlib, large binaries
- refactoring kinda bleh (move lots of stuff to another module)