this post was submitted on 03 Oct 2024
40 points (87.0% liked)
Programming
17432 readers
224 users here now
Welcome to the main community in programming.dev! Feel free to post anything relating to programming here!
Cross posting is strongly encouraged in the instance. If you feel your post or another person's post makes sense in another community cross post into it.
Hope you enjoy the instance!
Rules
Rules
- Follow the programming.dev instance rules
- Keep content related to programming in some way
- If you're posting long videos try to add in some form of tldr for those who don't want to watch videos
Wormhole
Follow the wormhole through a path of communities !webdev@programming.dev
founded 1 year ago
MODERATORS
you are viewing a single comment's thread
view the rest of the comments
view the rest of the comments
Rust. It's a qualitative improvement over the old ways.
The future won't belong to Rust itself, but one of its descendants. Rust is too clunky to be the ultimate expression of its best ideas.
In what ways do you feel Rust is too clunky and how do you think it could be improved? Not looking to argue or even disagree necessarily; I'm just curious where that perspective comes from.
Here's some of my personal complaints. I don't in general know how to fix them.
proc_macros need their own crate
generics cause problems. Many useful macros can't handle them. Try using a generic that's a complex async function, then pass a closure to it.
There's this kind of weird mismatch where sometimes you want an enum wrapping various types, and in others generics. I find my data flows switching back and forth.
async in rust is actually really good, but go does it better. I don't think rust could match go without becoming a different language.
Traits are just a big mess. Trait implementations with generics have to be mutually exclusive, but there aren't any good tools to make them so. The orphaned trait rule is necessary to keep the language sane but is incredibly restricting. Just today I find certain a attribute macros for impls that doesn't work on trait impls. I guess I have to write wrappers for every trait method.
The "new type" pattern. Ugh. Just make something like a type alias that creates a distinct type. This one's probably easy to fix.
Cargo is truly great, but it's a mystery to me right now how I'm going to get it to work with certain packaging systems.
To me, Rust is a bunch of great pieces that don't fit together well.
That might change over time.