代码之家  ›  专栏  ›  技术社区  ›  laptou

对于数组,javascript的spread操作符的rust等价物是什么?

  •  2
  • laptou  · 技术社区  · 7 年前

    在javascript中,有一个名为spread operator的运算符,它允许您非常简洁地组合数组。

    let x = [3, 4];
    let y = [5, ...x]; // y is [5, 3, 4]
    

    有没有办法在铁锈中做这种事?

    3 回复  |  直到 7 年前
        1
  •  2
  •   Benjamin Lindley    7 年前

    如果你只是需要 y 要做到无可辩驳,你可以:

    let x = [3,4];
    let y = [5].iter().chain(&x);
    

    如果您需要它是可索引的,那么您需要将它收集到一个向量中。

    let y: Vec<_> = [5].iter().chain(&x).map(|&x|x).collect();
    
        2
  •  4
  •   ljedrz    7 年前

    Rust's arrays have a fixed length ,因此无法将它们组合在一起;通常实现此结果的方法是具有可变的向量,并且 extend it 切片:

    fn main() {
        let x = [3, 4];
        let mut y = vec![5];
        y.extend_from_slice(&x);
    
        println!("{:?}", y); // [5, 3, 4]
    }
    
        3
  •  -3
  •   Matthew Curry    7 年前

    不,但是也许你可以试着做一个宏,类似于 vec!

    推荐文章