Rust · Avançado · Inglês · Técnico
higher-ranked trait bound
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