Rust · Avançado · Inglês · Técnico
deref coercion
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 &strExemplos
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