The Rust Programming Language
The Rust Reference
Style Guidelines
Rust Playground
The Alternative Rust Playground by Integer 32
GitHub org:
The Rust Programming Language
rust-lang-nursery
rust-lang-deprecated
Getting started - Rust Programming Language
Other Installation Methods - Rust Forge
murarth/rusti: REPL for the Rust programming language
Rust tutorial: Get started with Rust, the language for safer code
Are we (I)DE yet?
Why the Rust language is on the rise | InfoWorld
Rust 2018 is here… but what is it? - Mozilla Hacks - the Web developer blog
A brief history of Rust at Facebook - Engineering at Meta
Rust: Turtles all the way down - YouTube
unsafe
block and macro makes Rust self contained
Rust in 2018 - In Pursuit of Laziness
Announcing Rust 1.30 - The Rust Programming Language Blog
State Of Rust
Five Years of Rust | Rust Blog
All Rust features explained - YouTube ❗!important
Introduction to Rust Part 1 - YouTube
Introduction to Rust Part 2 - YouTube
Intel and Rust: the Future of Systems Programming: Josh Triplett - YouTube
zkat/rust-notes: Personal notes while learning Rust. Mainly documenting pain points along the way.
C vs. Rust: Which to choose for programming hardware abstractions | Opensource.com
Rust - YouTube
No Boilerplate - YouTube
The Rust Programming Language - YouTube
C++Now 2017: Niko Matsakis "Rust: Hack Without Fear!" - YouTube
#151: Rust with Steve Klabnik and Yehuda Katz - The Changelog
SE-Radio Episode 279: Florian Gilcher on Rust : Software Engineering Radio
Rust in Production
Getting Started
Getting Started - The Rust Programming Language
rustup.rs - The Rust toolchain installer NVM for Rust
Rustup - ArchWiki
yay -S rustup cargo-install
rustup show
rustup toolchain install stable
rustup update
rustup default stable
# install tools
rustup component add rustfmt rls
rustup install nightly
Cargo
Getting started with the Rust package manager, Cargo | Opensource.com
The Cargo Book
Configuration - The Cargo Book
Environment Variables - The Cargo Book
My top 7 Rust commands for using Cargo | Opensource.com
cargo new project # bin at ./project/
cargo new --lib library # lib at ./library/
cargo init # at pwd
cargo build
RUSTFLAGS='-C target-feature=+crt-static' cargo build --release
cargo run
RUSTFLAGS='-C target-feature=+crt-static' cargo run --release
cargo bench
cargo test
dtolnay/semver-trick: How to avoid complicated coordinated upgrades
Specifying Dependencies - The Cargo Book
Cargo: predictable dependency management - The Rust Programming Language Blog
How Rust Solved Dependency Hell - Stephen Coakley
Cargo Workspaces - The Rust Programming Language
Specifying Dependencies - The Cargo Book
dimensionhq/fleet: 🚀 The blazing fast build tool for Rust.
Cargo tools
cargo-bins/cargo-binstall: Binary installation for rust projects
kbknapp/cargo-graph: A cargo subcommand for creating GraphViz DOT files and dependency graphs
RazrFalcon/cargo-bloat: Find out what takes most of the space in your executable.
flamegraph-rs/flamegraph: Easy flamegraphs for Rust projects and everything else, without Perl or pipes <3
Editions
The source code is compiled to High level intermediate representation, then mid level, then LLVM IR, then machine code. Editions mostly affect MIR.
rust-lang/rustfix: Automatically apply the suggestions made by rustc
Rust Libz Blitz
The Rust Libz Blitz - The Rust Programming Language Blog
brson/rust-api-guidelines
Learn
Learn Rust - Rust Programming Language
rust-lang/rustlings: Small exercises to get you used to reading and writing Rust code! code kata
Rust Developer Bootcamp Free Training ❗!important
Learn Rust Programming Course – Interactive Rust Language Tutorial on Replit
Rust Programming Course for Beginners - Tutorial - YouTube
How to learn Rust: A resources guide for developers - TechRepublic
Latest News - Hello, Rust!
How not to learn Rust
Let's Get Rusty – Let's Get Rusty
Let's Get Rusty - YouTube
No Boilerplate
How to Learn Rust - YouTube
Rust Is Easy - YouTube the compiler teaches you
Rust is not a faster horse - YouTube
Learning Rust the wrong way - Ólafur Waage - NDC TechTown 2022 - YouTube
Getting started:
Getting started with Rust
You Want to Learn Rust but You Don’t Know Where to Start | by Shinichi Okada | Towards Data Science
Learn about Rust and how to get started | Opensource.com
Get started with Rust in Windows programming | InfoWorld
A Tour of Rust - YouTube
Rust Crash Course | Rustlang - YouTube
Intro to Rust - YouTube
Learning Rust
Learn Rust in Y Minutes
A half-hour to learn Rust 2020-01
bradtraversy/rust_sandbox: Fundamentals of the Rust language
Rust for the impatient - YouTube
Rust Talks - YouTube
Rust Tutorial Full Course - YouTube 2022-07
Let's Get Rusty - YouTube
Rust Programming Tutorial - YouTube
Hello Rust! a lighthearted live-programming channel
Hello Rust! - YouTube
Hello Rust! GitHub org
Declarative Programming in Rust - YouTube
12 Things to Help You Learn Rust - YouTube
Let's Build Snake with Rust
Rust in the Browser for JavaScripters: New Frontiers, New Possibilities - YouTube
Rust | Opensource.com
Rustaceans the community of Rust users
rust-unofficial/awesome-rust: A curated list of Rust code and resources.
gamazeps/Useful-Rust-Projects: List of community wanted libraries
ctjhoa/rust-learning: A bunch of links to blog posts, articles, videos, etc for learning Rust
mankyKitty/rust-koans: Learn Rust by making tests pass
Mercateo/rust-for-node-developers: An introduction to the Rust programming language for Node developers.
fanderzon/rust-for-nodejs-devs: Example code for the Rust for Node.js developers
series
From Python to Rust - YouTube
From Python To Rust Series Archives - rebelScience
rochacbruno/py2rs: A quick reference guide for the Pythonista in the process of becoming a Rustacean
Learning Rust by Converting Python to Rust | by Shinichi Okada | Towards Data Science
Introduction | Rust for C++ Programmers nrc/r4cppp: Rust for C++ programmers
Introduction | Rust for C++ Programmers
rust-4-cpp2.pdf
30 minutes of Introduction to Rust for C++ programmers
C++ Developer Learns Rust (aka Oxidizing C++ Skills For Fun and Profit) - YouTube
Rust Your Own Lisp - DEV Community 👩💻👨💻
Rust Archives - Knoldus Blogs
fasterthanli.me
Rust review Series - Julio Merino
into_rust(): screencasts for learning Rust 2016
skyzh/type-exercise-in-rust: Learn Rust generics by implementing basic types in database systems
rust-analyzer Rust LSP
Compiler
rustc --print cfg
Rust Creator Graydon Hoare Recounts the History of Compilers - The New Stack
Cargo refused to build my project - A Rust debugging story!
The Rust compiler is still getting faster | Nicholas Nethercote
Rustlog : Why is a Rust executable large?
How to speed up the Rust compiler | Nicholas Nethercote
How to alleviate the pain of Rust compile times
google/rerast: A tool for transforming Rust code using rules
Kindelia/HVM: A massively parallel, optimal functional runtime in Rust
Winning the fight against the Rust compiler (Coherence in Rust, feat. rustc sources) only allow one specific implementation, compiler hacking
Get under the hood of Rust Language with Assembly!! Rust Programming Tutorial - YouTube
RUSTFLAGS='--emit asm' cargo build
cargo install cargo-show-asm
cargo asm <bin>::main --dev --rust
Conditional Compiling
The Manifest Format - The Cargo Book
Can someone explain how features work in Cargo? : rust
cfg - Rust By Example
Conditional compilation - The Rust Reference
Linkage
RUSTFLAGS='-C target-feature=+crt-static' cargo build
# musl is static by default
cargo build --target x86_64-unknown-linux-musl
RUSTFLAGS='-C target-feature=+crt-static' cargo build --release
rust - How to generate statically linked executables? - Stack Overflow
"cannot produce proc-macro for crate
as the target x86_64-unknown-linux-gnu
does not support these crate types" with +crt-static · Issue #78210 · rust-lang/rust
Static Build of Rust Executables | Ivanovo
Building static Rust binaries for Linux | Harsh Shandilya
MUSL support for fully static binaries - The Edition Guide
Linkage - The Rust Reference
1721-crt-static - The Rust RFC Book
Enabling +crt-static
in a blanket way breaks dynamic libraries including proc macros · Issue #71651 · rust-lang/rust
Striping:
Target | Size |
---|---|
dynamic debug gnu | 4.3M |
static debug gnu | 4.3M |
static release gnu | 5.8M |
strip -s | 1.2M |
strip = "debuginfo" | 1.4M |
static debug musl | 4.4M |
strip = "symbols" | 1.2M |
static release musl | 412k |
Cross compile
## print supported targets
rustc --print target-list
rustup target list
rustup target install i686-pc-windows-msvc x86_64-apple-darwin
rustup target add armv7-unknown-linux-musleabi
RUSTFLAGS='-C target-feature=+crt-static --emit asm' cargo build --release --target armv7-unknown-linux-musleabi
cross-rs/cross: “Zero setup” cross compilation and “cross testing” of Rust crates
warricksothr/RustBuild
zinc.rs
japaric/rust-everywhere: Use CI services to generate binary releases of your Rust program for Linux, Mac and Windows
japaric/trust: Travis CI and AppVeyor template to test your Rust crate on 5 architectures and publish binary releases of it for Linux, macOS and Windows
japaric/cross: "Zero setup" cross compilation and "cross testing" of Rust crates
kennytm/rust-ios-android: Example project for building a library for iOS + Android in Rust.
Geal/rust_on_mobile
japaric/ruststrap
Rust bare metal on ARM microcontroller
ARM v6 and v7 target · Issue #34 · richfelker/musl-cross-make "hf" stands for "hard float"
Zero cost stack overflow protection for ARM Cortex-M devices | Embedded in Rust
Android
Rust nightly for android - The Rust Programming Language Forum
Building for Android · servo/servo Wiki
Deployment
shuttle
shuttle-hq/shuttle: Build & ship backends without writing any infrastructure files.
Syntax
Karol Kuczmarski's Blog – patterns
Rust Means Never Having to Close a Socket
String
std::string::String - Rust
Strings - Rust By Example
String Types in Rust - Suspect Semantics
Rust: str vs String
What are the differences between Rust's String
and str
? - Stack Overflow
let face: char = '\u{1F600}' // char is unicode code point
a_str.to_string(); // str -> String
let a_String = String::from(a_str); // str -> String
a_String.as_str(); // String -> str
Print Formatting
std::fmt - Rust
std::fmt::Display - Rust
std::format - Rust format!
Formatted print - Rust By Example
Display - Rust By Example
println!("{}", a); // requires object to have Display trait
println!("{name}"); // named argument
println!("{:?}", (12, true, "hello")); // debug print
// add `#[derive(Debug)]` to your struct to enable `{:?}` output
Rc/Arc
Optimizing Immutable Strings in Rust - DEV Community
Arc::clone()
cloning the smart pointer, Arc::From<String>
(returns Arc<str>
) real only reference to buffer
Arc in std::sync - Rust
Arc - Rust By Example
Use Arc Instead of Vec - YouTube
- immutable data
- for struct fields, in array or collection
- especially those with
Clone
trait Arc
has constant timeClone
- implements
Deref
trait
can be used as drop-in replace ofVec
Rc
is even lighter weight for single thread use
Containers
Lists, Arrays, Vectors: linear containers in Python, Ruby and Rust (part 3) - DEV Community 👩💻👨💻
Iterators
std::iter - Rust
std::iter::Iterator - Rust
Traits
Traits and Trait Objects in Rust · joshleeb
Traits from the Ground Up
#[derive(Trait)]
Option
std::option - Rust nullable in other languages
Option in std::option - Rust Option<T> = Some(value:T) | None
Option - Rust By Example
Option & unwrap - Rust By Example
let optional: Option<float>;
optional.unwrap(); // float or panic
optional.expect("this should be a float"); // custom error message
optional.unwrap_or(0.0) // default value
// comprehensive
let f = match optional {
None() => panic!("this should be a float")
Some(f) => f,
}
let inner:float = optional?; // another (more elegant) way to unwrap (or return None to propagate error up the call stack)
Option.map() in std::option - Rust map the container to different type
fn process(food: Option<Food>) -> Option<Cooked> {
food.map(|f| Peeled(f))
.map(|Peeled(f)| Chopped(f))
.map(|Chopped(f)| Cooked(f))
}
Results
Like Option<T>
but for is an OK<T>
type
Rust's Most Important Containers 📦 10 Useful Patterns - YouTube
.unwraps()
takes the value, if present; .ok_*()
converts between Result
and Option
Result.map() in std::result - Rust map the container to different type
Option.ok_or()
, Option.ok_or-else()
converts Option
to Result
?
operator do unwrap and return error (replacing try!
macro), simplifying error handling
The ? operator for easier error handling - The Edition Guide
f.read_to_string(&mut s)?;
// is equivalent to
match f.read_to_string(&mut s) {
Ok(_) => Ok(s),
Err(e) => Err(e),
}
Closures
Closures
Closures - Rust By Example
Finding Closure in Rust | Huon on the internet
|val| val + x
: x is captured
||
instead of()
{}
are optional for single expression
Modules
Local Module: mod cat;
will look for ./cat.rs
or cat/mod.rs
This will create a namespace cat
, use cat::mod
and cat::function()
to access submodules and functions.
Modules - The Rust Programming Language
RustConf 2019 - The Rust 2018 Module System by Josh Triplett - YouTube
// just use `use` to import macro after 1.30
// https://doc.rust-lang.org/1.29.0/book/first-edition/macros.html?highlight=macro_use#scoping-and-macro-importexport
#[macro_use]
extern crate log;
use log::{debug, error, info, trace, warn};
Macros
cargo expand
generate files with macros expand
macro_rules! - Rust By Example
Ace Rust Macros ♠️ the declarative kind - YouTube
Procedural Macros (and custom derive) - The Rust Programming Language as compiler plugin, used in Rocket
Procedural macros by nrc · Pull Request #1566 · rust-lang/rfcs
Procedural Macros in Rust · joshleeb
dtolnay/proc-macro-hack: Procedural macros in expression position
The Little Book of Rust Macros
6 useful Rust macros that you might not have seen before
Rhai
"RustScript"
Rhai – Embedded Scripting for Rust
Books
Learn Rust - Rust Programming Language
Docs that is available locally with rustup doc
First party
The Rust Programming Language The Book
Experiment Introduction - The Rust Programming Language The Book with exercises
Rust By Example
The Edition Guide
Rust Forge
The Rust Reference
Rust Cookbook
Rust API Guidelines
The Rustonomicon unsafe Rust
What is rustdoc? - The rustdoc book
What is rustc? - The rustc book
Rust Compiler Development Guide
Rust Compiler Error Index
Command Line Applications in Rust
Asynchronous Programming in Rust
Rust RFCs
The Little Book of Rust Macros
Learning Rust With Entirely Too Many Linked Lists Rust's type safety makes this has to be done in unsafe mode
24 days of Rust
Introduction to Programming Using Rust
Rust Design Patterns
vinodotdev/node-to-rust
The Rust Language & Ecosystem - The Rust eBookshelf
Tracking issue for RFC 1828: Rust Bookshelf · Issue #39588 · rust-lang/rust
Download 'The Rust Programming Language' E-Books (PDF, EPUB, MOBI) OBSOLETE
Tips and Tricks
Speedy Desktop Apps With GTK and Rust | Nora Codes
ENOSPC pitfalls
Pascal Hertleif - Writing Idiomatic Libraries in Rust - YouTube
Things you can’t do in Rust (and what to do instead) - LogRocket Blog
5 Better ways to code in Rust - YouTube VS Code setup
backtrace
std::backtrace - Rust
backtrace - Rust
RUST_BACKTRACE=1 my_rust_app
RUST_BACKTRACE=1 cargo run --bin my_binary
# for debugging compile error
RUST_BACKTRACE=1 cargo build
debugging - What is RUST_BACKTRACE supposed to tell me? - Stack Overflow
Rust Lang Server
Introducing Rust Language Server, source release - tools and infrastructure - Rust Internals
rust-lang-nursery/rls: Repository for the Rust Language Server (aka RLS)
RLS now available on nightly
The Rust IDE and editor setup guide
Internals
Fearless Concurrency with Rust - The Rust Programming Language Blog
Introducing MIR - The Rust Programming Language Blog
Mozilla's Rust language doubles down on speed and simplicity | InfoWorld
rust-lang/miri: An interpreter for Rust's mid-level intermediate representation
Visualizing memory layout of Rust's data types - YouTube
How debuggers really work | Opensource.com
Using unsafe tricks to examine Rust data structure layout
The Tale of a Bug in Arc: Synchronization and Data Races Arc = Atomically Reference Counted
Ownership in Rust, Part 1 – Thomas Countz – Medium
Ownership in Rust, Part 2 – Thomas Countz – Medium
Rust Concurrency with Alex Crichton | Software Engineering Daily on ownership
Ownership Model
Understanding Ownership - The Rust Programming Language
Type | Ownership | Alias? | Mutate? |
---|---|---|---|
T | Owned | ✔ | |
&T | Shared Reference | ✔ | ✗ (while aliasing) |
&mut T | Mutable Reference | ✔ (original reference disabled) |
Passing variables to funtion moves ownership to the function by default.
Closures borrow references by default.
- use
Clone
trait
explicit pass by.clone()
- use
Copy
trait (Clone
is required)
implicititly make.clone()
the default when calling functions - pass a read only reference (borrowing)
let r: &'l Book = &book; // explicitly define lifetime
// return value have same lifetime as input Vector
fn first<'l>(v: &'l Vec<Book>) -> &'l String {
return &v[0];
}
// shorthand
fn first(v: &Vec<Book>) -> &String {
return &v[0];
}
rust-lang/polonius: Defines the Rust borrow checker.
What is Polonius? - Polonius
Rust: What is Ownership and Borrowing? - YouTube
Rust Demystified 🪄 Simplifying The Toughest Parts - YouTube borrowing, references and lifetime
Rust Mutability, Borrows, and Moves - the ULTIMATE Tutorial! - YouTube 50 mins
Why Rust's ownership/borrowing is hard
Why Rust's ownership/borrowing is hard | Hacker News
Graphical depiction of ownership and borrowing in Rust - Rufflewind's Scratchpad
Fear not the Rust Borrow Checker
Ownership in Rust, Part 1 - Thomas Countz - Medium
Ownership in Rust, Part 2 - Thomas Countz - Medium
A closer look at Ownership in Rust | Articles by thoughtram
Rust Mutability, Moving and Borrowing - The Straight Dope - tutorials - The Rust Programming Language Forum
Rust's Ownership model for JavaScript developers | Articles by thoughtram
Rust's Rules Are Made to Be Broken | Warp
Lifetimes
-
only relavent for reference
struct SomeStruct<'l> { num: &'l i32 } fn biggest<'l>(a: &'l Type, b: &'l Type) -> &'l Type { //... }
-
does not change the lifetimes of the parameters
-
can sometimes be inferred
Understanding lifetimes - help - The Rust Programming Language Forum
Validating References with Lifetimes - The Rust Programming Language
Lockout, Part 1: Everything you know about lifetimes is wrong. | The Diagonal Device
Pinning
Pin, Unpin, and why Rust needs them self-referential object
Pin and suffering - fasterthanli.me
Testing
mitsuhiko/insta: A snapshot testing library for rust
Servo
[1505.07383] Experience Report: Developing the Servo Web Browser Engine using Rust
Programming Servo: A ‘script’ event-loop – Programming Servo – Medium
Derivatives
willcrichton/lia: A high-level language for Rust
How Rust can replace C, with Python's help | InfoWorld
Commentaries
Pascal’s scribbles - Pascal’s Scribbles
Fun facts about Rust's growing popularity 2017
Rust is being destroyed from the inside - YouTube
Rust: A Language for the Next 40 Years - Carol Nichols - YouTube slides
When Zero Cost Abstractions Aren’t Zero Cost | Considerations on Codecrafting
Using Rust at a startup: A cautionary tale
Don't Learn Rust - YouTube
Rust: Built to Last
What is the Rust language? Safe, fast, and easy software development | InfoWorld
What you need to know about Rust in 2020 | Opensource.com
Why to choose Rust as your next programming language | Opensource.com
An In-Depth Comparison of Rust and C++ | by Adiákopi Mními | Better Programming
Why Discord is switching from Go to Rust - Discord Blog
My first impressions of Rust - DEV Community 👩💻👨💻
What is Rust and why is it so popular? - Stack Overflow Blog
How do Rust and Go compare against each other? - Quora
Rust vs. Go: Why They’re Better Together – The New Stack
Rust vs Go in 2023 — Bitfield Consulting
Rust and Go — Medium
How Rust Compares to Other Programming Languages - The New Stack
Adventures in Rust
The Observation Deck » Falling in love with Rust Statemaps of dtrace
Interview with Steve Klabnik: How Rust Compares to Other Languages and More | Codementor
Why I ❤ Rust // Speaker Deck
My Key Learnings after 30,000 LOC in Rust – Dotan Nahum – Medium
Programming in Rust: the good, the bad, the ugly. – Hacker Noon
“Rust is the future of systems programming, C is the new Assembly”: Intel principal engineer, Josh Triplett | Packt Hub
Rust 语言的编程范式 | 酷 壳 - CoolShell
Rust from the view of a Java geek
Why I think C++ is still a desirable coding platform compared to Rust
Why i think C++ is better than rust - YouTube
Should you use RUST as your FIRST programming language? - YouTube
Why You SHOULDN'T Learn Rust - YouTube
Prime Learns The Truth About Rust - YouTube
Theo Line, The Line of Prime
Don't choose Rust when requirement is flexible
Dwelo
We Rewrote Our IoT Platform in Rust and Got Away With It
Abusing Fire for Light - Dwelo Research and Development - Medium
Codeship
Coming to Rust from Ruby - via @codeship | via @codeship
Rust: Systems Programming with a Safety Net - via @codeship | via @codeship
Armin Ronacher
Entries tagged “rust” | Armin Ronacher's Thoughts and Writings
Such a Little Thing: The Semicolon in Rust | Armin Ronacher's Thoughts and Writings
UCS vs UTF-8 as Internal String Encoding | Armin Ronacher's Thoughts and Writings
Revenge of the Types | Armin Ronacher's Thoughts and Writings
A Fresh Look at Rust | Armin Ronacher's Thoughts and Writings
On Error Handling in Rust | Armin Ronacher's Thoughts and Writings
Don't Panic! The Hitchhiker's Guide to Unwinding | Armin Ronacher's Thoughts and Writings
Improved Error Handling in Rust | Armin Ronacher's Thoughts and Writings
Rust for Python Programmers | Armin Ronacher's Thoughts and Writings
Rust and Rest | Armin Ronacher's Thoughts and Writings
Joel's Journal
A Simple Web App in Rust, Part 1
A Simple Web App in Rust, Part 2a
A Simple Web App in Rust, Part 2b
A Simple Web App in Rust, Part 3 -- Integration
A Simple Web App in Rust, Part 4 -- CLI Option Parsing
Niko Matsakis
nikomatsakis/rust-tutorials-keynote: Keynote versions of my Rust tutorials.
www.rust-tutorials.com/exercises/
www.rust-tutorials.com/RustConf16/
Matt Gathu
Writing a Command Line Tool in Rust
Testing a Rust Command Line Tool
Rust for Python Programmers by Matt Gathu
Crates
crates.io: Rust Package Registry
Lib.rs — home for Rust crates // Lib.rs
Crate List - Blessed.rs
The best Rust frameworks to check out in 2019 - LogRocket Blog
Rust blueprint project - announcements - The Rust Programming Language Forum
Diesel Safe, Extensible ORM and Query Builder
launchbadge/sqlx: 🧰 The Rust SQL Toolkit.
tafia/quick-xml: Rust high performance xml reader and writer reference the design
botika/yarte: Yarte stands for Yet Another Rust Template Engine, is the fastest template engine
typenum Docs.rs bits and int parser
12 Killer Rust Libraries You Should Try – Dotan Nahum – Medium
Rust Must-Know Crates - DEV Community 👩💻👨💻
Standard Library
std - Rust
async_std - Rust
async-rs/async-std: Async version of the Rust standard library
HTTP/HTML
hyper.rs An http library for Rust
Skip the Framework: Build A Simple Rust API with Hyper - DEV Community 👩💻👨💻
utkarshkukreti/select.rs: A Rust library to extract useful data from HTML documents, suitable for web scraping.
SimonSapin/kuchiki: (朽木) HTML/XML tree manipulation library for Rust
Templating in rust » AWWY?
sunng87/handlebars-rust: Rust templating with Handlebars
djc/askama: Type-safe, compiled Jinja-like templates for Rust
Keats/tera: A template engine for Rust based on Jinja2/Django
Web Backend
Are we web yet? Getting there.
A web application completely in Rust – Sascha Grunert – Medium
saschagrunert/webapp.rs: A web application completely written in Rust.
Practical Rust Web Development - API Rest - DEV Community 👩💻👨💻
Build an API in Rust with JWT Authentication using Nickel.rs
Wiki - ActuallyUsingIron
Creating Expedient Microservices in Rust and Diesel - via @codeship | via @codeship
Intro to Web Development with Rust for NodeJS Developers - DEV Community 👩💻👨💻 series
Auth Web Microservice with rust using Actix-Web 1.0 - Complete Tutorial - Harry Gill
Rust 🦀 CRUD Rest API with Docker 🐳 - DEV Community
Iron - Rust web application framework
Rustless - API micro-framework for Rust
nickel.rs - web application framework for rust
pencil - Rust inspired by Flask
warp - crates.io: Rust Package Registry
gotham - crates.io: Rust Package Registry
actix - Rust
Build A Rust Backend (Really FAST Web Services with Actix Web) - YouTube
axum - Rust
axum - crates.io: Rust Package Registry
tokio-rs/axum: Ergonomic and modular web framework built with Tokio, Tower, and Hyper
Rocket: Web Framework for Rust
show_notes::cysk::rocket - Rust
Rust Rocket Series Series' Articles - DEV Community
Build Web Apps With RUST (aka Intro Into Web Framework ‘Rocket’) - YouTube
http-rs/tide: Fast and friendly HTTP server framework for async Rust
Tide is perhaps my favorite Rust web app framework. - YouTube
Writing a proxy in Rust and why it is the language of the future - Medium
MovingGauteng/shorty-rs: A simple URL shortener, written in Rust and gRPC
Web Frontend
see
web-assembly.md#rust
The Path to Rust on the Web
A web application completely in Rust – Sascha Grunert – Medium
koute/stdweb: A standard library for the client-side Web
koute/cargo-web: A Cargo subcommand for the client-side Web
leptos - Rust
gbj/leptos: Build fast web applications with Rust.
Introduction | Yew
yewstack/yew: Rust / Wasm framework for building client web apps
Yew Megatutorial Series' Articles - DEV Community
davidedelpapa/yew-tutorial: Tutorial for WASM using Rust and Yew
Patternfly Yew Quickstart
A Rusty frontend: Patternfly & Yew — ctron's blog
Build A Rust Frontend (Really FAST Web Apps with Yew) - YouTube
CLI
Getting Started with Systems Programming with Rust (Part 1) - DEV Community
Getting Started with Systems Programming with Rust (Part 2) - DEV Community
Rust2018 And The Great Cli Awakening
rust-crates/ergo: the ergo crate ecosystem: making rust's ecosystem more ergonomic, therefore more fun.
clap.rs – Fast. Configurable. Argument Parsing for Rust
clap-rs/clap: A full featured, fast Command Line Argument Parser for Rust
Get started with quicli
killercup/quicli: Quickly build cool CLI apps in Rust.
Writing CLIs in Rust is awesome obsoleted by clap.rs 3?
structopt - Rust
TeXitoi/structopt: Parse command line argument by defining a struct.
redox-os/termion: Mirror of https://gitlab.redox-os.org/redox-os/termion
cpjreynolds/rustty: A terminal UI library
Logger
log - Rust
pretty_env_logger - Rust
log4rs - Rust
syslog - Rust
Geal/nom: Rust parser combinator framework
Image Processing
silvia-odwyer/photon: ⚡ Rust/WebAssembly image processing library
imazen/imageflow: High-performance image manipulation for web servers. Includes imageflow_server, imageflow_tool, and libimageflow
magiclen/image-convert: A high level library for image identification, conversion, interlacing and high quality resizing.
nlfiedler/magick-rust: Rust bindings for ImageMagick
GUI
Are we GUI yet? 2019
Rust GUI: Introduction, a.k.a. the state of Rust GUI libraries (As of January 2021) - DEV Community
Why is building a UI in Rust so hard? | Warp
Rust 2020: GUI and community | Raph Levien’s blog
Advice for the next dozen Rust GUIs | Raph Levien’s blog
iced - A cross-platform GUI library for Rust
iced-rs/iced: A cross-platform GUI library for Rust, inspired by Elm
Overview - Druid
linebender/druid: A data-first Rust-native UI design toolkit.
audulus/rui: Experimental Rust UI library
fruiframework/frui: A developer-friendly framework for building user interfaces in Rust
rust-windowing/winit: Window handling library in pure Rust
CXX-Qt Documentation
KDAB/cxx-qt: Safe interop between Rust and Qt
leptos-rs/leptos: Build fast web applications with Rust.
Dioxus
Dioxus | An elegant GUI library for Rust
IntroductionDemonthos/sledgehammer_bindgen Rust binding to JSDOM
Xilem
targets to be a cross-platform, cross-language rendering engine
linebender/xilem: An experimental Rust native UI framework
linebender/piet-gpu: An experimental GPU compute-centric 2D renderer.
Xilem: an architecture for UI in Rust | Raph Levien’s blog
linebender/xilem: An experimental Rust native UI framework
High Performance Rust UI - YouTube
Data Science
rust-ndarray
ndarray - crates.io: Rust Package Registry
Rust for Data Science: Tutorial 1 - DEV Community
Concurrency
rayon-rs/rayon: Rayon: A data parallelism library for Rust
How Rust makes Rayon's data parallelism magical - Red Hat Developer
MAY - Rust Stackful Coroutine Library | Xudong-Huang's Blog
Rust parallelism for non-C/C++ developers – NEAR Protocol – Medium
Fearless Concurrency - The Rust Programming Language
Rust Concurrency Explained - YouTube
Weld
Interview with Weld’s main contributor: accelerating numpy, scikit and pandas as much as 100x with Rust and LLVM
File I/O
Getting Started with Rust: Working with Files and Doing File I/O | Linux Journal
Async/Future
Explained: How does async work in Rust? – Levelup Your Coding
Getting Started - Asynchronous Programming in Rust
Async Rust in Practice: Performance, Pitfalls, Profiling - The New Stack
Intro to async/.await in Rust - YouTube
futures - Rust
Explained: Rust Futures for Web Development – ITNEXT
Understanding Futures In Rust -- Part 1 | Viget
Understanding Futures in Rust -- Part 2 | Viget
Byron/github-star-counter: A playground to test ergonomics of Rust async programming
bytedance/monoio: Rust async runtime based on io-uring.
Rust's Journey to Async/Await - YouTube
Rust has Future
and await
built-in but lacks an async runtime (executor), use tokio
DataDog/glommio: Glommio is a thread-per-core framework that aims to make the task of writing highly parallel asynchronous applications in a thread-per-core architecture easier for rustaceans. coroutine on io-uring
Tokio
Tokio fast asynchronous I/O framework, uses io-uring
Tokio internals: Understanding Rust's asynchronous I/O framework from the bottom up : Caffeinated Bitstream
Creating a Chat Server with async Rust and Tokio - YouTube
mio - Rust
tokio-rs/mio: Metal IO library for Rust
use std::time:Duration;
use tokio::time::sleep;
#[tokio::main]
async fn main() {
let handles: Vec<JoinHandle<()>> = vec![]
for i: i32 n 0..2{
let handle: JoinHandle<()> = tokio::spawn(future: async move {
my_function.await(i);
});
handles.push(handle);
}
}
async fn my_function(i: i32) {
sleep(Duration::from_millis(50)).await;
// tokio's sleep current Future instead of entire thread
return i+1;
}
tokio-rs/console: a debugger for async rust!
Linters
rust-lang-nursery/rustfmt: Format Rust code
rust-lang-nursery/rust-clippy: A bunch of lints to catch common mistakes and improve your Rust code
regexident/rustfmt-configs-guide: A visual guide for rustfmt's configs
#perfmatters
rustc performance data
Is It Time to Rewrite the Operating System in Rust? - YouTube
Benchmark tests
Benchmarking in Rust — Llogiq on stuff
Performance Tuning in Rust using Benchmarking and Perf
rust-lang/rustc-perf: Website for graphing performance of rustc
bheisler/criterion.rs: Statistics-driven benchmarking library for Rust
Measuring Memory Usage in Rust with rust-analyzer
SIMD for faster computing - The Edition Guide with #[cfg()]
and std::arch
"NTFS really isn't that bad" - Robert Collins (LCA 2020) - YouTube optimizing rustup
in WSL2
GPU
termoshtt/accel: GPGPU Framework for Rust
Running Rust on the GPU with Accel | bheisler.github.io
Writing a GPU-Accelerated Path Tracer in Rust - Part 1 | bheisler.github.io
Writing a GPU-Accelerated Path Tracer in Rust - Part 2 | bheisler.github.io
Operating System
Writing an OS in Rust
Ashley Williams - intermezzOS: a teaching operating system - YouTube
Writing an Embedded Operating System in Rust - Alistair Francis, Western Digital - YouTube
Embedded system
Embedded Rust documentation
The Embedded Rust Book
Use Rust for embedded development | Opensource.com
Embassy
embassy-rs/embassy: Modern embedded framework, using Rust and async.
miselin/rustic: Rustic Embedded Framework Rust framework for embedded system, 😴inactive
Program the real world using Rust on Raspberry Pi | Opensource.com
Tock Embedded Operating System
Tock Tutorial
rust-embedded/cortex-m-quickstart: Template to develop bare metal applications for Cortex-M microcontrollers
Learn Embedded Rust WITHOUT Any Expensive Hardware | Rust ARM QEMU Cargo Tutorial - YouTube
Redox
Redox - Your Next(Gen) OS
Rust's Redox OS could show Linux a few new tricks | InfoWorld
Rust from C/Other languages
Linkage - The Rust Reference cdylib
/staticlib
The Rust FFI Omnibus
#[no_mangle]
, extern
, write C header files
Rust FFI: Sending strings to the outside world | Huy's Blog
Overview - The (unofficial) Rust FFI Guide
Exposing a Rust library to C
Complex types with Rust’s FFI. Interop with object methods, structs… | by Jim Fleming | Jim Fleming | Medium
std::boxed::Box - Rust for non-cloning data
rusty-binder / rusty-binder · GitLab not maintained
Sean1708/rusty-cheddar: A Rust crate for automatically generating C header files from Rust source file. evloving to rusty-binder
Day 23 - calling Rust from other languages | 24 days of Rust
regex/regex-capi at master · rust-lang/regex
jameysharp/corrode: C to Rust translator
Project for porting C to Rust gains Mozilla's backing | InfoWorld
C from Rust
Unsafe Rust - The Rust Programming Language
The bindgen
User Guide
rust-lang/rust-bindgen: Automatically generates Rust FFI bindings to C (and some C++) libraries.
Using C Libraries in Rust. A practical guide to FFI using bindgen… | by Jeff Hiner | Dwelo Research and Development | Medium
Wrapping Unsafe C Libraries in Rust | by Jeff Hiner | Dwelo Research and Development | Medium
libc - Rust
libloading - Rust
alexcrichton/gcc-rs: Rust library for build scripts to compile C/C++ code into a Rust library
dtolnay/cxx: Safe interop between Rust and C++
Calling C from Rust - Julia Evans
A little C with your Rust - The Embedded Rust Book
koute/pinky: An NES emulator written in Rust
quickjs-zh/quickjs-rs: Rust bindings to QuickJS
dtolnay/async-trait: Type erasure for async trait methods
ruffle-rs/ruffle: A Flash Player emulator written in Rust