2017-07-24 2 views

Antwort

10

Sie können nur Iteratoren verwenden:

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

Wissen Sie über Komplexität? Wird Appling-Filter und dann Map-Force auch doppelt durchlaufen und verdoppelt sich die Rechenzeit? – Darkaird

+5

@Darkaird Nr. Iteratoren sind faul und verarbeiten jedes Element nur einmal. – Shepmaster

10

cute ist ein Makro für Python -esque Liste und Wörterbuch (HashMap) Comprehensions in Rust.

#[macro_use(c)] 
extern crate cute; 

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

Ich hatte das schon gesehen und fand es wirklich interessant, aber was ich will ist mehr eine eingebaute Funktion/Syntax wie @ljedrz beantwortet. – Darkaird

+1

@Darkaird Rost hat eine ziemlich schlanke Standard Lib, so dass Sie ohne zusätzliche Kisten nicht weit kommen. – the8472

Verwandte Themen