【发布时间】:2015-08-29 08:59:15
【问题描述】:
我想编写一个返回集合迭代器的方法(例如
LinkedList)。但在某些情况下,没有合适的集合来返回
的迭代器。在这种情况下,我想返回一个“空”迭代器
迭代没有元素。但我找不到任何相关的功能
在documentation 中构造一个linked_list::Iter。
考虑以下示例:
use std::collections::HashMap;
use std::collections::LinkedList;
use std::collections::linked_list;
pub struct Graph {
nodes: HashMap<usize, LinkedList<usize>>,
}
impl Graph {
pub fn adjacent_nodes(&self, node: usize) -> linked_list::Iter<usize> {
match self.nodes.get(&node) {
Some(x) => x.iter(),
_ => linked_list::Iter::<usize>::new()
}
}
}
我想从adjacent_nodes 返回相邻节点的迭代器
方法。但是当询问不存在节点的邻居时,该方法应该
显然,返回一个迭代器。但我怎么能创造它?编码
我给的实际上并没有编译:
src/graph.rs:13:18: 13:49 error: no associated item named `new` found for type
`collections::linked_list::Iter<'_, usize>` in the current scope
src/graph.rs:13 _ => linked_list::Iter::<usize>::new()
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
我想,我可以用boxed::Box 解决这个问题,但这显然是一个
由于我试图避免不必要的堆分配,因此不是最佳解决方案。
所以,我的问题是:在 Rust 中是否有可能创建一个无上的迭代器 具体类型?
【问题讨论】: