Avatar ·

Cómo iterar sobre una cadena carácter por carácter (por caracteres Unicode) en Rust

¡Hola a todos! Acabo de empezar a aprender Rust y tengo un problema con la iteración sobre una cadena. En otros lenguajes (como Python o C++) estoy acostumbrado a que una cadena es un array de caracteres y puedo simplemente recorrerla por índice o usar un bucle for. Pero en Rust es más complicado. Esto es lo que he probado: ```rust let s = "Привет, мир!"; for c in s { println!("{}", c); } ``` El compilador da un error: `error[E0277]: the trait bound \`str: Iterator\` is not satisfied`. Entiendo que `str` no es un iterador, pero ¿cómo obtengo entonces cada carácter? También he probado a acceder por índice: ```rust let s = "Привет"; println!("{}", s[0]); // ¡Error! ``` Y de nuevo un error: las cadenas en Rust no se pueden indexar directamente porque los caracteres Unicode pueden ocupar diferente cantidad de bytes. En resumen, necesito: tomar una cadena, recorrer cada carácter (incluyendo cirílico, emojis y caracteres especiales) y hacer algo con cada uno. Por ejemplo, contar el número de caracteres o reemplazar todas las vocales por '*'.