Skip to content

Rust:filter

springroll edited this page Dec 9, 2019 · 1 revision

filter()

Overview

イテレータのメソッドfilterは、bool値を返すクロージャを渡すとtrueとなった要素だけを走査するイテレータに変換する

Code

  • 文字列の中から特定の文字を抽出
fn main() {
    let s = String::from("10101010");
    for ch in s.chars().filter(|&c| c == '1') {
        print!("{}", ch);      // 1111
    }
}
  • 回文になっていない文字数を数える (filterで要素とインデックスを扱う)
fn main(){
    let s: Vec<char> = read::<String>().chars().collect();
    println!("{:?}", s);

    let n = s.len();
    let count = s
        .iter()
        .enumerate()
        .filter(|&(i, x)| i<n/2 && *x != s[n-i-1])
        .count();
    println!("{}", count);
}

Detail

Clone this wiki locally