ConversÔes

O Rust não tem conversÔes de tipo implícitas, mas suporta conversÔes explícitas com as. Essas geralmente seguem a semùntica de C onde elas são definidas.

fn main() {
    let value: i64 = 1000;
    println!("como u16: {}", value as u16);
    println!("como i16: {}", value as i16);
    println!("como u8: {}", value as u8);
}

Os resultados de as são sempre definidos no Rust e consistentes em todas as plataformas. Isso pode não corresponder à sua intuição para alterar o sinal ou converter para um tipo menor - verifique a documentação e comente

Converter com as é uma ferramenta relativamente afiada que é fåcil de usar incorretamente e pode ser uma fonte de bugs sutis à medida que o trabalho de manutenção futuro altera os tipos que são usados ou os intervalos de valores nos tipos. As conversÔes são melhores usadas apenas quando a intenção é indicar truncamento incondicional (por exemplo, selecionar os 32 bits inferiores de um u64 com as u32, independentemente do que estava nos bits altos).

Para conversĂ”es infalĂ­veis (por exemplo, u32 para u64), prefira usar From ou Into em vez de as para confirmar que a conversĂŁo Ă© de fato infalĂ­vel. Para conversĂ”es falĂ­veis, TryFrom e TryInto estĂŁo disponĂ­veis quando vocĂȘ deseja lidar com conversĂ”es que se encaixam de maneira diferente daquelas que nĂŁo se encaixam.

This slide should take about 5 minutes.

Considere fazer uma pausa apĂłs este slide.

as Ă© semelhante a um cast estĂĄtico do C++. O uso de as em casos em que os dados podem ser perdidos geralmente Ă© desencorajado, ou pelo menos merece um comentĂĄrio explicativo.

Isso Ă© comum na conversĂŁo de inteiros para usize para uso como Ă­ndice.