Qué hace este ejercicio
Lee exactamente cinco textos separados por comas, informa de si el array está vacío y de si contiene el texto 5, invierte el orden y muestra cada elemento. La sexta etapa reúne conversión de colecciones, préstamo mutable y métodos de arrays.
Explicación
La función recibe una referencia mutable a un array de cinco cadenas. Puede consultar su contenido y cambiar su orden sin tomar posesión del array.
fn analyze_array(arr: &mut [String; 5]) {
let empty = arr.is_empty();
let has_five = arr.contains(&"5".to_string());
arr.reverse();
for element in arr.iter() {
println!("{}", element);
}
}
En un array cuyo tamaño está fijado en cinco, is_empty() siempre devuelve false. La conversión desde el vector usa try_into().unwrap(), por lo que la entrada debe contener exactamente cinco elementos. El código no limpia los textos después de read_line: conserva tanto los espacios como el salto de línea final que produce Enter.
Por eso, al escribir 1,2,3,4,5 y pulsar Enter, el quinto elemento es realmente "5\n". contains(&"5".to_string()) devuelve false y, después de reverse, ese elemento se imprime primero con un salto adicional antes de continuar con 4, 3, 2 y 1. Aplicar trim a cada elemento sería una mejora futura; el código auditado todavía no lo hace.
Conceptos practicados
- Arrays con longitud conocida en compilación.
- Referencias mutables con
&mut. - Métodos
is_empty,contains,reverseeiter. - Conversión de un
Vec<String>a[String; 5].
Cómo ejecutarlo
Ejecuta el binario e introduce cinco valores separados por comas:
cargo run --bin desafioMetodosArrays
Con una entrada interactiva normal como 1,2,3,4,5, el programa indica que no contiene el texto exacto 5. Después muestra 5, una línea vacía causada por el salto conservado, y continúa con 4, 3, 2 y 1.
cargo run --bin desafioMetodosArrays
1,2,3,4,5
Is empty: false
Contains 5: false
Reversed Elements:
5
4
3
2
1 Ejemplo: este programa lee una entrada. Con 1,2,3,4,5 produce la salida de arriba.