Acessibilidade em Rust: como tornar o código amigável para todos

Treinador Online de Python para Iniciantes

Aprenda Python facilmente sem sobrecarga teórica. Resolva tarefas práticas com verificação automática e escreva código diretamente no navegador.

Start Course

Por que a acessibilidade em Rust não é uma opção, mas uma necessidade



Quando escrevemos em Rust, estamos acostumados a pensar em segurança de memória, velocidade e abstrações de custo zero. Mas há outro aspecto que muitas vezes fica em segundo plano — acessibilidade (accessibility). Muitos desenvolvedores acham que isso é preocupação apenas de frontenders ou designers. Na realidade — todos que escrevem código em Rust podem tornar suas ferramentas, bibliotecas ou aplicações web acessíveis para pessoas com deficiências.



Segundo a OMS, mais de 1 bilhão de pessoas no mundo têm alguma forma de deficiência. É um público enorme que perdemos se ignorarmos a inclusividade em Rust. E não se trata apenas de usuários cegos — a acessibilidade ajuda a todos: desde pessoas com lesões temporárias até aquelas que trabalham em ambientes barulhentos ou dirigindo.



Neste artigo, vamos abordar como implementar a11y (abreviação de accessibility) em projetos Rust de diferentes tipos: utilitários CLI, aplicações web e GUI. Você verá exemplos reais de código que podem ser usados imediatamente em seus projetos.



Acessibilidade em CLI: tornando o console acessível para todos



Parece que o terminal é o último lugar onde a acessibilidade é necessária. Mas é justamente aqui que muitas vezes trabalham pessoas com deficiências visuais ou motoras. A acessibilidade em Rust CLI começa com coisas simples:



  • Mensagens de erro claras — use eprintln! para exibir erros, para que possam ser redirecionados separadamente para um log ou lidos por um leitor de tela.
  • Esquemas de cores — não dependa apenas de cores. Adicione símbolos ou texto: [OK], [ERRO].
  • Saída compreensível — evite tabelas complexas sem legendas.


Aqui está um exemplo de uma ferramenta CLI minimalista em Rust considerando acessibilidade:



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

fn main() { print!("Digite seu nome: "); 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!("[ERRO] O nome não pode estar vazio."); std::process::exit(1); }

println!("[OK] Olá, {}! Prazer em vê-lo.", name);}


Observe: usamos eprintln! para erros — esta é a maneira padrão de acessibilidade em Rust CLI. O usuário pode redirecionar o stderr para um fluxo ou arquivo separado, e os leitores de tela processam essa saída mais facilmente.



Acessibilidade web em Rust: Yew e WASM



Frameworks web modernos em Rust, como Yew, Leptos ou Dioxus, permitem criar SPAs completos. E aqui a acessibilidade web Rust não é apenas sobre tags, mas uma decisão arquitetural.



Princípios básicos das WCAG (Web Content Accessibility Guidelines) que devem ser seguidos:



  • Contraste — o texto deve ser legível contra o fundo.
  • Navegação por teclado — todos os elementos devem ser acessíveis via Tab.
  • Atributos ARIA — rótulos adicionais para leitores de tela.
  • Marcação semântica — use tags HTML corretas.


Exemplo de um componente em Yew considerando atributos ARIA em Rust:



use yew::prelude::*;

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

Blogs

Book Recommendations