layout |
---|
main |
Yes! And its freaking fast!
Yup! 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 {% include level.html level=2 %}, authorization {% include level.html level=4 %}, templating {% include level.html level=4 %}, and email {% include level.html level=4 %}.
While development might not be as smooth as something like Rails or Django, the Rust web development ecosystem and community is engaged and very helpful. A lot of work has been put into the web in the past few years, and we're getting there!
Rust can even run on the browser, by compiling to WebAssembly {% include level.html level=2 %}. This means that you can take advantage of the amazing Rust ecosystem on the browser! Rust and WebAssembly integrate with existing Javascript tooling. It supports 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.
After you've set up your Rust and worked yourself through "The Book", you might want to check any of these resources:
- Building web apps with Rust using the Rocket framework
- Educational Rust Live Coding - Web App From Scratch
- Actix-Web Auth Microservice
- Practical Rust Web Development (Series)
- Build an API in Rust with JWT Authentication
- Rocket Quickstart
Either way you choose, 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:
-
{% for page in site.pages %}
{% if page.layout == 'topic' %}
- {{page.title}} {% include level.html level=page.level%} {% endif %} {% endfor %}
- {% include level.html level=0 %}: everything is awesome™: stable, tested and mature
- {% include level.html level=1 %}: stuff's pretty great
- {% include level.html level=2 %}: getting there, stable but still maturing
- {% include level.html level=3 %}: not yet stable, but progressing
- {% include level.html level=4 %}: unstable/incomplete, needs work
- {% include level.html level=5 %}: barely there, needs serious work
- {% include level.html level=6 %}: basically nonexistent