如何通过另一个特征扩展 IntoIterator?
How to extend IntoIterator by another trait?
我正在尝试定义一个扩展 IntoIterator 的特征,以实现类似于下面代码的功能,但是“关联类型默认值不稳定”(https://github.com/rust-lang/rust/issues/29661)。
还有其他方法可以实现吗?
pub trait MyTrait : IntoIterator{
type Item = i32;
fn foo(&self);
}
pub fn run<M: MyTrait>(my : M){
my.foo();
for a in my {
println!("{}", a);
}
}
我想你想要的是这个:
trait MyTrait: IntoIterator<Item = i32> {
fn foo(&self);
}
这意味着:所有实现了你的特征的东西也实现了 IntoIterator
,其中 Item
是 i32
。或者换句话说:MyTrait
的所有实现者也可以变成 i32
上的迭代器。
我正在尝试定义一个扩展 IntoIterator 的特征,以实现类似于下面代码的功能,但是“关联类型默认值不稳定”(https://github.com/rust-lang/rust/issues/29661)。
还有其他方法可以实现吗?
pub trait MyTrait : IntoIterator{
type Item = i32;
fn foo(&self);
}
pub fn run<M: MyTrait>(my : M){
my.foo();
for a in my {
println!("{}", a);
}
}
我想你想要的是这个:
trait MyTrait: IntoIterator<Item = i32> {
fn foo(&self);
}
这意味着:所有实现了你的特征的东西也实现了 IntoIterator
,其中 Item
是 i32
。或者换句话说:MyTrait
的所有实现者也可以变成 i32
上的迭代器。