Rullst AcademyRullst Academy/Lección
Rust II: datos, decisiones y confianza · Lección 03 / 12

El texto no son solo letras de un byte

La palabra ação tiene cuatro letras, pero ocupa seis bytes UTF-8. Elegir la medida correcta evita cortes incorrectos.

Rutas de aprendizaje10 min

Vamos a descubrir juntos

  1. 1

    String posee texto UTF-8 y puede crecer. &str es una vista prestada de una secuencia UTF-8 válida; una función puede leer sin tomar la propiedad.

  2. 2

    len() mide bytes. chars().count() cuenta valores escalares Unicode. En ação: a y o usan un byte cada una; ç y ã usan dos cada una.

  3. 3

    Un carácter visual puede reunir varios valores escalares, como una letra con acento combinante o algunos emojis. chars().count() no cuenta universalmente los caracteres percibidos.

  4. 4

    String no permite acceder a una letra mediante un índice entero. Un corte por bytes exige límites UTF-8 válidos. Prefiere operaciones adecuadas como split_whitespace para palabras o get para un corte que puede fallar.

DE LA LECCIÓN A LA PRÁCTICA

Una guía para seguir a tu ritmo

Lee los pasos antes de usar la referencia de abajo. Los comandos se ejecutan en el terminal del sistema indicado; el registro ocurre en el sitio oficial. Los ejercicios de Rullst Academy son práctica y no verifican tu instalación ni cuenta externa.

fn main() {
    let text = String::from("ação");
    println!("{} {}", text.len(), text.chars().count());
}

Enlaces oficiales y siguiente paso

✦
TU MISIÓN

Distinguir String, &str, bytes y valores escalares Unicode.

Ahora te toca

Taller de descubrimientos

Lee, predice, investiga

Predice antes de mostrar. Este panel revela resultados preparados; no compila tu código. Los errores se resumen; el texto exacto puede variar con la versión del compilador.
Mini experimento

Simulación didáctica: compara tarjetas y comprueba tus predicciones. El navegador no compila Rust ni inicia un servidor.

fn main() {
    let text = String::from("ação");
    println!("{} {}", text.len(), text.chars().count());
}
Prepara tus respuestas y comprueba cuando estés listo.
Una pausa para entender

¿chars().count() siempre cuenta símbolos visuales?

Necesito una pista

Bytes, valores escalares y caracteres visuales son medidas distintas.

Cargando tu camino…

Llévatelo contigo

Cambia el texto por café y después por un emoji. Registra bytes y chars. Prueba text.get(0..2) con ação y explica por qué puede devolver None sin bloquear el programa.

RUST II · .rs

Tu espacio de práctica Rust II

Lee, predice y responde aquí. Para compilar realmente, extrae el ZIP en una carpeta nueva, abre la terminal junto a Cargo.toml y usa estos comandos. Debes tener instalados Rust y las herramientas de tu sistema.

cargo check --offline
cargo test --offline
cargo run --offline
Mis archivos y GitHub

El editor guarda un borrador en este navegador y permite descargar o publicar tu .rs. Para ejecutarlo en el proyecto, guarda el archivo editado como src/main.rs. El ZIP contiene la versión inicial; los resultados preparados no cambian con tus ediciones. La evaluación online no verifica ejecución local.

A tu ritmo

Mis archivos y GitHub

Cada lección puede convertirse en un registro propio: código, notas o un plan de práctica. Guardar un archivo en GitHub es opcional y no cambia tus XP.

Manual del alumno

El editor y las descargas se abren cuando esta lección esté disponible para tu cuenta. Revisa el acceso indicado abajo o vuelve al mapa de la ruta.

Comprobando tu acceso a esta lección…

Rullstpetbot

La IA puede equivocarse. Consulta el material de la lección.