← Back to context

Comment by imadr

4 days ago

I haven't used Rust extensively so I can't make any criticism besides that I find compilation times to be slower than C

I find with C/++ I have to compile to find warnings and errors, while with Rust I get more information automatically due to the modern type and linking systems. As a result I compile Rust significantly less times which is a massive speed increase.

Rusts tooling is hands down better than C/++ which aids to a more streamlined and efficient development experience

  • > Rusts tooling is hands down better than C/++ which aids to a more streamlined and efficient development experience

    Would you expand on this? What was your C tooling/workflow that was inferior to your new Rust experience?

    • Not the GP, but the biggest one is dependency management. Cargo is just extremely good.

      As for the language tooling itself, static and runtime analyzers in C and C++ (and these are table stakes at this point) do not come close to the level of accuracy of the Rust compiler. If you care about writing unsafe code, Miri is orders of magnitude better at detecting UB than any runtime analyzer I've seen for C and C++.

      4 replies →

The popular C compilers are seriously slow, too. Orders of magnitude compared to C compilers of yesteryear.

I also hear that Async Rust is very bad. I have no idea; if anyone knows, how does async in Rust compare to async in C++?

  • > I also hear that Async Rust is very bad.

    Not sure where this is coming from.

    Async rust is amazing as long as you only mix in one more hard concept. Be it traits, generics or whatever. You can confidently write and refactor heavily multithreaded code without being deathly afraid of race conditions etc. and it is extremely empowering.

    The problem comes when trying to write async generic traits in a multithreaded environment.

    Then just throwing stuff at the wall and hoping something sticks will quickly lead you into despair.

  • I am yet to use async in c++, but I did work on a multi threaded c++ project for a few years

    Rust is nicer for async and MT than c++ in every way. I am pretty sure.

    But it's still mid. If you use Rust async aggressively you will struggle with the borrow checker and the architecture results of channel hell.

    If you follow the "one control thread that does everything and never blocks" you can get far, but the language does not give you much help in doing that style neatly.

    I have never used Go. I love a lot of Go projects like Forgejo and SyncThing. Maybe Go solved async. Rust did not. C++ did not even add good tagged unions yet.

    • Go (at least before generics) was really annoying to use.

      Doing anything concurrent in Go is also really annoying (be that async or with threads), because everything is mutable. Not just by default but always. So anything shared is very dangerous.