60 lines
2.2 KiB
Markdown
60 lines
2.2 KiB
Markdown
|
---
|
||
|
title: Loops
|
||
|
localeTitle: Bucles
|
||
|
---
|
||
|
# Bucles
|
||
|
|
||
|
Dentro de Rust hay tres tipos de mecanismos de bucle nativos: `loop` , `while` y `for` .
|
||
|
|
||
|
## Repetición infinita con `loop`
|
||
|
|
||
|
En Rust, la estructura de `loop` ejecutará continuamente un bloque de código ad infinitum (o hasta que le indique explícitamente que se detenga).
|
||
|
|
||
|
Aquí hay un programa de ejemplo que usa `loop` para imprimir la palabra 'otra vez' continuamente al terminal:
|
||
|
|
||
|
```rust
|
||
|
fn main() {
|
||
|
loop {
|
||
|
println!("again!");
|
||
|
}
|
||
|
}
|
||
|
```
|
||
|
|
||
|
## Bucle condicional con `while`
|
||
|
|
||
|
El mecanismo anterior no es muy útil a menos que introduzcamos algún tipo de condición de detención para que el `loop` verifique. Por suerte, Rust tiene una estructura de bucle incorporada llamada `while` , que puedes usar para ejecutar continuamente un bloque de código mientras que alguna condición es verdadera.
|
||
|
|
||
|
Aquí hay un programa de ejemplo que usa `while` para contar desde 5:
|
||
|
|
||
|
```rust
|
||
|
fn main() {
|
||
|
let mut number = 5;
|
||
|
|
||
|
while number != 0 {
|
||
|
println!("{}", number);
|
||
|
number = number - 1;
|
||
|
}
|
||
|
}
|
||
|
```
|
||
|
|
||
|
Ejecuta el código [aquí](https://play.rust-lang.org/?gist=62677371a8590be27c84dcae7068de57&version=stable) .
|
||
|
|
||
|
## Iterando a través de una colección con `for`
|
||
|
|
||
|
En algunos casos, es posible que desee iterar y operar en los elementos de una colección (como una matriz). Mientras que usted podría lograr esto usando un `while` de bucle y una variable índice para acceder a cada elemento, Rust ofrece el `for` bucle para hacer esta operación mucho más fácil.
|
||
|
|
||
|
Aquí hay un programa de ejemplo que imprime cada número en una matriz al terminal usando `for` :
|
||
|
|
||
|
```rust
|
||
|
fn main() {
|
||
|
let collection = [15, 7, 2, 6, 9];
|
||
|
|
||
|
for element in collection.iter() {
|
||
|
println!("the value is: {}", element);
|
||
|
}
|
||
|
}
|
||
|
```
|
||
|
|
||
|
Ejecuta el código [aquí](https://play.rust-lang.org/?gist=0c2acf21b96a81ebd411e4a7dc5a19fd&version=stable) .
|
||
|
|
||
|
Al igual que los iteradores en C ++, la función `.iter()` devuelve un iterador a la `collection` , que luego se puede recorrer para acceder a cada `element` . Para obtener más información, diríjase a la documentación de Rust sobre el [flujo de control](https://doc.rust-lang.org/book/second-edition/ch03-05-control-flow.html) .
|