3
enum
のイテレータは、そのバリアントの1つに可変参照があります。今私はこの参照をself
に移動して返したいと思います。同時に同じオブジェクトへの2つの可変参照を避けるために、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に関連しているが、そのソリューションは、ここでは動作しません。