Массив в параметре функции в Rust
Массив чисел фиксированного размера копируется в параметр целиком. Снаружи исходный массив остается на месте, а внутри блока работают с копией.
Сложим три числа из массива:
fn sum3(a: [i32; 3]) -> i32 {
a[0] + a[1] + a[2]
}
fn main() {
let data = [2, 3, 4];
let s = sum3(data);
println!("{}", s);
println!("{}", data[0]);
}
На экране 9 и снова 2. Копия не мешает читать
data снаружи.
Размер массива входит в тип параметра:
fn func(a: [i32; 2]) -> i32 {
a[0]
}
fn main() {
let pair = [7, 8];
println!("{}", func(pair));
}
Дан массив:
let trio = [1, 2, 3];
Напишите блок, который принимает копию из трех чисел и отдает
средний элемент. Выведите результат для trio.
Дан следующий код:
fn main() {
let row = [5, 6];
let x = func(row);
println!("{}", x);
}
Допишите func с параметром массива из двух i32.
Скажите, остается ли исходный массив доступным после вызова с копированием.