Hacker News new | ask | show | jobs
by adastra22 604 days ago
Here's the thing though: Rust could have every function be an async state machine, automatically. And then the compiler optimizes away that code when it isn't needed. It would be a big pain to implement, but it's doable, and it would deliver a developer experience much closer to Go's. There isn't a technical reason for why Rust couldn't do this.

FYI you can't poll an async result in a sync context in Rust, either.

2 comments

> There isn't a technical reason for why Rust couldn't do this.

First, it would be a huge undertaking. That in itself is a huge time/resource burden.

Second, it would add overhead to any non-async function call. Because async introduces branching on every function invocation, it would make the resulting assembly even harder to understand. This strongly goes against the zero overhead/ zero cost abstraction idea of Rust.

By the same measure, Go could technically remove (almost) all GC, add some kind of borrowing mechanism and steal Rust's thunder.

> FYI you can't poll an async result in a sync context in Rust, either.

Sure you can. Async runtimes in Rust are written in Rust, that's exactly what they do.