>_ DevTrendsit

Lingua

Home

Linguaggi

Sezioni

Frontend Backend Mobile DevOps AI / ML GameDev Blockchain Embedded Sicurezza
Rust

Fullstack in Rust senza il dolore e le astrazioni inutili

Quella sensazione familiare: vuoi scrivere una piccola web app in Rust, ma configurare l'infrastruttura richiede più tempo della logica effettiva. Prima scegli un web framework (Axum o Actix-web), poi un motore di template (Askama o Tera), poi cerchi di capire come passare i dati al frontend senza trasformare il tuo codice in infinite descrizioni di endpoint API. Alla fine, un progetto con 10 righe di logica cresce fino a centinaia di righe di configurazione.

Il team di sviluppo di Tokio (sì, le persone che hanno scritto il runtime asincrono per metà dell'ecosistema Rust) ha deciso di risolvere questo problema. Hanno introdotto Topcoat — un framework che cerca di rendere lo sviluppo in Rust veloce e piacevole come Ruby on Rails o Next.js, mantenendo tutti i vantaggi del type safety.

Cos'è in pratica

Topcoat è un framework fullstack modulare che segue il principio "batterie incluse". Non ti costringe a scegliere tra server-side rendering (SSR) e reattività lato client. Invece, offre un approccio ibrido: scrivi codice in Rust e il framework decide autonomamente cosa eseguire sul server e cosa trasformare in JavaScript per il browser.

Il progetto è attualmente in fase iniziale (status sperimentale), quindi l'API potrebbe cambiare. Ma le idee architetturali su cui si basa sembrano molto solide per chi è stanco dello zoo tecnologico.

Reattività senza dolore e bundle WASM

Di solito, se vuoi rendere interattivo un pulsante sulla pagina, hai due strade: scrivere in JS/TS o ricorrere a WebAssembly pesante. Topcoat offre una terza opzione.

Un'espressione speciale $(...) all'interno della macro view! è codice Rust normale. Viene controllato dal compilatore, ma Topcoat sa come tradurlo in JavaScript. Quando scrivi un gestore di click che cambia stato (signal), non hai bisogno di configurare un build frontend o descrivere un'API. Il framework stesso farà funzionare tutto istantaneamente nel browser.

Se un aggiornamento richiede dati dal server (per esempio, una ricerca nel database), entrano in gioco gli "shard". Marchi un componente con l'attributo #[shard], e Topcoat lo ri-renderizzerà automaticamente sul server quando gli argomenti cambiano, poi sostituirà con cura il frammento HTML nel browser.

Routing che porta ordine

Invece di descrivere un albero di percorsi in un enorme file main.rs, Topcoat suggerisce di usare la struttura delle cartelle. Se hai lavorato con Next.js, ti sentirai a casa.

Un file src/app/about.rs diventerà automaticamente disponibile a /about, e src/app/posts/id.rs si trasformerà in un percorso con un parametro /posts/{post_id}. Non c'è magia a runtime — è una funzionalità opzionale che puoi abilitare se ti piace questo tipo di ordine.

Template che restano HTML

Molti motori di template in Rust sono o troppo distanti dall'HTML o ti costringono a scrivere molto codice extra. La macro view! in Topcoat cerca di essere il più vicina possibile al markup, pur permettendoti di usare costrutti Rust normali come cicli for e condizioni if.

A proposito, per chi si preoccupa della pulizia del codice: il pacchetto include un'utilità CLI topcoat fmt che può formattare il codice anche dentro le macro. È una piccola cosa che spesso manca in altri progetti.

Componenti pronti e asset

Gli sviluppatori hanno seguito l'approccio shadcn/ui. Invece di includere una libreria di componenti pesante come dipendenza, usi il comando topcoat ui. Copia il codice dei componenti che ti servono (bottoni, card, form) direttamente nel tuo progetto. Questo ti permette di modificare il design come preferisci senza combattere con gli stili della libreria. Tutto è costruito su Tailwind CSS, che è integrato direttamente nella pipeline di build.

Anche lavorare con immagini e font è semplificato:

I framework aggiungeranno hash ai nomi dei file per la cache e garantiranno che gli asset siano disponibili.

Vale la pena provare adesso

Topcoat sembra un tentativo di creare un framework web "corretto" per Rust, dove il type checking aiuta piuttosto che ostacolare la velocità di sviluppo.

Chi dovrebbe usarlo:

  • Chi vuole costruire rapidamente un prototipo o uno strumento interno in Rust.
  • Sviluppatori stanchi del divario tra backend e frontend.
  • Chi apprezza l'ecosistema Tokio e si fida delle loro decisioni architetturali.

Il progetto sta crescendo attivamente in questo momento. Gli autori pianificano di aggiungere supporto WebSocket, job in background e persino generazione di specifiche OpenAPI. Se stavi cercando una ragione per scrivere qualcosa per il web in Rust, forse l'arrivo di Topcoat è quel segno.

Dai un'occhiata al repository tokio-rs/topcoat — c'è un'ottima guida per iniziare. Ma ricorda: il progetto è sperimentale, quindi usarlo per sistemi mission-critical è ancora un po' prematuro.

Progetti correlati