• 1 Post
  • 50 Comments
Joined 2 years ago
cake
Cake day: June 25th, 2023

help-circle

  • I think they way most people see it is that anyone in their right mind has a point where murder is okay. WWII, for example - the vast majority of people understand it was okay to kill Nazis. The context was that the world had no choice but to go to war with them. It was either kill or be killed.

    We’re in the same situation here in the United States. Our political system is broken. Politicians are bought and sold by the 1%, and they will continue to kill us en masse no matter how many peaceful protests we join and whoever we vote for.









  • Yeah, at this point I’m talking about Rust’s fit as a general purpose language and being good at refactoring. I think Rust is great for both of those and that it isn’t very subjective.

    But regarding Rust for game dev, I have no idea. I have never done game dev, so it’s definitely possible it isn’t good for it for some reason.

    I’m also saying scripting languages will break very easily when you refactor things. I didn’t think that was that controversial…



  • Ive used Rust professionally for six years now and have done many quick hacks. It is really easy to do. Basically just don’t use references / clone everything to avoid lifetime and ownership issues, and use unwrap everywhere to avoid proper error handling. It’s really that easy almost all the time.

    The nice thing about that is once you’re done with the prototype, just remove the unwraps and you can optimize stuff by removing the clones.


  • The borrow checker is useful for a lot more than memory safety. This is something I have been repeating for years, but unfortunately people new to the language don’t understand it yet.

    E.g. Rust is the only mainstream language where it isn’t possible to read from a file handle after it’s been closed. There are numerous other common benefits of it that apply to general purpose programming, like not being able to mutate a collection while you’re iterating over it.

    It’s a very common practice in Rust to enforce domain invariants using Rust’s ownership rules, and those things cannot be enforced at compile time in other languages that don’t have ownership.

    The borrow checker is also usually pretty easy to get around with just a bit of experience in Rust.


  • What I’m curious about - this function was already const, so for stuff like this, I’d think there’s basically a 100% chance the compiler would optimize this too, just implicitly.

    AFAIK this new feature is just for times when it isn’t an optimization, but more your own domain invariants. E.g. assertions.

    But I could be wrong. I wonder if this can be used for actual optimizations in some places that the compiler couldn’t figure out by itself.



  • Rust is probably great for systems that don’t have a lot of changing requirements, but fast iteration and big changes probably aren’t its strong suit.

    I agreed up until this. Fearless refactoring is a huge benefit of Rust. If the type system of another language allows the refactoring more easily without as many compilation failures, it will probably surface more runtime bugs.




  • A lot of it is about moving problems from runtime to compile time. JS, for example, has most problems live in runtime.

    Imagine you’re hiring an event planner for your wedding. It’s an important day, and you want it to go well and focus on the things that matter to you. Would you rather hire an even planner that barely interacts with you up until the wedding because they’re so “easy to work with”? Or one that gets a ton of info and meets with you to make sure they can get everything they need as early as possible?

    Rust is like the latter. JS is like an even planner who is just lazy and says “we’ll cross that bridge when we come to it” all the time.

    C++ is like a meth addict.