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.
There are many integrations to third-party services
, such as:
- Rusoto (AWS)
- Azure
- Redis
- Elasticsearch
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 have 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.
WebAssembly???
Rust can run on the browser by compiling to WebAssembly
. This means that you can take advantage of the amazing Rust ecosystem on the browser! Rust and
WebAssembly integrate with existing Javascript tooling like NPM, Webpack, and ECMAScript modules! There are
some awesome Rust and WebAssembly projects out there. For example, Yew and Seed let you create
front-end web apps with Rust in a way that feels almost like React.js.
For more information about Rust and WebAssembly, check out the Rust and WebAssembly Book.
Getting started
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 Stac