• Stars
    star
    4,626
  • Rank 9,107 (Top 0.2 %)
  • Language
  • Created over 7 years ago
  • Updated over 1 year ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

πŸ¦€ A peer-reviewed collection of articles/talks/repos which teach concise, idiomatic Rust.

Logo

Check Links

This repository collects resources for writing clean, idiomatic Rust code. Please bring your own. 😊

Idiomatic coding means following the conventions of a given language. It is the most concise, convenient, and common way of accomplishing a task in that language, rather than forcing it to work in a way the author is familiar with from a different language. - Adapted from Tim Mansfield

βš™ Projects

  • Rust Anthology - The best short-form writing about Rust, collected.
  • blessed.rs - An unofficial guide to the Rust ecosystem. Suggestions for popular, well-maintained crates.
  • cheats.rs - Idiomatic Rust tips - A list of quick tips to make your code more idiomatic.
  • clippy - A bunch of lints to catch common mistakes and improve your Rust code.
  • Patterns - A catalogue of design patterns in Rust.
  • Elements of Rust - A collection of software engineering techniques for effectively expressing intent with Rust.
  • Possible Rust - A blog for intermediate Rust programmers exploring real-world code and design patterns.
  • Rust API Guidelines - An extensive list of recommendations for idiomatic Rust APIs.
  • Rust by Example - A community driven collection of example code which follow Rust best practices.

πŸ‹ Workshops

  • Comprehensive Rust - A four day Rust course developed by the Android team, which covers all aspects of Rust, from basic syntax to generics and error handling. It also includes Android-specific content and touches on Rust ergonomics.
  • Build your own JIRA with Rust - A test-driven workshop to learn Rust building your own JIRA clone!
  • Ferrous Systems Teaching Material - Free workshop material produced by Ferrous Systems for trainings. The time for the full course is around three to four days.
  • PingCAP talent plan - A series of training courses about writing distributed systems in Rust. The courses primarily consist of projects where coding problems are presented, along with a partial implementation or API description, and a test suite.
  • Procedural Macros Workshop - This repo contains a selection of projects designed to learn to write Rust procedural macros β€” Rust code that generates Rust code.
  • rust-lang/rustlings - πŸ¦€ Small exercises to get you used to reading and writing Rust code!

πŸ“– Books

πŸ“° Articles

2021

2020

2019

  • Await a minute by David Tolnay - Example code for moving from raw futures to async/await syntax to improve error handling, native control flow, and borrowing.
  • Taking string arguments in Rust by @Xion - Discussing how to avoid subtle issues with string handling and when to use str (the string slice) and String (the owned/allocated string).
  • Rust Patterns: Enums Instead Of Booleans by Blake Smith - Discusses how using enums instead of booleans can be useful to express intent more clearly without sacrificing safety thanks to Rust's strong semantics (like exhaustive pattern matching).

2018

2017

2016

2015

🎀 Talks

2023

  • Tricks of the Trait: Enabling Ergonomic Extractors [Video] by Rob Ede - Rust Nation UK, Feb. 2023

2022

  • Nine Rules for Elegant Rust Library APIs [Video] by Carl Kadie - Seattle Rust Meetup, Sep. 2022
  • Ergonomic APIs for hard problems [Video] [Slides] by Raph Levien - RustLab Conference, October 2022

2020

2019

  • Making Rust Delightful [Video] by @nrc - RustCon Asia 2019

2018

  • Idiomatic Rust - Writing Concise and Elegant Rust Code [Video] [Slides] by @mre - FOSDEM 2018

2017

πŸ’¬ Forum

2020

2017

πŸ“œ History

Coming from Python, I loved the guidelines on how idiomatic Python looks like. I was inspired by the likes of Peter Norvig, who wrote amazing articles on spellcheckers and sudoku solvers; and, of course, the Zen of Python. For Rust, there is no such thing as the Zen of Python, however, so I started collecting my own resources. The goal of this project is to create a peer-reviewed collection of articles/talks/repos, which teach idiomatic Rust style. It's a community project and you can contribute.

πŸ” License

CC0

To the extent possible under law, Matthias Endler has waived all copyright and related or neighboring rights to this work. Logo adapted from FreePik.com.

More Repositories

1

the-coding-interview

Programming exercises, code katas and puzzles for your job interview training - or just for fun.
Python
1,697
star
2

hyperjson

🐍 A hyper-fast Python module for reading/writing JSON data using Rust's serde-json.
Python
503
star
3

cargo-inspect

Pssst!... see what Rust is doing behind the curtains πŸ•΅πŸ€«
Rust
384
star
4

fcat

A 3x faster implementation of cat, using splice
Rust
249
star
5

vscode-snippet

🐀 A Visual Studio Code extension for cheat.sh. Quickly and easily find code snippets for any language right inside your IDE.
TypeScript
236
star
6

kafka-influxdb

High performance Kafka consumer for InfluxDB. Supports collectd message formats.
Python
215
star
7

timelapse

🎬 Native macOS app for recording timelapse videos of your desktop.
Python
214
star
8

prettyprint

Beautifully formatted output for your terminal 🌈
Rust
203
star
9

zerocal

πŸš«πŸ“† Serverless calendar built with shuttle.rs
Rust
164
star
10

futures-batch

An adapter for futures, which chunks up elements and flushes them after a timeout β€” or when the buffer is full. (Formerly known as tokio-batch.)
Rust
67
star
11

envy

πŸ’« Manage environment variables without cluttering your .zshrc.
Rust
64
star
12

PHPench

Realtime benchmarks for PHP code
PHP
53
star
13

teams-call

Shell script to detect when you're in a Microsoft Teams Call. Supports Linux and macOS.
Python
51
star
14

mos6502

