Topics
Lower Web-Stack
A strong lower web-stack is important not only to build strong web frameworks on top, but also to allow performance critical systems to reach deeper to squeeze out extra juice. Rust has a good support on HTTP servers, even an HTTP2 implementation, websockets and other protocols.
Testing
Rust and Cargo have a very good system for testing. However, there are still many useful utility crates that make testing easier. Some of them are listed below:
Deployment
How is Rust deployment onto existing server infrastructures? Well, stuff is looking quite good actually.
WebAssembly
Rust can even 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. It supports NPM, Webpack, and ECMAScript modules! Here are some of the awesome Rust and WebAssembly projects out there. For frontend WebAssembly frameworks, see: WebAssembly Frameworks
HTTP Clients
Without a proper HTTP Client there isn't much web - even for the backend, scraping or API-Services on the web HTTP is the protocol of choice. Thus a stable, strong HTTP-Client stack is very important to any web-ecosystem.
Internationalization
Internationalization is still a work in progress. There is no standard mature implementation of i18n in Rust, although there are many newer libraries aiming to fill this gap.
External Services
The modern web development stack doesn't only need a web-server but is often built on a range of external services to provide specific features, from worker queues to search and pubsub. There are many mature crates for popular external services. For services accessed through a Web API, such as Cloud SDKs, see: External Web APIs and for database support, see: Databases
WebAssembly Runtimes
While the main showcase of WebAssembly initially was the web browser, there is new exciting work on using it outside too. Here is a list of WebAssembly runtimes that are compatible with Rust.
Node.js
Rust can be used to write fast and safe native Node.js modules through bindings to the V8 engine!
Database
Proper Database support is crucial for modern web development. This page gives an overview of the various drivers, ORMs, integrations and tools.
Compression Libs
One of the first things almost anyone does to improve performance (specifically bandwidth) is to turn on compression. Luckily compression is well supported in rust.
Web Frameworks
When building a modern web-application you don't want to bother on how to parse the http-header or where the route is supposed to be dispatched to. Frameworks offer exactly those features and make it quick'n'easy to build your specific app on the web-stack. Rust has many backend server frameworks, as well as frontend frameworks for building client apps with webassembly.
Templating
No Web-App is complete if it doesn't spit out HTML at least some of the time. Managing that, and making sure it renders performant and can be maintained is what templating libraries focus on. Rust has many traditional templating languages, as well as macro-based libraries that enforce type safety! Some of these are listed below.
External Web APIs
With many Web-Apps we want to reach farther than our locally hosted services and reach APIs hosted by other platforms and services outside our network. Connecting to the outside world is important, too many modern web applications are useless without an external party they connect to and interact with. There are many client libraries for most of the popular web APIs. Some of them are listed below:
Web Utils
This collects a range of packages which are commonly used and needed in web development, like URL or HTTP-Body-parsers.
Browser
The Webbrowser is the bastion, the holy grail of web development and one of the biggest projects in the Rust ecosystem focusses exactly on that. If Rust achieves to run a browser engine, be used to write server code while also being used as the frontend-development language within the browser, then it will truly be the language of the web like no other.
En- & Decoding
Encoding is one of those things you don't really want to bother about, but just rely on a well tested library for – there are just too many edge and quirky cases. Luckily, as a system language, this is one of the things rust shines at – and offers a set of nice packages for all data formats.
Crypto
Cryptography is a corner stone of a trusted web. Without it many services could not be offered reliably. Rust has strong cryptography libraries. Many of these are managed by Rust Crypto, an organization that maintains cryptography algorithms written in pure Rust.
Syndication/RSS
Syndication has often been announced dead just to still stick around. Parsing and generating good RSS feeds isn't especially hard, but also something you don't necessarily want to have to do yourself. There are some libraries and packages to help you with that.
Async I/O
List of different packages, related to asynchronous I/O and async/await
CMS
Managing digital content is a fundamental part of the web as we have it today. Content management systems aim to make it easier to create, update, and serve digital content. Currently, the Rust CMS ecosytem consists only of static site generators, which serve as frameworks for creating websites from static content files.
Logging
Logging is part of the rust ecosystem for a long time and with log and env_logger you have some great defaults.
Authorization/Authentication
Authorization and Authentication are a big deal for web development. Take OAuth, the most widely used protocol of authentication between services on the web. Such a simple idea, but with so many varying implementations (twitter, facebook, whatever...) and tricky parts in the details – it's almost impossible to get right without a library. Luckily, these crates will help you address authentication problems. For hashing and algorithm crates, see: Cryptography
Serializers
Serializers allow you to easily transfer states and reliably get it back – important not only when working with JSON but also backbone of many types of worker-queue systems. Many of these crates are built on top of Serde, the awesome serialization framework for Rust.
What would the web be without Email? It is one of the mose widely used communication, authentication, and notification systems. There are rust crates providing smtp and imap clients, as well integrations with third party email delivery services.
Binary protocols
Binary protocol support