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) .
							 |