• Kamikaze Rusher@lemmy.world
    link
    fedilink
    arrow-up
    14
    ·
    1 year ago

    This is my experience every time I return to learning rust. I’m guessing that if I used it more often than once a quarter with hobby projects I’d stop falling into the same traps.

    • Ephera@lemmy.ml
      link
      fedilink
      English
      arrow-up
      7
      ·
      1 year ago

      Yeah, these become a lot less relevant with routine.

      • Avoiding the main-thread panicking is mostly just a matter of not using .unwrap() and .expect().

      • String vs. &str can mostly be solved by generally using owned datatypes (String) for storing in structs and using references (&str) for passing into function parameters. It does still happen that you forget the & at times, but that’s then trivial to solve (by just adding the &).

      • “temporary value dropped while borrowed” can generally be avoided by not passing references outside of your scope/function. You want to pass the owned value outside. Clone, if you have to.

      • “missing lifetime specifier” is also largely solved by not storing references in structs.

      • Kamikaze Rusher@lemmy.world
        link
        fedilink
        arrow-up
        5
        ·
        1 year ago

        The last two points are the kind of design advice I need to see. I’m probably so used to the C/C++ concept of passing by reference to prevent copies of complex data being generated that I forget how Rust’s definition of a reference is different.