Giter VIP home page Giter VIP logo

idiomatic-rust's Introduction

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

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.

idiomatic-rust's People

Contributors

ayrat555 avatar chapeupreto avatar chris-t-jansen avatar drguildo avatar duthils avatar jli avatar jomi-se avatar kyclark avatar lmammino avatar mgattozzi avatar mre avatar ryzhakar avatar santhosh-tekuri avatar simonsan avatar tadejpetric avatar tjtelan avatar tmkx avatar unvalley avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

idiomatic-rust's Issues

Link Checker Report

Errors were reported while checking the availability of links.


๐Ÿ“ Summary
---------------------
๐Ÿ” Total...........98
โœ… Successful......97
โณ Timeouts.........0
๐Ÿ”€ Redirected.......0
๐Ÿ‘ป Excluded.........0
๐Ÿšซ Errors...........1

Errors in README.md
โœ— https://rustbyexample.com/ (HTTP status client error (404 Not Found) for url (https://rustbyexample.com/))

Full Github Actions output

Link Checker Report

Errors were reported while checking the availability of links.


๐Ÿ“ Summary
---------------------
๐Ÿ” Total...........91
โœ… Successful......90
โณ Timeouts.........0
๐Ÿ”€ Redirected.......0
๐Ÿ‘ป Excluded.........0
๐Ÿšซ Errors...........1

Errors in CONTRIBUTING.md
โœ— https://www.youtube.com/channel/UCaYhcUwRBNscFNUKTjgPFiA (404 Not Found)

Full Github Actions output

Link Checker Report

Errors were reported while checking the availability of links.


๐Ÿ“ Summary
---------------------
๐Ÿ” Total...........90
โœ… Successful......88
โณ Timeouts.........0
๐Ÿ”€ Redirected.......0
๐Ÿ‘ป Excluded.........0
๐Ÿšซ Errors...........2

Errors in README.md
โœ— https://blog.mbrt.dev/2016-12-01-ripgrep-code-review/ (404 Not Found)

Errors in CONTRIBUTING.md
โœ— https://www.youtube.com/channel/UCaYhcUwRBNscFNUKTjgPFiA (404 Not Found)

Full Github Actions output

Add new resources (articles/talks/videos/projects)

Lately, I can't find the time to add more resources to this list.
It would be nice to brush up the project a bit and add some more recent resources.

For example, my process for adding new articles is:

  1. Pick a promising article from This Week in Rust or the top weekly articles from /r/rustlang.
  2. Read the article
  3. Decide if it's a good fit for the list.
  4. Add to the list.

If you're unsure, just create a pull request or add a comment here and we decide together.
Also check the CONTRIBUTING.md for more information.

Link Checker Report

Errors were reported while checking the availability of links.


๐Ÿ“ Summary
---------------------
๐Ÿ” Total...........98
โœ… Successful......96
โณ Timeouts.........0
๐Ÿ”€ Redirected.......0
๐Ÿ‘ป Excluded.........0
๐Ÿšซ Errors...........2

Errors in CONTRIBUTING.md
โœ— https://www.reddit.com/r/rust/top/?t=week (HTTP status client error (429 Too Many Requests) for url (https://www.reddit.com/r/rust/top/?t=week))

Errors in README.md
โœ— https://www.reddit.com/r/rust/comments/cekeq9/preferred_way_of_passing_pathlike_types_around/ (HTTP status client error (429 Too Many Requests) for url (https://www.reddit.com/r/rust/comments/cekeq9/preferred_way_of_passing_pathlike_types_around/))

Full Github Actions output

Link Checker Report

Errors were reported while checking the availability of links.


๐Ÿ“ Summary
---------------------
๐Ÿ” Total...........91
โœ… Successful......90
โณ Timeouts.........0
๐Ÿ”€ Redirected.......0
๐Ÿ‘ป Excluded.........0
๐Ÿšซ Errors...........1

Errors in CONTRIBUTING.md
โœ— https://www.youtube.com/channel/UCaYhcUwRBNscFNUKTjgPFiA (404 Not Found)

Full Github Actions output

Link Checker Report

Errors were reported while checking the availability of links.


๐Ÿ“ Summary
---------------------
๐Ÿ” Total...........98
โœ… Successful......96
โณ Timeouts.........0
๐Ÿ”€ Redirected.......0
๐Ÿ‘ป Excluded.........0
๐Ÿšซ Errors...........2

Errors in CONTRIBUTING.md
โœ— https://www.reddit.com/r/rust/top/?t=week (HTTP status client error (429 Too Many Requests) for url (https://www.reddit.com/r/rust/top/?t=week))

