小编Bar*_*ton的帖子

在 Rust 中,如何创建可变迭代器?

尝试在安全的 Rust 中创建可变迭代器时,我遇到了生命周期问题。

这是我将问题简化为:

struct DataStruct<T> {
    inner: Box<[T]>,
}

pub struct IterMut<'a, T> {
    obj: &'a mut DataStruct<T>,
    cursor: usize,
}

impl<T> DataStruct<T> {
    fn iter_mut(&mut self) -> IterMut<T> {
        IterMut { obj: self, cursor: 0 }
    }
}

impl<'a, T> Iterator for IterMut<'a, T> {
    type Item = &'a mut T;

    fn next(&mut self) -> Option<Self::Item> {
        let i = f(self.cursor);
        self.cursor += 1;
        self.obj.inner.get_mut(i)
    }
}

fn f(i: usize) -> usize {
   // some permutation of i …
Run Code Online (Sandbox Code Playgroud)

iterator mutable rust

4
推荐指数
1
解决办法
2232
查看次数

标签 统计

iterator ×1

mutable ×1

rust ×1