The type system is great and gives extremely fast feedback. The performance wins are also incredible, it just feels like you're throwing 100s of megabytes of RAM away and 10x latency when you don't choose rust now, and for little reason. The testing tooling is really solid - property testing, fuzzing, mutation testing, etc, is all easy to use. Code structure with nice abstractions that don't become spaghetti is nice (traits, enums, etc). Static binaries as a production artifact is really nice. Supply chain story is pretty solid with cargo-vet.
It's hard to come up with anything where I think Rust isn't "best in class" other than compile times.
i think rusts composition is problematic. you can have two abstractions that if you mix them the outcomes are not what you expect unless you have a deep understanding of the details, (e.g. clone/iter) and rust is all about hiding details from you.
I really couldn't disagree more. Rust doesn't hide those details at all. APIs tend to be extremely explicit. I have never run into the issue you're describing in rust, I have run into it far more in other languages where mutability and sharing are implicit.
Comments
The type system is great and gives extremely fast feedback. The performance wins are also incredible, it just feels like you're throwing 100s of megabytes of RAM away and 10x latency when you don't choose rust now, and for little reason. The testing tooling is really solid - property testing, fuzzing, mutation testing, etc, is all easy to use. Code structure with nice abstractions that don't become spaghetti is nice (traits, enums, etc). Static binaries as a production artifact is really nice. Supply chain story is pretty solid with cargo-vet.
It's hard to come up with anything where I think Rust isn't "best in class" other than compile times.
i think rusts composition is problematic. you can have two abstractions that if you mix them the outcomes are not what you expect unless you have a deep understanding of the details, (e.g. clone/iter) and rust is all about hiding details from you.
I really couldn't disagree more. Rust doesn't hide those details at all. APIs tend to be extremely explicit. I have never run into the issue you're describing in rust, I have run into it far more in other languages where mutability and sharing are implicit.
the existence of iter is to hide implementation detsils from you.
I don't understand what you mean at all. Iter is just a trait. There's nothing special about it.