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 = true
let b = i32::from(true);
// b = 1
let c: i32 = true.into();
println!("{}", a);
println!("{}", b);
println!("{}", c);
}
impl from
代表T变成u。不代表u能变成T。
tryfrom代表装换可能不成功。
rust还支持as关键字进行类型装换。
as支持的操作:
- 基本类型的转化
- 地址和指针的装化。