3
我在enum
上有一個迭代器,它在其中一個變體中具有可變引用。現在我想將此參考移出self
並返回。爲避免同時對同一個對象有兩個可變引用,我想將self
的枚舉變體更改爲沒有引用的變體。下面是一個代碼示例:將可變引用移出可變對象
enum Test<'a> {
A(&'a mut usize),
B,
}
impl<'a> Iterator for Test<'a> {
type Item = &'a mut usize;
fn next(&mut self) -> Option<Self::Item> {
match *self {
Test::A(r) => Some(r), // TODO: return mutable reference and change self to B
Test::B => None,
}
}
}
fn main() {
let mut v = 1;
let mut it = Test::A(&mut v);
it.next();
}
問題是關係到Change selector in match when selector is a mutable reference,但解決方案並不在這裏工作。