this post was submitted on 25 Sep 2023
32 points (97.1% liked)

Rust

5980 readers
109 users here now

Welcome to the Rust community! This is a place to discuss about the Rust programming language.

Wormhole

!performance@programming.dev

Credits

  • The icon is a modified version of the official rust logo (changing the colors to a gradient and black background)

founded 1 year ago
MODERATORS
 

All these posts about async are making the freedom to choose our runtime seem like a bad thing.

For most people, we can just accept Tokio as the de facto standard, and everything is good. Having the other runtimes only makes things better. Don't do anything weird and it won't be too much work if you need to change.

Any big change you miss is bound to either be implemented in Tokio or be too different for any abstraction to save you from the work.

If you're writing a library that you want to be reusable by everyone, I understand your frustration that it's not easier to make it universal for all async runtimes. You can still choose one, minimize the code you would have to change to implement others, and appreciate that in almost every other programming language you don't get more than one async engine anyway.

top 5 comments
sorted by: hot top controversial new old
[–] modulus@lemmy.ml 8 points 1 year ago (2 children)

The way I look at this is I have a reasonable understanding of rust. I'm not an expert but I can more or less do whatever computation I need to do, use crates, and so on. But with async it's like learning another language. Somewhat of an exaggeration, but it's not just what code you need to write, but also being able to read the error messages from the compiler, understanding the patterns and so on. So yes, it's probably fine, but it does take work.

[–] hoodle@programming.dev 1 points 1 year ago

It takes work for sure, but admittedly I didn't find it that much of an undertaking. I'm writing a highly-parallelized 3d game engine with async/await. Am up to a few thousand lines and it's running very efficiently.

It's been pretty care-free so far. The biggest pain-point was starting before async traits were stabilized. I think a lack of good instructional material is what has hindered it the most.

Yes, the ergonomics sucks. But to be fair, Rust's ergonomics kind of suck too, especially when you do anything remotely complicated. Unfortunately, I think that's just a natural consequence of Rust's memory safety guarantees.

So yeah, it's probably fine, and maybe it can't be much better, but it still kind of sucks to use (esp. if you're new to it).

[–] pileghoff@programming.dev 6 points 1 year ago

I think this is enviable with low level languages. You simply can't abstract away as many things.

[–] anlumo@feddit.de 6 points 1 year ago* (last edited 1 year ago)

I stopped worrying about this when I had a project with two async runtimes (tokio and bastion) and it worked fine without any special setup.