←back to thread

452 points birdculture | 3 comments | | HN request time: 0.013s | source
Show context
woah ◴[] No.43979099[source]
Does anyone still have trouble learning Rust? I thought that was kind of a 2015 thing
replies(6): >>43979158 #>>43979518 #>>43980144 #>>43980244 #>>43981227 #>>43985955 #
mre ◴[] No.43979158[source]
The thing is, once you internalized the concepts (ownership, borrowing, lifetimes), it's very hard to remember what made it difficult in the first place. It's "curse of knowledge" in some sense.

What's changed since 2015 is that we ironed out some of the wrinkles in the language (non-lexical lifetimes, async) but the fundamental mental model shift required to think in terms of ownership is still a hurdle that trips up newcomers.

replies(1): >>43979201 #
1. echelon ◴[] No.43979201[source]
100%. Newcomers still struggle a bit, especially if they've never used C/C++ before.

A good way to get people comfortable with the semantics of the language before the borrow checker is to encourage them to clone() strings and structs for a bit, even if the resulting code is not performant.

Once they dip their toes into threading and async, Arc<Lock<T>> is their friend, and interior mutability gives them some fun distractions while they absorb the more difficult concepts.

replies(1): >>43979267 #
2. mre ◴[] No.43979267[source]
Do you mean `Arc<Mutex<T>>`? Yeah, I agree. Wrote a blog post on that topic as well: https://corrode.dev/blog/prototyping/ The title is a bit of a misnomer, but it's about beginner-friendly escape hatches in the language. Perhaps it's useful to newcomers.
replies(1): >>43979708 #
3. echelon ◴[] No.43979708[source]
Any lock, but that's generally the best choice.

Great post! It's got a ton of advice for being productive, and it should be especially useful for beginners.