
简单来说,讲的就是类型转换的事情。无论是From还是Into,方向一定是从类型A转向类型B,只不过讨论的主体不一样。
Into讲的是怎么从A变成B,所以有一个A,A自己调用 Into B,变成了B。
// 为A实现Into traitimpl Into<B> for A{fn into(self){/*...*/}}// 调用let a:A = A{/*...*/};let b:B = a.Into();
From讲的是B怎么通过一个A,求解而来,求解的方法是预先定义好的,这算是B的关联方法。
// 为B实现From traitimpl From<A> for B{fn from(a:A){/*...*/}}// 调用let a:A = A{/*...*/};let b:B = B::from(a);
有趣的是无论实现了From或者Into,Rust都会自动帮助我们补全另一部分。
