web-dev-qa-db-ja.com

Rustには、Pythonのリスト内包構文と同等のものがありますか?

Pythonリストの理解は本当に簡単です。

>>> l = [x for x in range(1, 10) if x % 2 == 0]
>>> [2, 4, 6, 8] 

Rustには同等の構文があります:

let vector = vec![x for x in (1..10) if x % 2 == 0]
// [2, 4, 6, 8]
20
Darkaird

あなたはただイテレータを使うことができます:

fn main() {
    let v1 = (0u32..9).filter(|x| x % 2 == 0).map(|x| x.pow(2)).collect::<Vec<_>>();
    let v2 = (1..10).filter(|x| x % 2 == 0).collect::<Vec<u32>>();

    println!("{:?}", v1); // [0, 4, 16, 36, 64]
    println!("{:?}", v2); // [2, 4, 6, 8]
}
23
ljedrz

cute は、RustのPython風のリストと辞書(HashMap)内包表記のマクロです。

#[macro_use(c)]
extern crate cute;

let vector = c![x, for x in 1..10, if x % 2 == 0];
21
Jacob Krall