Rust · Avançado · Português · Técnico
async fn em trait
Recurso estável desde o Rust 1.75 que permite declarar async fn dentro de traits e implementá-las, dispensando a crate async-trait na maioria dos casos.
Onde usar
Aparece em abstrações assíncronas de I/O e de repositórios. Para usar o trait como dyn ainda é preciso um box manual ou a crate async-trait.
Em código
trait Fonte {
async fn busca(&self) -> u32;
}
struct Fixa;
impl Fonte for Fixa {
async fn busca(&self) -> u32 { 7 }
}Exemplos
Agora dá para declarar async fn direto no trait.
Para dyn Trait ainda uso a crate async-trait.
Cuidado
Em contextos genéricos, a future devolvida não é Send por padrão; para tokio::spawn costuma ser preciso declarar esse bound.
Sinônimos
async fn in trait