【发布时间】:2015-01-05 03:20:05
【问题描述】:
我想改变容器中的元素。我唯一关心的是容器的长度以及容器的元素是有序的(即有第一个元素、第二个元素等)。但我正在努力做到这一点。
我的第一次尝试是使用可变引用的Iterator:
fn mutate<'a, A, I>(items: I) where I: Iterator<&'a mut A>
问题是我需要对元素进行多次迭代。但是为了避免混淆可变引用,像Slice 的IterMut 这样的结构不会实现Clone 或RandomAccessIterator。据我所知,我不能使用同一个迭代器多次迭代可变引用。
然后我查看了IndexMut 特征。这似乎是我想要的,但我找不到另一个指定容器长度的特征。而实现IndexMut 的Slice 结构对每次访问进行边界检查,这是不可取的。
那么有没有办法做我想做的事?使用Iterators 会很好,因为我真正想做的是多次迭代可变元素。
【问题讨论】:
-
你需要它有多通用?您有需要支持的类型示例吗?
-
我希望支持尽可能多的类型,但我主要希望支持切片和循环缓冲区 (RingBuf)。
标签: rust