MOS 6502 emulator written in Rust
Rust
42
star
15

Creamy

A simple CMS in the style of Perch.
PHP
32
star
16

endler.dev

HTML
26
star
17

rust-for-x

Rust for {Ruby, Haskell, C, ...} programmers
24
star
18

rustly

A toy Rustlang URL shortener using Rocket
Rust
21
star
19

pandoc-memoir

Convert Markdown to beautiful PDF using pandoc, LaTeX, and chocolate donuts.
TeX
16
star
20

riffraff

A commandline interface for Jenkins (like `fly` for Concourse).
Go
15
star
21

slack

A simple, idiomatic, fully documented Rust library for the Slack Web API
Rust
11
star
22

rate-limits

Parse HTTP Rate-Limit headers of different vendors
Rust
10
star
23

svg-metadata

Read metadata information of an SVG file (e.g. viewBox size)
Rust
9
star
24

beacon

A dedicated endpoint for real user monitoring. Works with boomerang, statsc and others.
JavaScript
9
star
25

karban

Jekyll for invoices. A static invoice compiler that generates PDFs and HTML from Markdown files.
PHP
9
star
26

spaceglenda

Vectorized, colorized version of Space Glenda, the Plan 9 mascot.
8
star
27

dotvim

My VIM configuration.
Vim Script
8
star
28

pygments-rs

Rust bindings for pygments, a powerful syntax highlighter
Rust
7
star
29

cargo-deliver

πŸ“¦ Run goreleaser with cargo to publish pre-built Rust binaries on Github/Dockerhub/Artifactory
Rust
7
star
30

dropix

A self-updating, caching Dropbox gallery for your website. Customizable, too!
PHP
7
star
31

menudon

πŸ˜πŸ’¬ Mastodon client for your macOS menubar
JavaScript
6
star
32

gh-stats

Async command-line tool for retrieving the stars of all your Github projects. 🌟
Rust
6
star
33

money

Sample code for my talk Idiomatic Rust, which I gave at FOSDEM 2018.
Rust
6
star
34

docker-php-phan

A Docker image for etsy's phan, the static analyzer for PHP
Shell
6
star
35

mre.github.io.v1

Version 1 of my blog, built with Jekyll
HTML
5
star
36

teapot

πŸ«– A super simple dummy server for testing HTTP clients. No dependencies. The little brother of https://github.com/mufeedvh/binserve.
Rust
5
star
37

cargo-inspect-vscode

A Visual Studio Code extension for cargo-inspect
TypeScript
5
star
38

tracker

Realtime hand gesture recognition to control your window manager
Python
5
star
39

awesome-static-analysis-ci

Continuous integration for the awesome static analysis project
Rust
5
star
40

PHP-Crawler

Web Crawler - with email/link scraping and proxy support
PHP
5
star
41

mre.github.io.v2

Version 2 of my blog, built with Cobalt (Rust). Good times
Liquid
5
star
42

jquery.ratingbar

Create graphical ratings (stars, bars) from text: 4/5 => β˜…β˜…β˜…β˜…β˜†
JavaScript
4
star
43

lqip

A boring commandline tool for generating lqip image thumbnails
Rust
4
star
44

rust-cli-workshop

Learn Rust by writing CLI tools!
PHP
4
star
45

engldict

Dabblings into language learning
Python
4
star
46

edgecast

A golang client for the Edgecast API
Go
3
star
47

mos6532

MOS 6532 Emulator
Rust
3
star
48

cudampi

Large hybrid CPU/GPU sorting network using CUDA and MPI
C++
3
star
49

kafka-benchmark

A simple kafka script for benchmarking kafka message throughput
Python
3
star
50

freq

πŸ—Ό A CLI term frequency analyzer. Counts the number of occurrences of each word in an input and creates formatted output or a histogram.
Rust
3
star
51

Process

A lightweight PHP wrapper for interactive subprocesses
PHP
3
star
52

rust-language-bindings

A list of available language bindings for Rust
2
star
53

mre

This is m(r)e
2
star
54

past

Rust
2
star
55

async-talk

Slides and additional material for my talk about asynchronous programming
HTML
2
star
56

swarm-demo

Demonstrates the networking and load-balancing power of Docker Swarm
Go
2
star
57

jbmc

Java Bounded Model Checker
Java
2
star
58

envsync

Keeps `.env` files in sync with `env.sample`.
Rust
2
star
59

jQuery.anchorfy

Create a linked list of all headers inside a container. Supports animations and is easy to adjust.
HTML
2
star
60

bromance

A friendly commandline tool for bro and tldr
Python
1
star
61

maxminddb-rust-bench

Rust
1
star
62

mre.github.io.v3

Version 3 of my blog, built with Zola (Rust). It was a great time.
HTML
1
star
63

stream-processors

Just a list of stream-processors
1
star
64

GnuPlot

A thin wrapper around GnuPlot
PHP
1
star
65

npm-quickCal

an easy to use booking appointment calendar
JavaScript
1
star
66

DrawRoom

Distraction free drawing
Python
1
star
67

peek

Experiments with an alternative remote desktop implementation
Python
1
star
68

voctokey

Control voctomix remotely via keyboard shortcuts
Python
1
star
69

accs

Parse menu of the ACCS cantine DΓΌsseldorf.
Python
1
star
70

llama

A silly game written in Python using cocos2d
Python
1
star
71

toypc

A shitty Rust implementation of http://adventofcode.com/day/23
Rust
1
star
72

ideas

Pretty please make them real.
1
star
73

sheldon

A wonderful directory of useful shell-scripts
Shell
1
star
74

collectd

A docker image for collectd compiled from source
1
star
75

Talks

...mostly Computer Science related.
JavaScript
1
star
76

live

Live programming / workshop material
HTML
1
star