Hey!
I’m a professional software engineer with several years of experience using Rust. Unfortunately I don’t really have the time to contribute to Lemmy directly myself, but I love teaching other people Rust so if:
- You are curious about Rust and why you should even learn it
- You are trying to learn Rust but maybe having a hard time
- You are wondering where to start
- You ran into some specific issue
… or anything to do with Rust really, then feel free to ask in the comments or shoot me a PM 🙂
I think its quite difficult to write Rust. I can get something working but any refactoring is a pain, and I usually get issues with the borrow checker as soon as I move things around.
And it’s complicated to get the lifetimes correct too. I feel like it’s just a lot of effort, and not very fun to put so much time into figuring out Rust rather than what my program should do.
But if I stick with it, it will probably become second nature. It’s just a very annoying language sometimes because of the mental gymnastics.
I switched to go and produced two full programs in a few weekends. It’s just so much faster to write. Of course I could have bugs in those programs that Rust wouldn’t allow. So I see the upside of Rust but it’s just hard.
Once you get familiar with thinking in terms of the borrow checker (i.e. thinking in terms of how data can be safely accessed essentially), you’ll be more at ease and you’ll start building stuff from the start in ways that anticipate many of the issues you might run into. That’s my experience at least.
You “just” need to consider how you structure and access the data in your program. If you’ve used languages with garbage collectors a lot before, you’re not used to thinking like that because the garbage collector just accepts whatever structure you give it and says “well I guess I’ll have to make it work somehow, someway (with a lot of effort)”.
You’ll find that once you structure your program in a way that the Rust compiler likes, it also becomes a lot easier to reason about it in general. A garbage collector won’t “force” you to structure your program well in this way, which is why that kind of memory management often becomes messy when it scales to more than a few thousand lines of code.
Just having the right editor setup and such can also help a lot for productivity.
Lifetimes is an advanced topic that you mostly don’t need when you’re starting out. It can often be avoided by sacrificing some small performance, for instance by cloning data. But lifetimes are also a very cool feature, it just takes a bit to understand it well. Once you get it, it’s not so bad though.
If you have any more specific questions about what you were trying to build or what errors you ran into, feel free to ask :)