JavaScript 的数组扩展运算符的 Rust 等价物是什么?

lap*_*tou 6 arrays vector rust

在 JavaScript 中,有一个称为扩展运算符的运算符,它允许您非常简洁地组合数组。

let x = [3, 4];
let y = [5, ...x]; // y is [5, 3, 4]
Run Code Online (Sandbox Code Playgroud)

有没有办法在 Rust 中做这样的事情?

And*_*org 6

Vec您可以使用以下方法从任意数量的部件中构建一个[T]::concat

let x = [3, 4];
let y = [&[5], &x[..]].concat();
// gives vec![5, 3, 4]
Run Code Online (Sandbox Code Playgroud)


lje*_*drz 5

Rust 的数组有固定的长度,所以没有办法将它们组合在一起;实现此结果的通常方法是拥有一个可变向量并用切片扩展它

fn main() {
    let x = [3, 4];
    let mut y = vec![5];
    y.extend_from_slice(&x);

    println!("{:?}", y); // [5, 3, 4]
}
Run Code Online (Sandbox Code Playgroud)


Ben*_*ley 5

如果你只需要y迭代,你可以这样做:

let x = [3,4];
let y = [5].iter().chain(&x);
Run Code Online (Sandbox Code Playgroud)

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

let y: Vec<_> = [5].iter().chain(&x).map(|&x|x).collect();
Run Code Online (Sandbox Code Playgroud)