ExpertiDict

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

deref coercion

/dɪˈrɛf koʊˈɜːɹʒən/substantivo

Conversão automática de &T em &U quando T implementa Deref<Target = U>, aplicada em cadeia. É por isso que &String vira &str, e &Box<String> também.

Onde usar

Explica por que uma função que pede &str aceita &String sem cast. Também faz os métodos do alvo aparecerem em smart pointers como Box e Rc.

Em código

fn tam(s: &str) -> usize { s.len() }
let dono = String::from("oi");
let caixa = Box::new(String::from("abc"));
println!("{}", tam(&dono));
println!("{}", tam(&caixa));
// &String e &Box<String> viram &str

Exemplos

Deref coercion turns &String into &str.

A deref coercion transforma &String em &str.

That call works thanks to deref coercion.

Essa chamada funciona graças à deref coercion.

Cuidado

Só ocorre onde o tipo esperado é conhecido, como em argumentos; em contextos genéricos a coerção não acontece.

Sinônimos

coerção por Deref

Veja também

Todos os termos de Rust