Get the latest tech news

Async from scratch 3: Pinned against the wall


So, we've covered polling. We've tackled sleeping (and waking). Going back to the definition, that leaves us with one core concept left to conquer: <em>pinning</em>!

Back in the ancient days of a-few-weeks-ago, I showed how we can translate any async fn into a state machine enum and a custom Future implementation. A Pin wraps a mutable reference of some kind (&mut T, Box<T>, and so on), but restricts us (in the safe API) to and replacing the value entirely, without the ability to move things out of it (or to mutate only parts of them). TrickOrTreat is safe and self-contained (as long as you only construct ::Init), but DemandTreat and PlayTrick are not, since they contain unmanaged raw pointers that could end up dangling.

Get the Android app

Or read this on Hacker News

Read more on:

Photo of Scratch

Scratch

Photo of Wall

Wall

Photo of async

async

Related news:

News photo

That fractal that's been up on my wall for years

News photo

A simple search engine from scratch

News photo

Llama from scratch (2023)