我有一个称为Library的结构体,其中包含了一个字符串向量(titles)。我已经为此实现了一个迭代器。以下是我的代码:
#[derive(Debug, Clone)]
struct Library {
books: Vec<String>
}
impl Iterator for Library {
fn next(&mut self) -> Option<Self::Item> {
...
}
}
现在,我正在尝试使用trait来实现迭代器,代码如下:
fn foo(x: Vec<u32>) -> impl Iterator<Item=u32> {
//Unsure if correct method
fn next() -> Option<...> {
x.into_iter()....
}
}
但我不确定在这种情况下该怎么做。我只需要重新定义一个next()方法吗?根据其他资源的说法,似乎并非如此。为什么呢?一个被返回的迭代器不应该有一个next()方法吗?
通过这种方式实现迭代器的一般方法是什么?