Are we web yet?
Yes! And it's freaking fast!
Rust has mature and production ready frameworks in Actix Web and Rocket, and newer ones like Warp and Tide. These provide everything you’d expect from a web framework, from routing and middleware, to templating, and JSON/form handling. There are crates for everything, and more! For databases, there’s:
- Diesel, a full-fledged ORM.
- sqlx, the async sql toolkit.
- As well as native drivers for MongoDB, SQlite, Postgres, and MySQL.
And of course, there is plenty of support for basic web needs, like logging , authorization , templating , and email .
Can I replace my Rails/Django/Laravel app already?
Rust does not have a dominant framework at the level of Django or Rails. Most Rust frameworks are smaller and modular, similar to Flask or Sinatra. Rust does has a diverse package ecosystem, but you generally have to wire everything up yourself. Expect to put in a little bit of extra set up work to get started. If you are expecting everything bundled up for you, then Rust might not be for you just yet.
For more information about Rust and WebAssembly, check out the Rust and WebAssembly Book.
After you’ve set up your Rust and worked yourself through “The Book”, you might want to check any of these resources:
- Educational Rust Live Coding - Web App From Scratch
- Actix-Web Auth Microservice
- Zero To Production In Rust (Series)
- Practical Rust Web Development (Series)
- Rocket Quickstart Guide
There are also some real world examples that can be looked at for reference:
- Plume, a Federated blogging app (Rocket)
- Yew realworld app (WebAssembly)
- Seed realworld app (WebAssembly)
- Lemmy, a federated alternative to Reddit (actix-web)
- Rust + Rocket RealWorld example
If you find yourself stuck and looking for help, you can check out the official Rust forum, the Rust tag on Stackoverflow, or the Rust Discord server where you are welcome to post your questions and will find excellent help.
Learn more about the state of web development in Rust by topic:
- Async I/O
- Binary protocols
- Compression Libs
- En- & Decoding
- Web Frameworks
- HTTP Clients
- Lower Web-Stack
- External Services
- Web Utils
- WebAssembly Runtimes
- External Web APIs
- : everything is awesome™: stable, tested and mature
- : stuff's pretty great
- : getting there, stable but still maturing
- : not yet stable, but progressing
- : unstable/incomplete, needs work
- : barely there, needs serious work
- : basically nonexistent