Rust是强类型语言。
Rust类型装换的所用到的trait在std的convert模块。
trait:

  • AsRef
  • AsMut
  • From
  • Into
  • TryFrom
  • TryFrom

AsRef/AsMut是引用到引用的转化。
这里我们只谈from和into,普通值的转化。
from和into只需要实现一个,对应的另一个trait自动实现。

实现from需要一个函数。

定义如下:

  1. fn from(T) -> Self

实现into需要一个函数。

定义如下:

  1. fn into(self) -> T

这两个函数的定义都不难。
我们来看标准库中一个实现。

  1. impl From<bool> for i32
  1. fn main() {
  2. let a = true;
  3. // a = true
  4. let b = i32::from(true);
  5. // b = 1
  6. let c: i32 = true.into();
  7. println!("{}", a);
  8. println!("{}", b);
  9. println!("{}", c);
  10. }

impl from for u。
代表T变成u。不代表u能变成T。
tryfrom代表装换可能不成功。
rust还支持as关键字进行类型装换。
as支持的操作:

  • 基本类型的转化
  • 地址和指针的装化。