2016-11-10 8 views
1

filterを使用すると、filter does not return ownershipがあるため、参照を受け取ります。filter()を使用する慣用句

fn main() { 
    let mut vec: Vec<(bool, i32)> = Vec::new(); 
    vec.push((true, 1)); 
    vec.push((false, 2)); 
    vec.push((true, 3)); 
    for &(_, x) in vec.iter().filter(|&&(exists, _)| exists) { 
     println!("{}", x); 
    } 
} 

私に&たくさんのように思える:しかしiter()はすでにあなたはこのようなコードを取得するので、あなたが反復処理されているものを参照します。これはfilter()を実装する慣用的な方法と考えられますか?

答えて

4

短くyesです。あなたの特定の例では、into_iterを使って所有権を返すイテレータを得ることができます。

関連する問題