>_ DevTrendspt

Idioma

Início

Linguagens

Seções

Frontend Backend Mobile DevOps AI / ML GameDev Blockchain Embarcados Segurança
Rust

Fullstack em Rust Sem a Dor e Abstrações Desnecessárias

Aquela sensação familiar: você quer escrever uma pequena aplicação web em Rust, mas configurar a infraestrutura leva mais tempo do que a lógica em si. Primeiro você escolhe um framework web (Axum ou Actix-web), depois um motor de templates (Askama ou Tera), e então descobre como passar dados para o frontend sem transformar seu código em descrições intermináveis de endpoints de API. No final, um projeto com 10 linhas de lógica cresce para centenas de linhas de configuração.

O time de desenvolvimento do Tokio (sim, os caras que escreveram o runtime assíncrono para metade do ecossistema Rust) decidiram resolver isso. Eles criaram o Topcoat — um framework que tenta tornar o desenvolvimento em Rust tão rápido e agradável quanto Ruby on Rails ou Next.js, mantendo todos os benefícios da segurança de tipos.

O Que É Isso Anyway

Topcoat é um framework fullstack modular que segue o princípio de "baterias incluídas". Ele não te força a escolher entre server-side rendering (SSR) e reatividade no client-side. Em vez disso, oferece uma abordagem híbrida: você escreve código em Rust, e o framework decide por conta própria o que deve rodar no servidor e o que deve se tornar JavaScript para o navegador.

O projeto está em estágios iniciais (status experimental), então a API pode mudar. Mas as ideias arquiteturais incorporadas nele parecem muito sólidas para quem está cansado do zoológico de tecnologias.

Reatividade Sem Dor e Bundles WASM

Normalmente, se você quer fazer um botão em uma página ganhar vida, você tem dois caminhos: ou escrever em JS/TS, ou arrastar WebAssembly pesado. O Topcoat oferece uma terceira opção.

Uma expressão especial $(...) dentro da macro view! é código Rust regular. Ela é verificada pelo compilador, mas o Topcoat sabe como traduzir para JavaScript. Quando você escreve um handler de clique que muda estado (signal), você não precisa configurar um build de frontend ou descrever uma API. O framework em si vai fazer funcionar instantaneamente no navegador.

Se uma atualização requer dados do servidor (por exemplo, uma busca no banco de dados), os "shards" entram em ação. Você marca um componente com o atributo #[shard], e o Topcoat vai automaticamente re-renderizá-lo no servidor quando os argumentos mudarem, e então trocar cuidadosamente a parte do HTML no navegador.

Rotas Que Tragam Ordem

Em vez de descrever uma árvore de caminhos em um enorme arquivo main.rs, o Topcoat sugere usar estrutura de pastas. Se você já trabalhou com Next.js, vai se sentir em casa.

Um arquivo src/app/about.rs vai automaticamente ficar disponível em /about, e src/app/posts/id.rs vai virar uma rota com um parâmetro /posts/{post_id}. Não tem mágica de runtime envolvida — é um recurso opcional que você pode habilitar se gostar desse tipo de organização.

Templates Que Permanecem HTML

Muitos motores de templates em Rust são ou muito distantes de HTML ou te forçam a escrever muito código extra. A macro view! no Topcoat tenta ser o mais próximo possível de markup, enquanto ainda permite usar constructs regulares de Rust como loops for e condições if.

A propósito, para os preocupados com limpeza de código: o pacote inclui um utilitário CLI topcoat fmt que pode formatar código até mesmo dentro de macros. É uma pequena coisa que frequentemente está faltando em outros projetos.

Componentes Prontos e Assets

Os desenvolvedores seguiram o caminho do shadcn/ui. Em vez de puxar uma biblioteca de componentes pesada como dependência, você usa o comando topcoat ui. Ele copia o código dos componentes que você precisa (botões, cards, formulários) direto para o seu projeto. Isso te permite mudar o design como quiser sem lutar com estilos de biblioteca. Tudo é construído em Tailwind CSS, que é integrado diretamente no pipeline de build.

Trabalhar com imagens e fontes também é simplificado:

Os frameworks vão adicionar hashes aos nomes de arquivos para cache e garantir que os assets estejam disponíveis.

Vale a Pena Experimentar Agora

O Topcoat parece ser uma tentativa de fazer um framework web "correto" para Rust, onde a tipagem ajuda ao invés de atrapalhar a velocidade de desenvolvimento.

Para quem definitivamente é:

  • Quem quer construir rapidamente um protótipo ou ferramenta interna em Rust.
  • Desenvolvedores que estão cansados do gap entre backend e frontend.
  • Quem valoriza o ecossistema do Tokio e confia nas decisões arquiteturais deles.

O projeto está crescendo ativamente agora. Os autores planejam adicionar suporte a WebSocket, jobs em background, e até geração de spec OpenAPI. Se você estava procurando uma razão para escrever algo para web em Rust, talvez a chegada do Topcoat seja esse sinal.

Confira o repositório tokio-rs/topcoat — tem um excelente guia para começar. Mas lembre-se: o projeto é experimental, então usá-lo para sistemas críticos ainda é um pouco prematuro.

Projetos relacionados