Into的本质是调用了From Trait 的方法。
From是底层的方法,把From实现了,Into的实现,编译器会自动根据From Trait生成Into Trait的代码
编译器自动类型推导出Into Trait的U的类型,调用了U类型的From的方法,实现其他类型转换本类型
fn main()->(){let x = ("".to_string(), 3);//编译器自动类型推导出Into Trait的U的类型,调用了U类型的From的方法// 不想给变量写类型let x1=Into::<Person>::into(x);// 给变量写类型let x1 :Person= x.into();println!("{}",x1.age)
}
// 定义一个简单的结构体
struct Person {name: String,age: u32,
}// 为Person实现From trait,用于从元组转换为Person对象
impl From<(String, u32)> for Person {fn from(tuple: (String, u32)) -> Self {Person {name: tuple.0,age: tuple.1,}}
}
不同点:A转换B类型,为A实现From Trait,那么编译器就为B实现Into
两个的Trait的功能都是转换B类型,而不是A转换B,B转换A