Errors in README.md
โœ— https://www.reddit.com/r/rust/comments/cekeq9/preferred_way_of_passing_pathlike_types_around/ (HTTP status client error (429 Too Many Requests) for url (https://www.reddit.com/r/rust/comments/cekeq9/preferred_way_of_passing_pathlike_types_around/))

Full Github Actions output

Is the website being redeployed?

Hi, I clicked on the "Are out parameters idiomatic in Rust?" article and noticed that it has a broken link. Then I saw that it has been fixed two months ago (6de41c9), but apparently that fix didn't get to idiomatic.rs (?).

Link Checker Report

Errors were reported while checking the availability of links.


๐Ÿ“ Summary
---------------------
๐Ÿ” Total...........98
โœ… Successful......96
โณ Timeouts.........0
๐Ÿ”€ Redirected.......0
๐Ÿ‘ป Excluded.........0
๐Ÿšซ Errors...........2

Errors in README.md
โœ— https://www.reddit.com/r/rust/comments/cekeq9/preferred_way_of_passing_pathlike_types_around/ (HTTP status client error (429 Too Many Requests) for url (https://www.reddit.com/r/rust/comments/cekeq9/preferred_way_of_passing_pathlike_types_around/))

Errors in CONTRIBUTING.md
โœ— https://www.reddit.com/r/rust/top/?t=week (HTTP status client error (429 Too Many Requests) for url (https://www.reddit.com/r/rust/top/?t=week))

Full Github Actions output

Link Checker Report

Errors were reported while checking the availability of links.


๐Ÿ“ Summary
---------------------
๐Ÿ” Total...........98
โœ… Successful......96
โณ Timeouts.........0
๐Ÿ”€ Redirected.......0
๐Ÿ‘ป Excluded.........0
๐Ÿšซ Errors...........2

Errors in CONTRIBUTING.md
โœ— https://www.reddit.com/r/rust/top/?t=week (HTTP status client error (429 Too Many Requests) for url (https://www.reddit.com/r/rust/top/?t=week))

Errors in README.md
โœ— https://www.reddit.com/r/rust/comments/cekeq9/preferred_way_of_passing_pathlike_types_around/ (HTTP status client error (429 Too Many Requests) for url (https://www.reddit.com/r/rust/comments/cekeq9/preferred_way_of_passing_pathlike_types_around/))

Full Github Actions output

Link Checker Report

Errors were reported while checking the availability of links.


๐Ÿ“ Summary
---------------------
๐Ÿ” Total...........91
โœ… Successful......90
โณ Timeouts.........0
๐Ÿ”€ Redirected.......0
๐Ÿ‘ป Excluded.........0
๐Ÿšซ Errors...........1

Errors in CONTRIBUTING.md
โœ— https://www.youtube.com/channel/UCaYhcUwRBNscFNUKTjgPFiA (404 Not Found)

Full Github Actions output

Link Checker Report

Errors were reported while checking the availability of links.


๐Ÿ“ Summary
---------------------
๐Ÿ” Total...........98
โœ… Successful......96
โณ Timeouts.........0
๐Ÿ”€ Redirected.......0
๐Ÿ‘ป Excluded.........0
๐Ÿšซ Errors...........2

Errors in CONTRIBUTING.md
โœ— https://www.reddit.com/r/rust/top/?t=week (HTTP status client error (429 Too Many Requests) for url (https://www.reddit.com/r/rust/top/?t=week))

Errors in README.md
โœ— https://www.reddit.com/r/rust/comments/cekeq9/preferred_way_of_passing_pathlike_types_around/ (HTTP status client error (429 Too Many Requests) for url (https://www.reddit.com/r/rust/comments/cekeq9/preferred_way_of_passing_pathlike_types_around/))

Full Github Actions output

Link Checker Report

Errors were reported while checking the availability of links.


๐Ÿ“ Summary
---------------------
๐Ÿ” Total...........90
โœ… Successful......89
โณ Timeouts.........0
๐Ÿ”€ Redirected.......0
๐Ÿ‘ป Excluded.........0
๐Ÿšซ Errors...........1

Errors in CONTRIBUTING.md
โœ— https://www.youtube.com/channel/UCaYhcUwRBNscFNUKTjgPFiA (404 Not Found)

Full Github Actions output

Link Checker Report

Errors were reported while checking the availability of links.


๐Ÿ“ Summary
---------------------
๐Ÿ” Total...........90
โœ… Successful......89
โณ Timeouts.........0
๐Ÿ”€ Redirected.......0
๐Ÿ‘ป Excluded.........0
๐Ÿšซ Errors...........1

Errors in CONTRIBUTING.md
โœ— https://www.youtube.com/channel/UCaYhcUwRBNscFNUKTjgPFiA (404 Not Found)

Full Github Actions output

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.