我正在尝试使用Filter
迭代器制作一个结构体:
struct Foo {
inner_iter: Filter<...>,
}
然后我会让Foo成为迭代器本身,它将在内部使用过滤器。
问题是,我似乎无法弄清Filter
之后括号之间的内容。文档说过滤器如下:
pub struct Filter<'a, A, T> {
// some fields omitted
}
A
似乎是我的回归类型。什么是'a
和T
?我没有尝试让它编译。</ p>
谢谢!
答案 0 :(得分:3)
您可以通过以下方式看到Filter
Iterator
实施impl<'a, A, T: Iterator<A>> Iterator<A> for Filter<'a, A, T>
特征:
A
这意味着是的,T
是其元素类型,Filter
是底层迭代器类型。如果查看'a
定义,您还会发现Filter
是谓词闭包环境的生命周期。
如果您想为struct CustomWrapper<'a, A, T> {
inner_iter: Filter<'a, A, T>
}
创建自己的包装器,它可能如下所示:
Filter
您需要将所有参数传递给struct CustomWrapper<'a, T> {
inner_iter: Filter<'a, int, T>
}
。当然,如果您正在使用某种特定的元素类型,则可以指定它而不是使用类型参数:
'a
但是,您仍需要传递T
和{{1}},因为它们可能是任意的。