冲突的特质实施

时间:2017-11-04 14:58:28

标签: rust traits

我有以下一对实现(playground link):

pub struct Foo<T> {it: T}

impl<T: IntoIterator> From<T> for Foo<T::IntoIter> {
    fn from(x: T) -> Foo<T::IntoIter> {
      Foo { it: x.into_iter() }
    }
}

use std::str::Chars;
impl From<&'static str> for Foo<Chars<'static>> {
    fn from(x: &'static str) -> Foo<Chars<'static>> {
        Foo { it: x.chars() }
    }
}

我得到了conflicting implementations error但我不明白为什么。据我所知,第一个通用impl无法涵盖From<&'static str>,因为&str 实现IntoIterator

编译器不够聪明,无法弄明白吗?是否有原因这不应该被允许(例如,一个深奥的孤儿规则)?有办法吗?

0 个答案:

没有答案