ExpertiDict

Rust · Avançado · Português · Técnico

async fn em trait

/a.ˈsĩk ˈfɐ̃ ẽ ˈtɾej.t͡ʃi/substantivo

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

Veja também

Todos os termos de Rust