首页 文章

Rust是否具有Python的列表推导语法?

提问于
浏览
12

Python列表理解非常简单:

>>> l = [x ** 2 for x in range(10) if x % 2 == 0]
>>> [0, 4, 16, 36, 64]

Rust是否具有相同的语法:

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

2 回答

  • 17

    你可以使用迭代器:

    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]
    }
    
  • 20

    cute是Rust中的Python-esque列表和字典( HashMap )理解的宏 .

    #[macro_use(c)]
    extern crate cute;
    
    let vector = c![x, for x in 1..10, if x % 2 == 0];
    

相关问题