idiomatic-rust/README.md
2021-03-31 14:50:24 +02:00

12 KiB

Logo

Build Status - 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.
  • cheat.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 Rust design patterns.
  • 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.
  • Rust Cookbook - Examples that demonstrate good practices to accomplish common programming tasks in Rust.

🏋 Workshops

  • 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.

📖 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).

2018

2017

2016

2015

🎤 Talks

2020

Macros for a More Productive Rust [Video] by @jam1garner - RustConf 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

Idiomatic Rust Libraries [Video] [Slides] by @killercup - Rustfest Kiev
What's so hard about writing a Slack Client in Rust? [Video] [Slides] by @mre - Rust Cologne Meetup

💬 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.