In the Pin and suffering article the author fasterthanlime explains how to implement async functions in Rust. The article starts by implementing an async function and the problem of calling blocking functions. It continues with instructions how working with
Unpin futures. At the end the article explains how all of the above can be done without using the syntactic sugar of async functions.