【发布时间】:2021-07-11 10:20:06
【问题描述】:
我正在尝试使用自定义函数扩展 Iterator 特征:
pub trait CustomTrait<T> : Iterator<Item=T> where Self: Sized, Self: 'static {
#[inline]
fn custom_function(self) -> Result<Box<dyn Iterator>, Err> {
let boxed = Box::new(self);
do_something(boxed)
}
}
它编译正确。但是,当我在迭代器上调用我的新特征时,编译器会抱怨它没有为迭代器实现。 (我试过std::ops::Range和std::slice::Iter<'_, {integer}>。)
我能够使每个函数调用对单个结构类型起作用,如下所示:
impl CustomTrait<u64> for std::ops::Range<u64> {}
但是,我认为必须有一种方法可以让我的 trait 定义应用于所有 Iterable,而无需为每个实现 Iterable trait 的结构手动实现它。
【问题讨论】:
标签: rust