2017-07-24 19 views

Trả lời

10

Bạn chỉ có thể sử dụng:

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

Bạn có biết về sự phức tạp không? Liệu bộ lọc appling và sau đó bản đồ lực lượng quá lặp lại hai lần và do đó tăng gấp đôi thời gian tính toán? – Darkaird

+5

@Darkaird no. Iterator là lười biếng và xử lý từng phần tử chỉ một lần. – Shepmaster

10

cute là một vĩ mô cho Python danh sách nổi tiếng và từ điển (HashMap) sự hiểu biết trong Rust.

#[macro_use(c)] 
extern crate cute; 

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

Tôi đã thấy điều này và thấy nó thực sự thú vị nhưng những gì tôi muốn là thêm một chức năng/cú pháp tích hợp như @ljedrz đã trả lời. – Darkaird

+1

@Darkaird rỉ sét có một lib std khá lean để bạn có thể không nhận được đến nay mà không có thùng bổ sung. – the8472

Các vấn đề liên quan