Skip to content

mre/idiomatic-rust

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

Logo

Check Links

This repository collects resources for writing clean, idiomatic Rust code. You can find a sortable/searchable version of this list here.

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

Contributions welcome! To add missing resources, please refer to the contributing documentation.

βš™ Projects

  • 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.
  • Elements of Rust β€” A collection of software engineering techniques for effectively expressing intent with Rust.
  • Patterns β€” A catalogue of design patterns in Rust.
  • Possible Rust β€” A blog for intermediate Rust programmers exploring real-world code and design patterns.
  • Rust Anthology β€” The best short-form writing about Rust, collected.
  • 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

πŸ“– Books

πŸ“° Articles

2023

2021

  • Hexagonal architecture in Rust β€” Describes how to build a Rust service using domain driven design and a test-first approach.
  • Wrapping errors in Rust β€” Wrapping 'reqwest::Error' and a custom error type as an enum to make library usage easier.
  • Aiming for idiomatic Rust β€” Discusses different ways to solve a popular coding puzzle, 'balanced brackets', in Rust.
  • Naming Your Lifetimes β€” Explains how using longer, declarative lifetime names can help to disambiguate which borrow is which.

2020

2019

2018

2017

2016

2015

🎀 Talks

2024

  • The Four Horsemen of Bad Rust Code β€” A talk about common pitfalls in Rust code like overengineering and premature optimization. [Video]

2023

  • Tricks of the Trait: Enabling Ergonomic Extractors β€” Rust Nation UK, Feb. 2023 [Video]

2022

  • Ergonomic APIs for hard problems β€” RustLab Conference, October 2022 [Video]
  • Nine Rules for Elegant Rust Library APIs β€” Seattle Rust Meetup, Sep. 2022 [Video]

2020

  • Macros for a More Productive Rust β€” RustConf 2020 [Video]

2019

  • Making Rust Delightful β€” RustCon Asia 2019 [Video]

2018

  • Idiomatic Rust - Writing Concise and Elegant Rust Code β€” FOSDEM 2018 [Video]

2017

  • Idiomatic Rust Libraries β€” Rustfest Kiev [Video]

πŸ’¬ 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.

About

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

Topics

Resources

Stars

Watchers

Forks

Sponsor this project