在JavaScript中,有一个称为spread运算符的运算符,它允许您非常简洁地合并数组。
let x = [3, 4]; let y = [5, ...x]; // y is [5, 3, 4]
在拉斯特有没有办法做这样的事情?
kcrjzv8t1#
如果你只需要y是可迭代的,你可以这样做:
y
let x = [3,4]; let y = [5].iter().chain(&x);
如果你需要它是可索引的,那么你需要把它收集到一个向量中。
let y: Vec<_> = [5].iter().chain(&x).map(|&x|x).collect();
9w11ddsr2#
Rust's arrays have a fixed length,因此无法将它们组合在一起;实现该结果通常方式是具有可变向量并利用切片来扩展它:
fn main() { let x = [3, 4]; let mut y = vec![5]; y.extend_from_slice(&x); println!("{:?}", y); // [5, 3, 4] }
ddrv8njm3#
您可以使用[T]::concat从任意多个片段构建一个Vec:
[T]::concat
Vec
let x = [3, 4]; let y = [&[5], &x[..]].concat(); // gives vec![5, 3, 4]
3条答案
按热度按时间kcrjzv8t1#
如果你只需要
y
是可迭代的,你可以这样做:如果你需要它是可索引的,那么你需要把它收集到一个向量中。
9w11ddsr2#
Rust's arrays have a fixed length,因此无法将它们组合在一起;实现该结果通常方式是具有可变向量并利用切片来扩展它:
ddrv8njm3#
您可以使用
[T]::concat
从任意多个片段构建一个Vec
: