Ссылка на вектор в функции в Rust
Давайте теперь будем читать вектор по ссылке. Ссылка позволяет смотреть элементы и не забирать список у вызывающего. В заголовке перед типом ставят амперсанд.
Узнаем длину по ссылке:
fn func(v: &Vec<i32>) -> i32 {
v.len() as i32
}
fn main() {
let nums = vec![1, 2, 3];
let n = func(&nums);
println!("{}", n);
println!("{}", nums[0]);
}
На экране 3 и 1. Переменная nums остается
хозяином списка.
Напечатаем фразу из среза текста:
fn show(text: &str) {
println!("{}", text);
}
fn main() {
let word = String::from("hi");
show(&word);
println!("{}", word.len());
}
Дан вектор:
let data = vec![4, 5, 6];
Напишите блок со ссылкой на список, который отдает первый элемент, и выведите ответ.
Дан следующий код:
fn main() {
let items = vec![9];
show(&items);
println!("{}", items.len());
}
Допишите show со ссылкой и печатью длины.
Скажите, чем параметр-ссылка отличается от параметра без амперсанда для вектора.