天天看点

014 Rust死灵书之显式类型转换

介绍

知识点

  • 显式类型转换是强制类型转换的超集,所有的强制类型转换都可以通过显式转换的方式主动触发。某些场景只适用于显式类型转换。
  • 显式类型转换的方式是使用关键字as,如:expr as Type。
  • 显式类型转换必须在类型层面是合法的,否则在编译时会报错。
  • 显式类型转换本身不属于非安全行为。
  • 显式类型转换不可传递,例子:x as y as z合法,不代表x as z合法。
  • 其它注意事项。

示例

fn print(x: &i32) { //传入进入的时候会发生转换   &mut i32 -> &i32
    println!("x = {}", x);
}

fn main() {
    let x: &mut i32 = &mut 10;
    print(x);
    print(x as &i32);  //转换也可以通过显式的方式主动触发

    let a: i8 = 1;
    let b: i32 = a as i32;
    println!("b = {}", b);
    println!("Hello, world!");
}