Accesibilidad en Rust: cómo hacer que el código sea amigable para todos

Entrenador de Python en Línea para Principiantes

Aprende Python fácilmente sin sobrecargarte de teoría. Resuelve tareas prácticas con verificación automática, recibe pistas y escribe código directamente en el navegador, sin instalar nada.

Start Course

Por qué la accesibilidad en Rust no es una opción, sino una necesidad



Cuando escribimos en Rust, estamos acostumbrados a pensar en seguridad de memoria, velocidad y abstracciones de costo cero. Pero hay otro aspecto que a menudo queda fuera del foco: la accesibilidad. Muchos desarrolladores creen que esto es solo responsabilidad de los frontendistas o diseñadores. En realidad, cualquiera que escriba código en Rust puede hacer que sus herramientas, bibliotecas o aplicaciones web sean cómodas para personas con discapacidades.



Según la OMS, más de mil millones de personas en el mundo tienen algún tipo de discapacidad. Es una audiencia enorme que perdemos si ignoramos la inclusividad en Rust. Y no se trata solo de usuarios ciegos: la accesibilidad ayuda a todos, desde personas con lesiones temporales hasta quienes trabajan en entornos ruidosos o al volante.



En este artículo, analizaremos cómo implementar a11y (abreviatura de accesibilidad) en proyectos Rust de diferentes tipos: utilidades CLI, aplicaciones web y GUI. Verá ejemplos de código reales que puede usar de inmediato en sus proyectos.



Accesibilidad en CLI: haciendo que la consola sea cómoda para todos



Podría parecer que la terminal es el último lugar donde se necesita accesibilidad. Pero es precisamente aquí donde suelen trabajar personas con discapacidades visuales o motoras. La accesibilidad en CLI con Rust comienza con cosas simples:



  • Mensajes de error claros — use eprintln! para mostrar errores, de modo que puedan redirigirse por separado a un registro o ser leídos por un lector de pantalla.
  • Esquemas de color — no confíe solo en el color. Agregue símbolos o texto: [OK], [ERROR].
  • Salida comprensible — evite tablas complejas sin etiquetas.


Aquí hay un ejemplo de una herramienta CLI minimalista en Rust teniendo en cuenta la accesibilidad:



use std::io::{self, Write};

fn main() { print!("Ingrese su nombre: "); io::stdout().flush().unwrap();

let mut name = String::new(); io::stdin().read_line(&mut name).unwrap(); let name = name.trim();

if name.is_empty() { eprintln!("[ERROR] El nombre no puede estar vacío."); std::process::exit(1); }

println!("[OK] ¡Hola, {}! Nos alegra verte.", name);}


Observe: usamos eprintln! para los errores; esta es una forma estándar de accesibilidad en CLI con Rust. El usuario puede redirigir stderr a un flujo o archivo separado, y los lectores de pantalla procesan más fácilmente dicha salida.



Accesibilidad web en Rust: Yew y WASM



Los frameworks web modernos en Rust, como Yew, Leptos o Dioxus, permiten crear SPA completos. Y aquí, la accesibilidad web en Rust no son solo etiquetas, sino una decisión arquitectónica.



Los principios básicos de las WCAG (Pautas de Accesibilidad al Contenido Web) que deben cumplirse:



  • Contraste — el texto debe leerse bien sobre el fondo.
  • Navegación con teclado — todos los elementos deben ser accesibles mediante Tab.
  • Atributos ARIA — etiquetas adicionales para lectores de pantalla.
  • Marcado semántico — use las etiquetas HTML correctas.


Ejemplo de un componente en Yew teniendo en cuenta los atributos ARIA en Rust:



use yew::prelude::*;

#[function_component(AccessibleButton)]pub fn accessible_button() -> Html { html! { <button class="btn btn-primary" aria-label="Enviar formulario" role="button" tabindex="0" onkeypress={|e| { if e.key() == "Enter" || e.key() == " " { // Manejar clic } }} > { "Enviar" }

Blogs

Book Recommendations