Rust是强类型语言。
Rust类型装换的所用到的trait在std的convert模块。
trait:
- AsRef
- AsMut
- From
- Into
- TryFrom
- TryFrom
AsRef/AsMut是引用到引用的转化。
这里我们只谈from和into,普通值的转化。
from和into只需要实现一个,对应的另一个trait自动实现。
实现from需要一个函数。
定义如下:
fn from(T) -> Self
实现into需要一个函数。
定义如下:
fn into(self) -> T
这两个函数的定义都不难。
我们来看标准库中一个实现。
impl From<bool> for i32
fn main() {let a = true;// a = truelet b = i32::from(true);// b = 1let c: i32 = true.into();println!("{}", a);println!("{}", b);println!("{}", c);}
impl from
代表T变成u。不代表u能变成T。
tryfrom代表装换可能不成功。
rust还支持as关键字进行类型装换。
as支持的操作:
- 基本类型的转化
- 地址和指针的装化。
