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.