我有一个我想要迭代的可索引类型.它由一些元数据和一个数组组成.我需要首先迭代元数据的字节,然后迭代到数组的字节.根据我的理解,迭代器不能在trait实现的本地存储.我认为这非常混乱,我不希望我的数据类型因满足无关的影响而变得混乱.
impl Iterator for IndexableData { type Item = u8 let index : isize = 0; fn next(& mut self) -> Option- { if self.index > self.len() { None } if self.index > size_of::
{ Some (self.data[index - size_of:: ]) } Some (self.metadata[index]) } }
这就是我认为实现应该是这样的.的index
变量属于迭代器性状.不是我的IndexableData
类型.我怎样才能做到这一点?
的Iterator
应该是一个独立的结构,其具有到集合再加上它可能需要的任何其它数据(诸如此指数)的引用.集合对象本身不应该是迭代器.这不仅需要在集合中放置错误的附加元数据,还会阻止您在集合上拥有多个独立的迭代器.