Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/rust/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Rust 锈蚀:将过滤器固定在结构内_Rust_Rust 0.11 - Fatal编程技术网

Rust 锈蚀:将过滤器固定在结构内

Rust 锈蚀:将过滤器固定在结构内,rust,rust-0.11,Rust,Rust 0.11,我正试图创建一个内部带有过滤器迭代器的结构: struct Foo { inner_iter: Filter<...>, } A似乎是我的退货类型。什么是'a和T?我没有尝试编译它 谢谢 您可以看到,Filter通过以下方式实现了Iterator特性: impl<'a, A, T: Iterator<A>> Iterator<A> for Filter<'a, A, T> 您需要将所有参数传递到过滤器。当然,如果您使用的是某

我正试图创建一个内部带有
过滤器
迭代器的结构:

struct Foo {
    inner_iter: Filter<...>,
}
A
似乎是我的退货类型。什么是
'a
T
?我没有尝试编译它

谢谢

您可以看到,
Filter
通过以下方式实现了
Iterator
特性:

impl<'a, A, T: Iterator<A>> Iterator<A> for Filter<'a, A, T>
您需要将所有参数传递到
过滤器
。当然,如果您使用的是某些特定的图元类型,则可以指定它,而不是使用类型参数:

struct CustomWrapper<'a, T> {
    inner_iter: Filter<'a, int, T>
}
struct-CustomWrapper
}

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

碰巧,我正在使用
int
s。我的
Foo
结构不会是多态的。由于我处理的是
int
s,而且在内部只处理
int
s,我应该怎么做'a和T?如果您从某个迭代器派生
Filter
,该迭代器的用户将其传递给您的API,那么您应该让它们保持原样,并将它们作为通用参数传递。它们必须是通用的,因为用户可以传递任何迭代器,其类型必须出现在
过滤器
签名中。我不需要通用,因为我只是为了自己的目的制作一个玩具程序。我只是想弄清楚'a和T的哪些值是可以接受的。您不能为
'a
指定任何自定义值,它是由编译器在调用
filter()
并向其传递闭包时自动提供的。在结构定义中不能忽略它。至于
T
,您可以在这里使用一些具体的迭代器结构,例如,一个,但它将限制您仅在结构中使用特定的迭代器。例如,您可以使用
some_vec.iter()
,但不能使用
some_vec.move_iter()
,因为它们返回不同的迭代器。
struct CustomWrapper<'a, A, T> {
    inner_iter: Filter<'a, A, T>
}
struct CustomWrapper<'a, T> {
    inner_iter: Filter<'a, int, T>
}