Rust:在结构体内部保持一个Filter

时间:2014-09-03 03:19:40

标签: rust rust-0.11

我正在尝试使用Filter迭代器制作一个结构体:

struct Foo {
    inner_iter: Filter<...>,
}

然后我会让Foo成为迭代器本身,它将在内部使用过滤器。

问题是,我似乎无法弄清Filter之后括号之间的内容。文档说过滤器如下:

pub struct Filter<'a, A, T> {
    // some fields omitted
}

A似乎是我的回归类型。什么是'aT?我没有尝试让它编译。<​​/ p>

谢谢!

1 个答案:

答案 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}},因为它们可能是任意的。