From a language architecture standpoint and not an ecosystem standpoint, what might be some things where you’d really not want to use Rust, either because of some limitation that prevents it from doing it or just because it’d be massively annoying to write to the point of significantly reduced productivity? What about Rust makes it unsuitable, and what language paradigms are the best for it?

I hear a lot about how the things that Rust is not good for, JIT compilation with a garbage collector is usually the best solution, and vice versa. How true is this?

  • Ephera
    link
    fedilink
    arrow-up
    8
    ·
    3 years ago

    Yeah, GUIs in general are messy, almost by necessity. And Rust has a strong focus on correctness, which does not mesh well with messy.

    As an example, it happens that you don’t yet have a certain value that’s supposed to be shown in the GUI, but it also doesn’t matter, because that GUI element isn’t actually visible yet.
    In many typical frontend languages, you would set that to null and be done with it. Rust doesn’t have null and while you can make everything an Option-type, that’s relatively clunky, for how commonly you need such a workaround.

    Obviously, though, constantly throwing around null isn’t great either. The compiler cannot help you at all anymore.
    So, I am still hoping that a new paradigm emerges out of all of this, which is better for GUIs in any language. Basically put more thought into actually resolving the issue, rather than standardizing on the dirtiest workaround.

      • pinknoise
        link
        fedilink
        arrow-up
        6
        ·
        edit-2
        3 years ago

        Option is rust’s null. And matches are everywhere because of it.

        And if let’s - so what?

        C++ makes working with null pointers so beautiful.

        How? You still have to check wether it’s NULL or not.

        Businesses want reliable software

        No they want quick turnaround, so they can make more profit. Thats the opposite of reliable software. Thats why most commercial software is such a buggy mess.

        • southerntofu
          link
          fedilink
          arrow-up
          3
          ·
          3 years ago

          How? You still have to check wether it’s NULL or not.

          I think that’s the parent’s point: in C/C++ you don’t have to deal with null. You can just pass it around and potentially start unintended/undefined behavior. While in Rust, it’s a compile-time error if you don’t unwrap the option somehow (eg. if let Some(content) = optional_content).

          So yes it’s more concise and “beautiful”, but you’ll probably bite your own hand at some point playing this game

          • pinknoise
            link
            fedilink
            arrow-up
            3
            ·
            3 years ago

            How is it more beautiful? You have to deal with null pointers when you want to use the pointer anyway, if you don’t you will get a runtime error, or worse, your program will keep running in an unintended state.

            • southerntofu
              link
              fedilink
              arrow-up
              2
              ·
              3 years ago

              yes, that was exactly my point. You can just use a pointer without checking it, which is aesthetically more pleasing, but will produce garbage :)

      • Ephera
        link
        fedilink
        arrow-up
        3
        ·
        3 years ago

        I mean, for what it’s worth, my own definition of ‘beautiful code’ includes the properties “reliable” and “human-readable/-writable”. I do not like clever code or code that hides errors away.

        I do work in a company, not in academia, but even for my personal projects, that’s my goal. It’s just a necessity when you want to collaborate with others or your future self.