Futures
Future
é um traço, implementado por objetos que representam uma operação que pode ainda não estar completa. Uma future pode ser polled, e poll
retorna um Poll
.
Uma função async retorna um impl Future
. Também é possível (mas pouco comum) implementar Future
para seus próprios tipos. Por exemplo, o JoinHandle
retornado de tokio::spawn
implementa Future
para permitir juntar-se a ele.
A palavra-chave .await
, aplicada a uma Future, faz com que a função assíncrona atual pause até que essa Future esteja pronta, e então avalia para sua saída.
Speaker Notes
This slide should take about 4 minutes.
-
Os tipos
Future
ePoll
são implementados exatamente como mostrado; clique nos links para mostrar as implementações na documentação. -
Não chegaremos a
Pin
eContext
, pois nos concentraremos em escrever código async, em vez de construir novas primitivas async. Brevemente:-
Context
permite que uma Future agende-se para ser polled novamente quando um evento ocorre. -
Pin
garante que a Future não seja movida na memória, para que os ponteiros para essa future permaneçam válidos. Isso é necessário para permitir que as referências permaneçam válidas após um.await
.
-