В JavaScript есть оператор, называемый оператором распространения, который позволяет очень кратко комбинировать массивы.
let x = [3, 4]; let y = [5, ...x]; // y is [5, 3, 4]
Есть ли способ сделать что-то подобное в Rust?
Нет, но, возможно, вы можете попробовать сделать макрос, похожий на vec!
vec!
Если вам просто нужно, чтобы y был итеративным, вы можете сделать:
y
let x = [3,4]; let y = [5].iter().chain(&x);
Если вам нужно, чтобы он был индексируемым, вам нужно собрать его в вектор.
let y: Vec<_> = [5].iter().chain(&x).map(|&x|x).collect();
Массивы Rust имеют фиксированную длину , поэтому просто объединить их невозможно;обычным способом достижения этого результата было бы иметь изменяемый вектор и расширить его с помощью среза:
fn main() { let x = [3, 4]; let mut y = vec![5]; y.extend_from_slice(&x); println!("{:?}", y); // [5, 3, 4] }