gpt4 book ai didi

Rust:在结构中持有过滤器

转载 作者:行者123 更新时间:2023-11-29 08:06:54 30 4
gpt4 key购买 nike

我正在尝试创建一个内部带有 Filter 迭代器的结构:

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

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

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

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

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

谢谢!

最佳答案

可以看到here 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>
}

但是,您仍然需要传递 'aT,因为它们很可能是任意的。

关于Rust:在结构中持有过滤器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25635729/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com