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

Перенос вектора в функцию в Rust

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

Напишем функцию, которая принимает вектор целиком и печатает его длину:

fn eat(v: Vec<i32>) { println!("{}", v.len()); } fn main() { let nums = vec![1, 2, 3]; eat(nums); println!("done"); }

На экране сначала 3, затем слово "done". После шага передачи имя nums снаружи уже не связано со списком. Обращение к нему не проходит сборку:

let nums = vec![1, 2]; eat(nums); println!("{}", nums.len());

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

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

Скажите, соберется ли программа.

Допишите функцию take, которая принимает вектор и печатает сумму элементов, и передайте ей список 2, 3 из main.

Скажите, останется ли имя переменной снаружи рабочим, если параметр функции объявлен как Vec<i32> без ссылки.

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