Rust · Intermediário · Inglês · Técnico
Future
Trait de um valor que representa um cálculo assíncrono ainda não terminado. Possui o método poll, que devolve Pending ou Ready(valor), e é preguiçoso: só avança quando consultado.
Onde usar
Toda função async devolve um tipo que implementa Future. O executor chama poll, e o Waker avisa quando vale a pena chamar de novo.
Em código
use std::future::{ready, Future};
fn dobra<F: Future<Output = u32>>(f: F)
-> impl Future<Output = u32> {
async move { f.await * 2 }
}
let fut = dobra(ready(21));
drop(fut); // Future não roda sozinhaExemplos
An async fn returns a Future.
Uma async fn devolve uma Future.
Futures are lazy until polled.
Futures são preguiçosas até sofrerem poll.
Cuidado
Diferente da Promise do JavaScript, uma Future do Rust não começa sozinha; sem .await ou spawn, nada acontece.
Sinônimos
promessa assíncrona
Origem
Do inglês future, 'futuro': um valor que existirá depois.