Menu
Coddy logo textTech

Итерация по вектору

Часть раздела Logic & Flow путешествия по Rust на Coddy — урок 11 из 66.

Теперь, когда вы знаете, как создавать векторы и получать доступ к отдельным элементам, давайте узнаем, как систематически обрабатывать каждый элемент в векторе. Цикл for идеально подходит для этой задачи, позволяя вам последовательно обходить каждый элемент.

Вот базовый синтаксис для итерации по вектору:

let names = vec!["Alice", "Bob", "Charlie"];

for name in &names {
    println!("Hello, {}!", name);
}

Обратите внимание на & перед names — это создает ссылку на вектор, позволяя вам читать каждый элемент, не принимая владение самим вектором. Каждая итерация предоставляет вам доступ к одному элементу за раз через переменную цикла name.

Цикл for автоматически обрабатывает проверку границ за вас. В отличие от ручной индексации, вы никогда случайно не попытаетесь получить доступ к несуществующему элементу. Цикл обойдет ровно столько элементов, сколько содержит вектор, что делает его одновременно безопасным и удобным.

Вы можете использовать этот паттерн с любым типом вектора:

let scores = vec![85, 92, 78, 90];

for score in &scores {
    println!("Score: {}", score);
}

Этот подход является наиболее распространенным и идиоматичным способом обработки всех элементов в векторе, когда вам нужно прочитать их значения.

challenge icon

Задание

Легко

Напишите функцию sum_all_elements, которая принимает вектор numbers и возвращает сумму всех его элементов.

Используйте цикл for для итерации по вектору и накопления суммы всех элементов.

Параметры:

  • numbers (Vec<i32>): Вектор целых чисел для суммирования

Возвращает: Сумма всех элементов в векторе (i32)

Шпаргалка

Чтобы перебрать элементы вектора, используйте цикл for со ссылкой на вектор:

let names = vec!["Alice", "Bob", "Charlie"];

for name in &names {
    println!("Hello, {}!", name);
}

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

Этот паттерн работает с любым типом вектора:

let scores = vec![85, 92, 78, 90];

for score in &scores {
    println!("Score: {}", score);
}

Попробуйте сами

fn sum_all_elements(numbers: Vec<i32>) -> i32 {
    // Напишите код здесь
}
quiz iconПроверьте себя

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

Все уроки раздела Logic & Flow