Giter Site home page Giter Site logo

idiomatic-rust's Introduction

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.

idiomatic-rust's People

Contributors

ayrat555 avatar chapeupreto avatar drguildo avatar duthils avatar jli avatar jomi-se avatar kyclark avatar lmammino avatar mgattozzi avatar mre avatar simonsan avatar tadejpetric avatar tjtelan avatar tmkx avatar unvalley avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    πŸ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. πŸ“ŠπŸ“ˆπŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❀️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.