2017-07-24 72 views

cevap

10

sadece kullanabilirsiniz yineleyiciler:

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] 
} 
+0

Karmaşıklıktan haberiniz var mı? Appling filtresi ve daha sonra harita gücü de iki kez yinelenir ve bu nedenle hesaplama süresi iki katına çıkar? – Darkaird

+5

@Darkaird no. Yineleyiciler tembeldir ve her elemanın sadece bir kez işlenir. – Shepmaster

10

cute Python için bir makro olduğunu -esk listesi ve sözlük (HashMap) Rust'ta kavrama.

#[macro_use(c)] 
extern crate cute; 

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

Bunu daha önce görmüştüm ve gerçekten ilginç buldum ama istediğim şey daha çok dahili bir işlev/sözdizimi gibi @ljedrz cevapladı. – Darkaird

+1

@Darkaird pas, oldukça zayıf bir std lib'e sahiptir, böylece ek kasalar olmadan uzaklaşamazsınız. – the8472