Avatar ·

Cómo obtener la cantidad de caracteres en una cadena en Rust, no bytes

¡Hola, colegas! Acabo de empezar a aprender Rust y me encontré con un problema inesperado. Necesito saber la longitud de una cadena en caracteres (char), no en bytes. En otros lenguajes, como Python o Java, el método len() normalmente devuelve la cantidad de caracteres. Pero en Rust es diferente. Aquí hay un ejemplo que me confundió: ```rust fn main() { let text = String::from("Привет, мир!"); println!("Longitud de la cadena: {}", text.len()); } ``` Esperaba ver 12 (la cantidad de caracteres en la cadena "Привет, мир!"), pero obtuve 20. Luego entendí que el método .len() cuenta bytes. En UTF-8, los caracteres cirílicos ocupan 2 bytes, por lo que el resultado es diferente. Pero necesito exactamente la cantidad de caracteres — para la interfaz de usuario, verificar la longitud de entrada o contar palabras. ¿Alguien sabe si hay algún método en Rust que devuelva la cantidad de caracteres, no bytes? ¿O necesito escribir mi propia implementación? Agradecería ejemplos de código. Importante: la cadena puede contener no solo ASCII, sino también emojis, cirílico, etc.