孤儿规则 orphan rule

要为类型 A 实现特征 T,那么 A 或者 T 必须至少有一个在当前的作用范围内。

如果想要实现 impl From<MyType> for Vec<i32>。虽然FromVec都属于外部,虽然违反了孤儿规则,但这种实现是被允许的,毕竟标准库也不可能得到 MyType类型。

以下实现都是被允许的:

impl<T> From<T> for MyType
impl<T> From<T> for MyType<T>
impl<T> From<MyType> for Vec<T>
impl<T> ForeignTrait<MyType, T> for Vec<T>

以下实现是非法的:

impl<T> ForeignTrait for T
impl<T> From<T> for T
impl<T> From<Vec<T>> for T
impl<T> From<MyType<T>> for T
impl<T> From<T> for Vec<T>
impl<T> ForeignTrait<T, MyType> for Vec<T>