Acredito que muita gente esteja criando ferramentas CLI/TUI em Rust por causa de vantagens como o desempenho do Rust e a distribuição em binário único.
Ferramentas como o Textual do Python ou o Ink do JS têm uma sintaxe relativamente confortável, mas às vezes surgem preocupações com dependências de runtime ou overhead de desempenho. No lado do Rust, o ratatui tem um bom ecossistema, mas definir layouts ainda consome bastante tempo.
Por isso, criei duas coisas.
1. tui.builders — UI de terminal no navegador
É um editor que permite projetar visualmente e exportar código Rust.
https://tui.builders
Ao arrastar widgets e configurar propriedades no inspetor,
o código é gerado em mapeamento 1:1:
- inspetor: width=30, padding=2, border=rounded
- código: .w(30).p(2).border(Border::Rounded)
2. SuperLightTUI — projetada para esse mapeamento 1:1
É uma biblioteca Rust para TUI.
CSS flexbox + Tailwind
Ela usa o estilo de classes utilitárias, então, se você já tem experiência com desenvolvimento web,
consegue montar layouts sem precisar aprender algo novo.
slt::run(|ui| {
ui.bordered(Border::Rounded).p(2).gap(1).col(|ui| {
ui.text("hello").bold().fg(Color::Cyan);
if ui.button("click").clicked { count += 1; }
});
});
Uma única closure é o aplicativo inteiro. Sem struct App, loop de eventos
ou implementação de trait, ele renderiza em 3 linhas.
- 2 dependências (
crossterm+unicode-width), 0unsafe - renderização em modo imediato, ~1 ms por frame
- mais de 50 widgets (gráficos, tabelas, imagens, widgets de IA etc.)
- também pode ser usada só como biblioteca, sem o editor
Espero que isso ajude quem quer manter o desempenho das TUIs em Rust sem abrir mão da velocidade de desenvolvimento.
- tui.builders: https://tui.builders
- GitHub: https://github.com/subinium/SuperLightTUI
- crates.io: cargo add superlighttui
2 comentários
Eu usava Ratatui, mas era tão trabalhoso que acabei simplesmente largando; isso aqui ataca exatamente os pontos fracos! Muito bom mesmo kkk
Uau! Ficou muito bom!!