情况:
我有这样一种情况,我想在函数参数上调用一些定义在Iterator
特性上的方法。我想要调用它的函数接受一个名为VecLike
的trait
类型参数。该函数名为get_all_matching_rules
。
get_all_matching_rules
可以接收一个Vec
或者另外一个类似自制类型的参数,后者也实现了Iterator
。当然这两个都实现了VecLike
。我考虑在VecLike
上添加一个函数,使其返回一个Iterator
,以便在get_all_matching_rules
中使用它。
如果我的参数名为:matching_rules
,那么我就可以这样做:matching_rules.iter().filter(
.
问题:
如何从Vec
中返回一个非消费性迭代器?
我想能够在类型为Iterator<T>
的Vec<T>
上返回一个非消费性迭代器。我不想通过调用.iter()
来迭代项目。
如果我有(其中self是一个Vec):
fn iter<'a>(&'a self) -> Iterator<T> {
self.iter()
}
I get the following error:
error: mismatched types: expected `core::iter::Iterator<T>+'a`, found `core::slice::Items<'_,T>` (expected trait core::iter::Iterator, found struct core::slice::Items)
我希望返回 Iterator<t>
。如果有比返回 Iterator
更好的方法,欢迎提出。