I decided to adventure myself in Tauri development for a personal project, I read the entire Rust official book and followed the exercises. When I first started developing it was like if nothing I learned helped for real life projects.

Now after getting betting up every single time I touch my project, it seems I’m catching things slowly.

But I’ve never seen such a hard modern language, I used C and C++ before and it’s incomparable.

  • FishFace@piefed.social
    link
    fedilink
    English
    arrow-up
    0
    ·
    20 hours ago

    It depends what you’re trying to do. Some data structures inherently do not work comfortably with a single-mutable-ownership model, and while they’re not exactly ubiquitous, they’re common enough. (My exposure to rust is through advent of code where they’re more common than in the real world).

    Rust doesn’t make it impossible, but you need to convert everything to Rc Refcell and there’s a load of annoying crusty boilerplate, so it is more difficult. And yes, the guards in those calls can prevent or expose nasty errors, but a lot of the time - in a simple app you’re writing to learn the language - the logic that keeps everything safe is so simple that an experienced programmer doesn’t even think about it, and then it’s confusing because it’s not clear what you’re being protected from :)

    • calcopiritus@lemmy.world
      link
      fedilink
      arrow-up
      0
      ·
      16 hours ago

      Do you really need that much Rc? That is, do you really need multiple ownership for a piece of data in a single thread? It is rarely the case, many times you can get away by just borrowing that data.

      ARc is harder to avoid, since across threads you often really need the multiple ownership.

      Next is, do you need RefCell? Or would a simple Cell in some of the struct fields be enough?

      • lad@programming.dev
        link
        fedilink
        English
        arrow-up
        0
        ·
        11 hours ago

        I recently picked up embedded in Rust and I often stumble upon the pattern of taking buffer references into structures, and I would want to pack the buffer and the struct that uses it together, but I don’t want to do self referential magic, so for now I keep buffers passed around everywhere

        • calcopiritus@lemmy.world
          link
          fedilink
          arrow-up
          0
          ·
          10 hours ago

          Yeah. That’s a huge issue rust has. However, it can’t be solved with Rc.

          You either do it in safe rust, by “cheating” the borrow checker and storing a size offset of the buffer instead of a reference. Or just use unsafe rust and store a raw pointer alongside the buffer.