我想实现一个可在任何容器或迭代器上调用的泛型方法,该方法迭代特定类型,例如: &[u32]
,Vec<u32>
,(0..99u32)
等
The following code无法编译:
trait Foo { fn foo(self); }
impl Foo for std::iter::IntoIterator<Item=u32> {
fn foo(self) {}
}
错误:必须指定相关类型
IntoIter
的值(来自特征core::iter::IntoIterator
)[E0191]impl Foo for std::iter::IntoIterator<Item=u32> {
需要为IntoIter
相关类型指定什么? (std::iter::IntoIterator<Item=u32,IntoIter=???>
)
这样就可以了:
vec![0u32].foo()
答案 0 :(得分:3)
这里的正确语法是impl<T> SomeTrait for T where T: OtherTrait
。这有效:
trait Foo { fn foo(self); }
impl<T> Foo for T
where T: std::iter::IntoIterator<Item=u32>
{
fn foo(self) {}
}
fn main() {
vec![0u32].foo()
}