Casting is a mechanism of downgrading or upgrading a type to some other type. When the casting happens implicitly, it is called coercion. Rust also allows for casting types at various levels. The very obvious candidates are primitive numeric types. You may have the need to cast a u8 type to promote to u64 or to truncate i64 to i32. To perform trivial casts, we use the as keyword, like so:
let a = 34u8;
let b = a as u64;
It's not only primitive types—casting is supported at higher-level types too. We can also cast a reference of a type to its trait object, if it implements that particular trait. So we can do something like the following:
// cast_trait_object.rs
use std::fmt::Display;
fn show_me(item: &Display) {
println!("{}", item);
}
fn main() {
let a = "hello".to_string();
let b = &a;
show_me(b);
// let c...