Kor*_*nel 3 iterator traits rust
Rust似乎不区分特征的不同实现,只要它们因关联类型而不同.
如何在所有类型的集合/迭代器上实现一个方法,但是它们包含的每个具体类型都有特定的实现?
错误:特征的冲突实现
Foo[E0119]
代码:
trait Foo { fn foo(self); }
impl<T> Foo for T
where T: IntoIterator<Item=u32>
{
fn foo(self) {
self.into_iter();
}
}
impl<T> Foo for T
where T: IntoIterator<Item=u16>
{
fn foo(self) {
self.into_iter();
}
}
fn main() {
vec![0u32].foo();
vec![0u16].foo();
}
Run Code Online (Sandbox Code Playgroud)
您不能直接执行通用表单,这是问题#20400.您必须引入可用作T::Item合并两个实现的绑定的特征,或者包装类型.例如,第一个看起来像:
trait FooIterItem {
// behaviours needed for Foo impl
}
impl FooIterItem for u32 { ... }
impl FooIterItem for u16 { ... }
impl<T> Foo for T
where T: IntoIterator, T::Item: FooIterItem
{
...
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
126 次 |
| 最近记录: |