Следите за новинками
в нашем Telegram канале. Жми, чтобы подписаться:)
⊗rsPmFnVM 268 of 373 menu
◀ ▶

Параметр-вектор функции в Rust

Давайте теперь будем передавать вектор в функцию по значению. Если параметр объявлен как вектор без ссылки, значение переносится внутрь блока. После вызова исходная переменная снаружи уже не владеет списком.

Посчитаем сумму внутри блока, который забирает список:

fn func(v: Vec<i32>) -> i32 { let mut total = 0; for n in v { total += n; } total } fn main() { let nums = vec![1, 2, 3]; let s = func(nums); println!("{}", s); }

На экране 6. Переменная nums после передачи больше не доступна для чтения.

Такой прием уместен, когда список больше не нужен снаружи:

fn show(v: Vec<i32>) { println!("{}", v.len()); } fn main() { let data = vec![4, 5]; show(data); }

Дан вектор:

let items = vec![10, 20];

Напишите блок, который забирает список и печатает первый элемент. Запустите его и скажите, можно ли после этого снова прочитать items.

Дан следующий код:

fn func(v: Vec<i32>) -> i32 { v.len() as i32 }

В точке входа передайте vec![1, 2, 3] и выведите длину.

Скажите, что происходит с владением при параметре без амперсанда.

← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить