ExpertiDict

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

higher-ranked trait bound

/ˈhaɪɚ ræŋkt treɪt baʊnd/substantivo

Limite de trait com for<'a> que vale para qualquer lifetime, e não para um específico. Necessário quando uma closure aceita referências de vida arbitrária.

Onde usar

Surge em bounds como F: for<'a> Fn(&'a str) -> &'a str e em erros de closures com referências. Na maioria dos casos, o compilador escreve o for<'a> sozinho.

Em código

fn aplica<F>(f: F) -> usize
where
  F: for<'a> Fn(&'a str) -> &'a str,
{
  f("abc").len()
}
let n = aplica(|s| &s[1..]);
println!("{n}");

Exemplos

That closure needs a higher-ranked trait bound.

Essa closure precisa de um higher-ranked trait bound.

HRTBs show up in Fn bounds with references.

HRTBs aparecem em bounds de Fn com referências.

Cuidado

Não é um parâmetro genérico comum: o lifetime não é fixado pelo chamador, quem decide é a função a cada chamada interna.

Sinônimos

HRTB

Veja também

Todos os termos de Rust