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 🙂

  • @SorteKaninOPA
    link
    English
    4
    edit-2
    3 months ago

    I usually get issues with the borrow checker as soon as I move things around.

    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.

    it’s complicated to get the lifetimes correct too

    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 :)