- Ao desenvolver para a web com Rust, existe o problema de não haver um framework como o Django, então é preciso fazer muito trabalho manualmente
- Para aproveitar as vantagens do Rust, como sistema de tipos, desempenho e tempo de build, é necessário um framework que facilite o desenvolvimento web
Funcionalidades necessárias
- Roteamento/handlers: é preciso uma funcionalidade que conecte as requisições aos handlers que vão processá-las
- Templates: deve ser possível gerar conteúdos como HTML e JSON
- Servir arquivos estáticos: é necessária uma funcionalidade para servir assets como arquivos CSS
- Login: é necessária uma funcionalidade de login para apps com múltiplos usuários
- Controle de permissões: deve ser possível gerenciar permissões de acesso por usuário
- Interface com banco de dados: é necessária uma funcionalidade para armazenar e gerenciar dados
- Ferramentas administrativas: são necessárias ferramentas que deem suporte a tarefas administrativas básicas
- WebSockets: é necessária uma funcionalidade de WebSocket para transmissão de dados em tempo real
- Hot reloading: é necessária uma funcionalidade que reflita imediatamente alterações no código
Funcionalidades adicionais necessárias
- Tarefas em segundo plano: é necessária uma funcionalidade para executar tarefas conforme uma agenda
- Monitoramento/observabilidade: é necessária uma funcionalidade para monitorar o estado do sistema
- Cache: é necessária uma funcionalidade de cache para melhorar o desempenho
- E-mail e notificações: é necessária uma funcionalidade de notificação para dar suporte a recursos como redefinição de senha
- Ferramentas de deploy: é necessário um método de deploy consistente
- Bundling de CSS/JS: é necessária uma funcionalidade para gerenciar arquivos CSS e JS com eficiência
Ecossistema existente
- Frameworks web: existem frameworks com funcionalidades mínimas, como actix-web e axum
- Conjunto de bibliotecas: existem várias bibliotecas para templates, login, controle de permissões etc., mas faltam soluções integradas
Novo toolkit web
- nicole's web toolkit (newt): está em desenvolvimento um toolkit web que integra várias funcionalidades
- Objetivo: dar suporte para iniciar rapidamente novos apps web
- Plano: pretende oferecer uma solução integrada usando blocos de construção já existentes
Resumo do GN⁺
- Enfatiza a necessidade de um framework web integrado para facilitar o desenvolvimento web com Rust
- Apresenta uma tentativa de superar as limitações dos frameworks web e bibliotecas existentes
- Busca melhorar a experiência do desenvolvedor integrando várias funcionalidades por meio do nicole's web toolkit (newt)
- É uma tentativa digna de atenção de trazer para o ecossistema Rust as vantagens de frameworks como o Django
- Outros projetos com funcionalidades parecidas incluem actix-web e axum
1 comentários
Comentários do Hacker News
Opinião de alguém que gosta de criar coisas divertidas com o mínimo de esforço usando Rust. Embora Rust tenha excelente eficiência e gerenciamento de memória, para desenvolvimento web Go ou Django seriam mais adequados
Rust oferece segurança, ajudando os desenvolvedores a cometer menos erros, e tem a vantagem de permitir escrever código até com ferramentas simples como o Notepad
Como framework web, a opinião é que Rocket é o melhor framework para um "desenvolvedor preguiçoso"
Aproveitando o recurso de pattern matching do Rust, não seria necessário um roteador, e autenticação não seria um problema da linguagem nem do framework
As ferramentas de CSS/JS não se encaixam bem em frameworks frontend em Rust, mas a opinião é que Rust já está maduro o suficiente também para web frontend
Houve surpresa por Rocket não ter sido mencionado, e a opinião é que Rocket tem como objetivo ser um framework "com baterias inclusas"
Fazer desenvolvimento web com Rust é viável, mas haveria problemas de concorrência, além de ser difícil escolher uma biblioteca de componentes
A pessoa está melhorando a UX com Flutter e está satisfeita porque a integração com Rust é fácil
Flutter não respeita o DOM, mas é atraente porque permite criar facilmente uma UX que pode ser implantada em qualquer lugar
Poem é semelhante ao FastAPI, mas a opinião é que a configuração inicial exige muito boilerplate
A expressão "preguiçoso" foi usada no sentido de querer que o framework web cuide das tarefas comuns, mas na prática ainda exigiria muito trabalho
Projetos como loco-rs, poem e rocket já oferecem uma experiência "com baterias inclusas", e a CLI guia esse processo
F# oferece um sistema de tipos e ferramentas semelhantes aos de Rust, mas com menos complexidade em processamento assíncrono e gerenciamento de memória
A opinião é que o autor quer um framework para Rust semelhante ao Spring Boot