async/await
The previous example could simply be written as the following using async/await
keywords:
async fn async_main() { println!("Program starting") let txt = Http::get("/1000/HelloWorld").await; println!("{txt}"); let txt2 = Http::("500/HelloWorld2").await; println!("{txt2}"); }
That’s seven lines of code, and it looks very familiar to code you’d write in a normal subroutine/function.
It turns out that we can let the compiler write these state machines for us instead of writing them ourselves. Not only that, we could get very far just using simple macros to help us, which is exactly how the current async/await
syntax was prototyped before it became a part of the language. You can see an example of that at https://github.com/alexcrichton/futures-await.
The downside is of course that these...