gpt4 book ai didi

rust - 如何实现迭代器产生可变引用

转载 作者:行者123 更新时间:2023-12-03 11:25:56 25 4
gpt4 key购买 nike

<分区>

我正在尝试实现一个简单的查找迭代器:

pub struct LookupIterMut<'a, D> {
data : &'a mut [D],
indices : &'a [usize],
i: usize
}

impl<'a, D> Iterator for LookupIterMut<'a, D> {
type Item = &'a mut D;

fn next(&mut self) -> Option<Self::Item> {
if self.i >= self.indices.len() {
None
} else {
let index = self.indices[self.i] as usize;
self.i += 1;
Some(&mut self.data[index]) // error here
}
}
}

这个想法是允许调用者对内部存储进行连续可变访问。但是,我收到错误 cannot infer an appropriate lifetime for lifetime parameter in function call due to conflicting requirements

据我所知,我必须将函数签名更改为 next(&'a mut self) -> .. 但这将不再是迭代器。

我还发现我可以简单地使用原始指针,尽管我不确定这在这里是否合适:

// ...
type Item = *mut D;
// ...

谢谢你的帮助

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com