<!DOCTYPE html>
<html lang=en itemscope itemtype="http://schema.org/Product">
<head>
<meta charset=utf-8>
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel=stylesheet href=https://www.arewewebyet.org/styles.css>
<link rel=stylesheet href=https://www.arewewebyet.org/gh-fork-ribbon.css>
<link href=/atom.xml type=application/atom+xml rel=alternate title="Atom feed (for state changes and news)">
<title>Are we web yet? Yes, and it's freaking fast! </title>
<meta name="description"
content="AreWeWebYet gives insight on whether you can build your latest web-project on top of Rust" />
<link rel="icon" href="https://www.arewewebyet.org/favicon.ico">
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/font-awesome/4.5.0/css/font-awesome.min.css">
<meta itemprop="image" content=https://www.arewewebyet.org/screenshot.png />
<meta name="twitter:image" content=https://www.arewewebyet.org/screenshot.png />
<meta property="og:image" content=https://www.arewewebyet.org/screenshot.png />
<meta property="og:site_name" content="Are We Web Yet?" />
</head>
<body>
<main role="content" class="content">
<img src="/rust.png" alt="" class="rust-logo">
<div class="github-fork-ribbon-wrapper left">
<div class="github-fork-ribbon">
<a href="https://github.com/rust-lang/arewewebyet">Contribute on GitHub</a>
</div>
</div>
<article class="article article--banner-spacing">
<h1>Are we <em>web</em> yet?</h1>
<p class="tagline"><strong>Yes! And it's freaking fast!</strong></p>
<p>
Rust has mature and production ready frameworks in <a href="/topics/frameworks/#pkg-actix-web">Actix Web</a> and
<a href="/topics/frameworks/#pkg-axum">Axum</a>, and innovative ones like <a href="/topics/frameworks/#pkg-warp">Warp</a>
and <a href="/topics/frameworks/#pkg-tide">Tide</a>. 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:</p>
<ul>
<li>
<a href="/topics/database/#pkg-diesel">Diesel</a>, a full-fledged ORM.
</li>
<li>
<a href="/topics/database/#pkg-sqlx">sqlx</a>, the async sql toolkit.
</li>
<li>
As well as native drivers for <a href="/topics/database/#pkg-mongodb">MongoDB</a>, <a
href="/topics/database/#pkg-rusqlite">SQlite</a>, <a href="/topics/database/#pkg-postgres">Postgres</a>, and <a
href="/topics/database/#pkg-mysql">MySQL</a>.
</li>
</ul>
There are many integrations to third-party services
<span class="level-indicator level-1" title="pretty great already" >
<i class="icon fa fa-check-circle-o"></i>
</span>
, such as:
<ul>
<li>
<a href="/topics/web-apis/#pkg-rusoto_core">Rusoto</a> (AWS)
</li>
<li>
<a href="/topics/web-apis/#pkg-azure_sdk_for_rust">Azure</a>
</li>
<li>
<a href="/topics/services/#pkg-redis">Redis</a>
</li>
<li>
<a href="/topics/services/#pkg-elasticsearch">Elasticsearch</a>
</li>
</ul>
<p>And of course, there is plenty of support for basic web needs, like <a href="/topics/logging/">logging</a>
<span class="level-indicator level-1" title="pretty great already" >
<i class="icon fa fa-check-circle-o"></i>
</span>
, <a href="/topics/auth/">authorization</a>
<span class="level-indicator level-1" title="pretty great already" >
<i class="icon fa fa-check-circle-o"></i>
</span>
, <a
href="/topics/templating/">templating</a>
<span class="level-indicator level-0" title="everything is awesome: stable, tested and mature" >
<i class="icon fa fa-check-circle"></i>
</span>
, and <a href="/topics/email/">email</a>
<span class="level-indicator level-1" title="pretty great already" >
<i class="icon fa fa-check-circle-o"></i>
</span>
.</p>
<h2>Can I replace my Rails/Django/Laravel app already?</h2>
<p>
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.
</p>
<h2>WebAssembly???</h2>
<p>Rust can run on the browser by compiling to <a href="/topics/webassembly/">WebAssembly</a>
<span class="level-indicator level-1" title="pretty great already" >
<i class="icon fa fa-check-circle-o"></i>
</span>
. 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 <a href="/topics/webassembly/">awesome Rust and WebAssembly</a> projects out there. For example, <a
href="https://github.com/yewstack/yew">Yew</a> and <a href="https://github.com/seed-rs/seed">Seed</a> let you create
front-end web apps with Rust in a way that feels almost like React.js.</p>
<p>For more information about Rust and WebAssembly, check out the <a
href="https://rustwasm.github.io/docs/book/introduction.html">Rust and WebAssembly Book</a>.</p>
<h2>Getting started</h2>
<p>After you’ve set up your Rust and worked yourself <a href="https://doc.rust-lang.org/book/">through “The Book”</a>,
you might want to check any of these resources:</p>
<ul>
<li><a
href="https://www.youtube.com/watch?v=yNe9Xr35n4Q&list=PL8lUUBadSMNBNKMYJpUE830tBiN6bxVRw&ab_channel=DavidPedersen">Educational
Rust Live Coding - Web App From Scratch</a></li>
<li><a href="https://gill.net.in/posts/auth-microservice-rust-actix-web1.0-diesel-complete-tutorial/">Actix-Web Auth
Microservice</a></li>
<li><a href="https://www.lpalmieri.com/posts/2020-05-24-zero-to-production-0-foreword/">Zero To Production In Rust
(Series)</a></li>
<li><a href="https://dev.to/werner/practical-rust-web-development-api-rest-29g1">Practical Rust Web Development
(Series)</a></li>
<li><a href="https://rocket.rs/guide/v0.5/quickstart/">Rocket Quickstart Guide</a></li>
</ul>
<p>There are also some real world examples that can be looked at for reference:</p>
<ul>
<li><a href="https://github.com/Plume-org/Plume">Plume, a Federated blogging app (Rocket)</a></li>
<li><a href="https://github.com/jetli/rust-yew-realworld-example-app">Yew realworld app (WebAssembly)</a></li>
<li><a href="https://github.com/seed-rs/seed-rs-realworld">Seed realworld app (WebAssembly)</a></li>
<li><a href="https://github.com/LemmyNet/lemmy">Lemmy, a federated alternative to Reddit (actix-web)</a></li>
<li><a href="https://github.com/TatriX/realworld-rust-rocket">Rust + Rocket RealWorld example</a></li>
</ul>
<p>If you find yourself stuck and looking for help, you can check out the <a
href="https://users.rust-lang.org/c/help">official Rust forum</a>, the <a
href="https://stackoverflow.com/questions/tagged/rust">Rust tag on Stackoverflow</a>, or the <a
href="https://discord.com/invite/rust-lang">Rust Discord server</a> where you are welcome to post your questions and
will find excellent help.</p>
<h2>In detail</h2>
<p>Learn more about the state of web development in Rust by topic:</p>
<ul class="topic-list">
<li><a href="https://www.arewewebyet.org/topics/lower-web-stack/">Lower Web-Stack</a>
<span class="level-indicator level-1" title="pretty great already" >
<i class="icon fa fa-check-circle-o"></i>
</span>
</li>
<li><a href="https://www.arewewebyet.org/topics/testing/">Testing</a>
<span class="level-indicator level-1" title="pretty great already" >
<i class="icon fa fa-check-circle-o"></i>
</span>
</li>
<li><a href="https://www.arewewebyet.org/topics/deploy/">Deployment</a>
<span class="level-indicator level-3" title="not yet stable, but progressing" >
<i class="icon fa fa-dot-circle-o"></i>
</span>
</li>
<li><a href="https://www.arewewebyet.org/topics/webassembly/">WebAssembly</a>
<span class="level-indicator level-1" title="pretty great already" >
<i class="icon fa fa-check-circle-o"></i>
</span>
</li>
<li><a href="https://www.arewewebyet.org/topics/http-clients/">HTTP Clients</a>
<span class="level-indicator level-1" title="pretty great already" >
<i class="icon fa fa-check-circle-o"></i>
</span>
</li>
<li><a href="https://www.arewewebyet.org/topics/i18n/">Internationalization</a>
<span class="level-indicator level-4" title="unstable/incomplete, needs work" >
<i class="icon fa fa-dot-circle-o"></i>
</span>
</li>
<li><a href="https://www.arewewebyet.org/topics/services/">External Services</a>
<span class="level-indicator level-1" title="pretty great already" >
<i class="icon fa fa-check-circle-o"></i>
</span>
</li>
<li><a href="https://www.arewewebyet.org/topics/wasm-runtimes/">WebAssembly Runtimes</a>
<span class="level-indicator level-2" title="getting there, stable but still maturing" >
<i class="icon fa fa-chevron-circle-up"></i>
</span>
</li>
<li><a href="https://www.arewewebyet.org/topics/nodejs/">Node.js</a>
<span class="level-indicator level-0" title="everything is awesome: stable, tested and mature" >
<i class="icon fa fa-check-circle"></i>
</span>
</li>
<li><a href="https://www.arewewebyet.org/topics/database/">Database</a>
<span class="level-indicator level-1" title="pretty great already" >
<i class="icon fa fa-check-circle-o"></i>
</span>
</li>
<li><a href="https://www.arewewebyet.org/topics/compression/">Compression Libs</a>
<span class="level-indicator level-1" title="pretty great already" >
<i class="icon fa fa-check-circle-o"></i>
</span>
</li>
<li><a href="https://www.arewewebyet.org/topics/frameworks/">Web Frameworks</a>
<span class="level-indicator level-1" title="pretty great already" >
<i class="icon fa fa-check-circle-o"></i>
</span>
</li>
<li><a href="https://www.arewewebyet.org/topics/templating/">Templating</a>
<span class="level-indicator level-0" title="everything is awesome: stable, tested and mature" >
<i class="icon fa fa-check-circle"></i>
</span>
</li>
<li><a href="https://www.arewewebyet.org/topics/web-apis/">External Web APIs</a>
<span class="level-indicator level-2" title="getting there, stable but still maturing" >
<i class="icon fa fa-chevron-circle-up"></i>
</span>
</li>
<li><a href="https://www.arewewebyet.org/topics/utils/">Web Utils</a>
<span class="level-indicator level-1" title="pretty great already" >
<i class="icon fa fa-check-circle-o"></i>
</span>
</li>
<li><a href="https://www.arewewebyet.org/topics/browser/">Browser</a>
<span class="level-indicator level-4" title="unstable/incomplete, needs work" >
<i class="icon fa fa-dot-circle-o"></i>
</span>
</li>
<li><a href="https://www.arewewebyet.org/topics/encoding/">En- & Decoding</a>
<span class="level-indicator level-1" title="pretty great already" >
<i class="icon fa fa-check-circle-o"></i>
</span>
</li>
<li><a href="https://www.arewewebyet.org/topics/crypto/">Crypto</a>
<span class="level-indicator level-1" title="pretty great already" >
<i class="icon fa fa-check-circle-o"></i>
</span>
</li>
<li><a href="https://www.arewewebyet.org/topics/syndication/">Syndication/RSS</a>
<span class="level-indicator level-1" title="pretty great already" >
<i class="icon fa fa-check-circle-o"></i>
</span>
</li>
<li><a href="https://www.arewewebyet.org/topics/asyncio/">Async I/O</a>
<span class="level-indicator level-1" title="pretty great already" >
<i class="icon fa fa-check-circle-o"></i>
</span>
</li>
<li><a href="https://www.arewewebyet.org/topics/cms/">CMS</a>
<span class="level-indicator level-4" title="unstable/incomplete, needs work" >
<i class="icon fa fa-dot-circle-o"></i>
</span>
</li>
<li><a href="https://www.arewewebyet.org/topics/logging/">Logging</a>
<span class="level-indicator level-1" title="pretty great already" >
<i class="icon fa fa-check-circle-o"></i>
</span>
</li>
<li><a href="https://www.arewewebyet.org/topics/auth/">Authorization/Authentication</a>
<span class="level-indicator level-1" title="pretty great already" >
<i class="icon fa fa-check-circle-o"></i>
</span>
</li>
<li><a href="https://www.arewewebyet.org/topics/serializer/">Serializers</a>
<span class="level-indicator level-0" title="everything is awesome: stable, tested and mature" >
<i class="icon fa fa-check-circle"></i>
</span>
</li>
<li><a href="https://www.arewewebyet.org/topics/email/">Email</a>
<span class="level-indicator level-1" title="pretty great already" >
<i class="icon fa fa-check-circle-o"></i>
</span>
</li>
<li><a href="https://www.arewewebyet.org/topics/binary-protocols/">Binary protocols</a>
<span class="level-indicator level-1" title="pretty great already" >
<i class="icon fa fa-check-circle-o"></i>
</span>
</li>
</ul>
<ul class="legend">
<li>
<span class="level-indicator level-0" title="everything is awesome: stable, tested and mature" >
<i class="icon fa fa-check-circle"></i>
</span>
: everything is awesome<a href="https://www.youtube.com/watch?v=9cQgQIMlwWw"
target="_blank">™</a>: stable, tested and mature</li>
<li>
<span class="level-indicator level-1" title="pretty great already" >
<i class="icon fa fa-check-circle-o"></i>
</span>
: stuff's pretty great</li>
<li>
<span class="level-indicator level-2" title="getting there, stable but still maturing" >
<i class="icon fa fa-chevron-circle-up"></i>
</span>
: getting there, stable but still maturing</li>
<li>
<span class="level-indicator level-3" title="not yet stable, but progressing" >
<i class="icon fa fa-dot-circle-o"></i>
</span>
: not yet stable, but progressing</li>
<li>
<span class="level-indicator level-4" title="unstable/incomplete, needs work" >
<i class="icon fa fa-dot-circle-o"></i>
</span>
: unstable/incomplete, needs work</li>
<li>
<span class="level-indicator level-5" title="barely there, needs serious work" >
<i class="icon fa fa-dot-circle-o"></i>
</span>
: barely there, needs serious work</li>
<li>
<span class="level-indicator level-6" title="basically non-existent" >
<i class="icon fa fa-times-circle"></i> </span>
: basically nonexistent</li>
</ul>
</article>
</main>
<footer>
<div class="devider">
<div class="links">
<ul class="pages">
<li>
<a href="/">Home</a>
</li>
<li>
<a href="/news/">News</a>
</li>
<li>
<a href="/topics/">Topics</a>
</li>
<li>
<a href="/curators/">Curators</a>
</li>
<li>
<a href="/about/">About</a>
</li>
<li>
<a href="https://github.com/rust-net-web/arewewebyet/#contributing">Contribute</a>
</li>
</ul>
</div>
</div>
<p class="last-updated">
Last updated 24 July 2024 -
<a href="https://github.com/rust-net-web/arewewebyet/#license">CC-BY-4.0</a>
</p>
</footer>
</body>
</html>