Files
freeCodeCamp/guide/russian/rust/loops/index.md
2019-08-07 15:01:10 -07:00

61 lines
3.1 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

---
title: Loops
localeTitle: Loops
---
# Loops
Rust поддерживает три типа циклов: `loop` , `while` и `for` .
## Бесконечное повторение с `loop`
В Rust конструкция `loop` будет непрерывно выполнять блок кода до бесконечности (или пока вы явно не остановите его).
Вот пример программы, использующей `loop` для непрерывного вывода слова «again!» на терминал:
```rust
fn main() {
loop {
println!("again!");
}
}
```
## Условный цикл с `while`
Описанный выше механизм не очень полезен, если мы не добавим какое-то условие, по которому `loop` будет останавливаться. К счастью, в Rust есть встроенная конструкция цикла `while`. Её можно использовать для непрерывного выполнения блока до тех пор, пока какое-то условие истинно.
Вот пример программы, использующей `while` для обратного отсчета от 5:
```rust
fn main() {
let mut number = 5;
while number != 0 {
println!("{}", number);
number = number - 1;
}
}
```
Запустите код [здесь](https://play.rust-lang.org/?gist=62677371a8590be27c84dcae7068de57&version=stable).
## Перебор коллекции с `for`
В некоторых случаях вам может потребоваться пройтись по элементам коллекции (например, массива) и как-то обработать их. Это можно было бы сделать с помощью `while`, используя индексную переменную для доступа к каждому элементу. Чтобы сделать эту операцию гораздо проще, Rust предлагает цикл `for`.
Вот пример программы, которая печатает каждое число в массиве на терминал, используя `for` :
```rust
fn main() {
let collection = [15, 7, 2, 6, 9];
for element in collection.iter() {
println!("the value is: {}", element);
}
}
```
Запустите код [здесь](https://play.rust-lang.org/?gist=0c2acf21b96a81ebd411e4a7dc5a19fd&version=stable).
Подобно итераторам в C++, `.iter()` возвращает итератор коллекции `collection`, который затем можно использовать в цикле для доступа к каждому элементу `element`. Для получения дополнительной информации перейдите к документации Rust по порядку исполнения ([control flow](https://doc.rust-lang.org/book/second-edition/ch03-05-control-flow.html)).