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 中做这样的事情?
Vec您可以使用以下方法从任意数量的部件中构建一个[T]::concat:
let x = [3, 4];
let y = [&[5], &x[..]].concat();
// gives vec![5, 3, 4]
Run Code Online (Sandbox Code Playgroud)
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)
如果你只需要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)