[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"project-5559":3},{"id":4,"name":5,"fullName":6,"owner":7,"repo":5,"description":8,"homepage":9,"htmlUrl":10,"language":11,"languages":10,"totalLinesOfCode":10,"stars":12,"forks":13,"watchers":14,"openIssues":15,"contributorsCount":15,"subscribersCount":15,"size":15,"stars1d":16,"stars7d":17,"stars30d":18,"stars90d":15,"forks30d":15,"starsTrendScore":19,"compositeScore":20,"rankGlobal":10,"rankLanguage":10,"license":10,"archived":21,"fork":21,"defaultBranch":22,"hasWiki":23,"hasPages":21,"topics":24,"createdAt":10,"pushedAt":10,"updatedAt":28,"readmeContent":29,"aiSummary":30,"trendingCount":15,"starSnapshotCount":15,"syncStatus":31,"lastSyncTime":32,"discoverSource":33},5559,"idiomatic-rust","mre\u002Fidiomatic-rust","mre","🦀 A peer-reviewed collection of articles\u002Ftalks\u002Frepos which teach concise, idiomatic Rust.","https:\u002F\u002Fcorrode.dev\u002Fblog\u002Fidiomatic-rust-resources\u002F",null,"Rust",7749,241,163,0,4,15,68,18,38.15,false,"master",true,[25,26,5,27],"ergonomics","idiomatic","rust","2026-06-12 02:01:12","\u003C!--\n⚠️⚠️ WARNING: This file is generated by `make render`. Do not edit manually!\nSee `CONTRIBUTING.md` for more information.\n-->\n\n\u003Cpicture >\n  \u003Csource media=\"(prefers-color-scheme: dark)\" srcset=\"assets\u002Fidiomatic-rust-dark.png\">\n  \u003Cimg src=\"assets\u002Fidiomatic-rust.png\" \u002F>\n\u003C\u002Fpicture>\n\n[![Check Links](https:\u002F\u002Fgithub.com\u002Fmre\u002Fidiomatic-rust\u002Fworkflows\u002FCheck%20Links\u002Fbadge.svg)](https:\u002F\u002Fgithub.com\u002Fmre\u002Fidiomatic-rust\u002Factions\u002Fworkflows\u002Fcheck_links.yml)\n\nThis repository collects resources for writing clean, idiomatic Rust code.\nYou can find a sortable\u002Fsearchable version of this list [here](https:\u002F\u002Fcorrode.dev\u002Fidiomatic-rust\u002F).\n\n> _Idiomatic_ coding means following the conventions of a given language. It is\n> the most concise, convenient, and common way of accomplishing a task in that\n> language, rather than forcing it to work in a way the author is familiar with\n> from a different language. - Adapted from [Tim\n> Mansfield](https:\u002F\u002Fgithub.com\u002Ftim-hr\u002Fstuff\u002Fwiki\u002FIdiomatic-coding)\n\nContributions welcome! To add missing resources, [please refer to the contributing documentation](https:\u002F\u002Fgithub.com\u002Fmre\u002Fidiomatic-rust\u002Fblob\u002Fmaster\u002FCONTRIBUTING.md).\n\n## ⚙ Projects\n\n- [blessed.rs](https:\u002F\u002Fblessed.rs\u002Fcrates) — An unofficial guide to the Rust ecosystem. Suggestions for popular, well-maintained crates.\n- [Canonical's Rust Best Practices](https:\u002F\u002Fcanonical.github.io\u002Frust-best-practices\u002F) — A curated collection of best practices for writing Rust code, covering coding standards from naming conventions to unsafe code usage.\n- [cheats.rs - Idiomatic Rust tips](https:\u002F\u002Fcheats.rs\u002F) — A list of quick tips to make your code more idiomatic.\n- [clippy](https:\u002F\u002Fgithub.com\u002Frust-lang\u002Frust-clippy) — A bunch of lints to catch common mistakes and improve your Rust code.\n- [Elements of Rust](https:\u002F\u002Fgithub.com\u002Fferrous-systems\u002Felements-of-rust) — A collection of software engineering techniques for effectively expressing intent with Rust.\n- [Patterns](https:\u002F\u002Frust-unofficial.github.io\u002Fpatterns\u002F) — A catalogue of design patterns in Rust.\n- [Possible Rust](https:\u002F\u002Fwww.possiblerust.com\u002F) — A blog for intermediate Rust programmers exploring real-world code and design patterns.\n- [Rust Anthology](https:\u002F\u002Fgithub.com\u002Fbrson\u002Frust-anthology) — The best short-form writing about Rust, collected.\n- [Rust API Guidelines](https:\u002F\u002Frust-lang.github.io\u002Fapi-guidelines\u002F) — An extensive list of recommendations for idiomatic Rust APIs.\n- [Rust by Example](https:\u002F\u002Fdoc.rust-lang.org\u002Frust-by-example\u002F) — A community driven collection of example code which follow Rust best practices.\n\n\n## 🏋 Workshops\n\n- [Build your own JIRA with Rust](https:\u002F\u002Fgithub.com\u002FLukeMathWalker\u002Fbuild-your-own-jira-with-rust\u002F) — A test-driven workshop to learn Rust by building your own JIRA clone!\n- [Comprehensive Rust](https:\u002F\u002Fgithub.com\u002Fgoogle\u002Fcomprehensive-rust) — A four day Rust course developed by the Android team, covering all aspects of Rust.\n- [Ferrous Systems Teaching Material](https:\u002F\u002Fferrous-systems.github.io\u002Fteaching-material\u002Findex.html) — Free workshop material produced by Ferrous Systems for trainings.\n- [Hecto: Build your own text editor in Rust](https:\u002F\u002Fphilippflenker.com\u002Fhecto\u002F) — This is a series of blog posts that shows you how to build a text editor in Rust\n- [Idiomatic Rust Workshop](https:\u002F\u002Ffettblog.eu\u002Fslides\u002Fidiomatic-rust\u002F) — A talk\u002Fworkshop about idiomatic Rust code focusing on effective use of existing syntax and design patterns\n- [PingCAP talent plan](https:\u002F\u002Fgithub.com\u002Fpingcap\u002Ftalent-plan) — A series of training courses about writing distributed systems in Rust.\n- [Procedural Macros Workshop](https:\u002F\u002Fgithub.com\u002Fdtolnay\u002Fproc-macro-workshop) — A selection of projects designed to learn to write Rust procedural macros.\n- [Rust 101](https:\u002F\u002Fteach-rs.trifectatech.org\u002F) — A Rust University course by tweede golf.\n- [Rust Development at Sentry](https:\u002F\u002Fdevelop.sentry.dev\u002Fengineering-practices\u002Frust\u002F) — A document containing useful resources for getting started with Rust and adhering to Sentry coding principles.\n- [rust-lang\u002Frustlings](https:\u002F\u002Fgithub.com\u002Frust-lang\u002Frustlings) — Small exercises to get you used to reading and writing Rust code.\n\n\n## 📖 Books\n\n- [Command Line Applications in Rust](https:\u002F\u002Frust-cli.github.io\u002Fbook\u002F) — A tutorial on how to write CLI apps in Rust, learning many aspects of the ecosystem.\n- [Command-Line Rust](https:\u002F\u002Fgithub.com\u002Fkyclark\u002Fcommand-line-rust) — Learn the language by writing Rust versions of common Unix coreutils.\n- [Discover the world of microcontrollers through Rust!](https:\u002F\u002Fdocs.rust-embedded.org\u002Fdiscovery\u002F) — An introductory course on microcontroller-based embedded systems using Rust.\n- [High Assurance Rust](https:\u002F\u002Fhighassurance.rs\u002F) — Developing secure and robust software, focusing on embedded-friendly data structures in Rust.\n- [Idiomatic Rust Snippets](https:\u002F\u002Fidiomatic-rust-snippets.org\u002F) — Beginner-friendly guide to core Rust concepts—one of the best cheat sheets for Rust developers.\n- [Programming Rust: Fast, Safe Systems Development](https:\u002F\u002Fwww.oreilly.com\u002Flibrary\u002Fview\u002Fprogramming-rust-2nd\u002F9781492052586\u002F) — A comprehensive Rust Programming Guide that covers most of Rust's features in detail.\n- [Rust Atomics and Locks](https:\u002F\u002Fmarabos.nl\u002Fatomics\u002F) — Helps Rust programmers of all levels gain a clear understanding of low-level concurrency.\n- [Rust Cookbook](https:\u002F\u002Fgithub.com\u002Frust-lang-nursery\u002Frust-cookbook) — Examples that demonstrate good practices to accomplish common programming tasks in Rust.\n- [Rust for Rustaceans](https:\u002F\u002Fnostarch.com\u002Frust-rustaceans) — Covers how to design reliable, idiomatic, and ergonomic Rust programs based on best principles.\n\n\n## 📰 Articles\n\n### 2025\n\n- [Level Up your Rust pattern matching](https:\u002F\u002Fblog.cuongle.dev\u002Fp\u002Flevel-up-your-rust-pattern-matching) — Advanced pattern matching techniques and idiomatic usage.\n- [Be Simple](https:\u002F\u002Fcorrode.dev\u002Fblog\u002Fsimple\u002F) — Advocates for simpler, more maintainable code in Rust.\n- [Pitfalls of Safe Rust](https:\u002F\u002Fcorrode.dev\u002Fblog\u002Fpitfalls-of-safe-rust\u002F) — Essential guide to avoiding pitfalls even in safe Rust code.\n- [Flattening Rust's Learning Curve](https:\u002F\u002Fcorrode.dev\u002Fblog\u002Fflattening-rusts-learning-curve\u002F) — Best practices for learning Rust and reducing adoption friction.\n- [Patterns for Defensive Programming in Rust](https:\u002F\u002Fcorrode.dev\u002Fblog\u002Fdefensive-programming\u002F) — Defensive coding in Rust with best practices.\n- [Prototyping in Rust](https:\u002F\u002Fcorrode.dev\u002Fblog\u002Fprototyping\u002F) — Rapid development methodology and idiomatic practices showing how to prototype effectively in Rust.\n- [Cancelling async Rust](https:\u002F\u002Fsunshowers.io\u002Fposts\u002Fcancelling-async-rust\u002F) — Guide to cancellation safety in async Rust with patterns for resource management.\n- [To panic or not to panic](https:\u002F\u002Fwww.ncameron.org\u002Fblog\u002Fto-panic-or-not-to-panic\u002F) — Error handling strategies and when panicking is appropriate versus returning Result types.\n- [Designing Error Types in Rust Libraries](https:\u002F\u002Fd34dl0ck.me\u002Frust-bites-designing-error-types-in-rust-libraries\u002Findex.html) — Approaches to structuring error handling in library APIs for clarity and usability.\n### 2024\n\n- [The Mediocre Programmer's Guide to Rust](https:\u002F\u002Fwww.hezmatt.org\u002F~mpalmer\u002Fblog\u002F2024\u002F05\u002F01\u002Fthe-mediocre-programmers-guide-to-rust.html) — Practical Rust without perfectionism - a pragmatic development approach.\n- [Rust's Sneaky Deadlock With if let Blocks](https:\u002F\u002Fbrooksblog.bearblog.dev\u002Frusts-sneaky-deadlock-with-if-let-blocks\u002F) — Subtle lock holding pattern that can cause critical deadlock pitfalls.\n- [Rust Iterators Beyond the Basics](https:\u002F\u002Fblog.jetbrains.com\u002Frust\u002F2024\u002F03\u002F12\u002Frust-iterators-beyond-the-basics-part-i-building-blocks\u002F) — Advanced iterator patterns for functional programming in Rust.\n- [The Ultimate Guide to Rust Newtypes](https:\u002F\u002Fwww.howtocodeit.com\u002Farticles\u002Fultimate-guide-rust-newtypes) — Using newtypes for type safety and compile-time domain validation.\n- [How to Build Abstractions in Rust Applications](https:\u002F\u002Forodu.net\u002F2023\u002F12\u002F27\u002Frust-abstractions.html) — Building effective abstractions in Rust based on software design principles.\n- [Don't Worry About Lifetimes](https:\u002F\u002Fcorrode.dev\u002Fblog\u002Flifetimes\u002F) — Demystifying lifetime annotations with practical lifetime management patterns.\n- [When should I use String vs &str?](https:\u002F\u002Fsteveklabnik.com\u002Fwriting\u002Fwhen-should-i-use-string-vs-str\u002F) — Guidance on choosing the right string type - a fundamental idiomatic Rust pattern.\n- [Async Rust can be a pleasure to work with (without Send + Sync + 'static)](https:\u002F\u002Femschwartz.me\u002Fasync-rust-can-be-a-pleasure-to-work-with-without-send-sync-static\u002F) — Relaxing trait bounds for simpler async code and ergonomic async patterns for single-threaded contexts.\n- [Why choose async\u002Fawait over threads?](https:\u002F\u002Fnotgull.net\u002Fwhy-not-threads\u002F) — Guidance on when to use async vs traditional threading to choose the right concurrency model.\n- [Three Kinds Of Unwrap](https:\u002F\u002Fzkrising.com\u002Fwriting\u002Fthree-unwraps\u002F) — Understanding when and how to use different unwrap variants to prevent common panic-related bugs.\n- [Practical guide to Error Handling in Rust](https:\u002F\u002Fdev-state.com\u002Fposts\u002Ferror_handling\u002F) — Hands-on guide with practical examples for common error handling scenarios in real-world applications.\n### 2023\n\n- [Aim For Immutability in Rust](https:\u002F\u002Fcorrode.dev\u002Fblog\u002Fimmutability\u002F) — Explains why variables are immutable in Rust by default.\n- [Compile-Time Invariants in Rust](https:\u002F\u002Fcorrode.dev\u002Fblog\u002Fcompile-time-invariants\u002F) — Shows how macros can be used to enforce invariants at compile-time.\n### 2021\n\n- [Rust Number Conversion: Don't Follow the Book...](https:\u002F\u002Fblog.notmet.net\u002F2021\u002F12\u002Frust-number-conversion-dont-follow-the-book...\u002F) — A blog post discussing the best practices for number conversion in Rust.\n- [Hexagonal architecture in Rust](https:\u002F\u002Falexis-lozano.com\u002Fblog\u002Fhexagonal-architecture-in-rust-1\u002F) — Describes how to build a Rust service using domain driven design and a test-first approach.\n- [Wrapping errors in Rust](https:\u002F\u002Fedgl.dev\u002Fblog\u002Fwrapping-errors-in-rust\u002F) — Wrapping 'reqwest::Error' and a custom error type as an enum to make library usage easier.\n- [Aiming for idiomatic Rust](https:\u002F\u002Fweb.archive.org\u002Fweb\u002F20221203043933\u002Fhttps:\u002F\u002Fshane-o.dev\u002Fblog\u002Faiming-for-idiomatic-rust) — Discusses different ways to solve a popular coding puzzle, 'balanced brackets', in Rust.\n- [Naming Your Lifetimes](https:\u002F\u002Fwww.possiblerust.com\u002Fpattern\u002Fnaming-your-lifetimes) — Explains how using longer, declarative lifetime names can help to disambiguate which borrow is which.\n### 2020\n\n- [Are out parameters idiomatic in Rust?](https:\u002F\u002Fsteveklabnik.com\u002Fwriting\u002Fare-out-parameters-idiomatic-in-rust\u002F) — Discusses the pros and cons of functions returning a value vs. modifying a parameter in-place.\n- [Guide on how to write documentation for a Rust crate](https:\u002F\u002Fblog.guillaume-gomez.fr\u002Farticles\u002F2020-03-12+Guide+on+how+to+write+documentation+for+a+Rust+crate) — Writing good documentation with rustdoc including many examples.\n- [Learning Rust through open source and live code reviews](https:\u002F\u002Floige.co\u002Flearning-rust-through-open-source-and-live-code-reviews\u002F) — Covers patterns like 'FromStr' and exposing a CLI and a library in one crate.\n- [Refactoring Rust Transpiled from C](https:\u002F\u002Fimmunant.com\u002Fblog\u002F2020\u002F09\u002Ftranspiled_c_safety\u002F) — Describes how to lift a C-project that was automatically converted to unsafe Rust to safer, more idiomatic Rust.\n- [Context-preserving error handling](https:\u002F\u002Fkazlauskas.me\u002Fentries\u002Ferrors) — Explains how to use crates like 'thiserror' in combination with 'map_err' to add context to errors.\n### 2019\n\n- [Rust Patterns: Enums Instead Of Booleans](https:\u002F\u002Fblakesmith.me\u002F2019\u002F05\u002F07\u002Frust-patterns-enums-instead-of-booleans.html) — Discusses how using enums instead of booleans can express intent more clearly in Rust.\n- [Taking string arguments in Rust](http:\u002F\u002Fxion.io\u002Fpost\u002Fcode\u002Frust-string-args.html) — Discussing how to avoid subtle issues with string handling and when to use 'str' vs 'String'.\n- [Await a minute](https:\u002F\u002Fdocs.rs\u002Fdtolnay\u002F0.0.3\u002Fdtolnay\u002Fmacro._01__await_a_minute.html) — Example code for moving from raw futures to async\u002Fawait syntax to improve error handling.\n### 2018\n\n- [Programming an ARM microcontroller in Rust at four different levels of abstraction](https:\u002F\u002Fpramode.in\u002F2018\u002F02\u002F20\u002Fprogramming-a-microcontroller-in-rust-at-four-levels-of-abstraction\u002F) — Demonstrates how Rust helps to move from low-level embedded code to high-level abstractions.\n### 2017\n\n- [The balance between cost, useability and soundness in C bindings, and Rust-SDL2's release](https:\u002F\u002Fweb.archive.org\u002Fweb\u002F20190509123207\u002Fhttps:\u002F\u002Fcobrand.github.io\u002Frust\u002Fsdl2\u002F2017\u002F05\u002F07\u002Fthe-balance-between-soundness-cost-useability.html) — Writing safe, sound, idiomatic libraries despite the limitations of the borrow checker.\n- [Math with distances in Rust: safety and correctness across units](https:\u002F\u002Fwww.ferrisellis.com\u002Fcontent\u002Frust-implementing-units-for-types\u002F) — How to create a system to cleanly and safely do arithmetic with lengths.\n- [Lessons learned redesigning and refactoring a Rust Library](https:\u002F\u002Fweb.archive.org\u002Fweb\u002F20220126172949\u002Fhttps:\u002F\u002Fblog.mgattozzi.dev\u002Frefactor-rust\u002F) — 'RefCell', the builder pattern and more.\n- [Iteration patterns for Result & Option](http:\u002F\u002Fxion.io\u002Fpost\u002Fcode\u002Frust-iter-patterns.html) — Explores how to filter and partition iterators of Result and Option types idiomatically.\n### 2016\n\n- [Idiomatic tree and graph like structures in Rust](https:\u002F\u002Frust-leipzig.github.io\u002Farchitecture\u002F2016\u002F12\u002F20\u002Fidiomatic-trees-in-rust\u002F) — Introduction to safe, dynamic, arena based tree structures without using lifetimes.\n- [Convenient and idiomatic conversions in Rust](https:\u002F\u002Fricardomartins.cc\u002F2016\u002F08\u002F03\u002Fconvenient_and_idiomatic_conversions_in_rust) — Explains 'From\u003CT>', 'Into\u003CT>', 'TryFrom\u003CT>', 'TryInto\u003CT>', 'AsRef\u003CT>' and 'AsMut\u003CT>' with practical examples.\n- [Rustic Bits](https:\u002F\u002Fllogiq.github.io\u002F2016\u002F02\u002F11\u002Frustic.html) — Small things that make for rustic code.\n- [Ripgrep Code Review](https:\u002F\u002Fblog.mbrt.dev\u002Fposts\u002Fripgrep\u002F) — An analysis of the popular 'ripgrep' tool's source code.\n- [Pretty State Machine Patterns in Rust](https:\u002F\u002Fhoverbear.org\u002F2016\u002F10\u002F12\u002Frust-state-machine-pattern\u002F) — How to represent a State Machine in an expressive and understandable way in Rust.\n- [Teaching libraries through good documentation](https:\u002F\u002Fdeterministic.space\u002Fteaching-libraries.html) — How to use the full power of Rust's documentation support (e.g. doc tests).\n- [Elegant Library APIs in Rust](https:\u002F\u002Fdeterministic.space\u002Felegant-apis-in-rust.html) — Many helpful tips and tricks for writing libraries in Rust.\n- [Russian Dolls and clean Rust code](https:\u002F\u002Fweb.archive.org\u002Fweb\u002F20220126183049\u002Fhttps:\u002F\u002Fblog.mgattozzi.dev\u002Frussian-dolls\u002F) — How to use the full power of 'Option' and 'Result' (especially 'and_then()' and 'unwrap_or()').\n### 2015\n\n- [Rayon: data parallelism in Rust](https:\u002F\u002Fsmallcultfollowing.com\u002Fbabysteps\u002Fblog\u002F2015\u002F12\u002F18\u002Frayon-data-parallelism-in-rust\u002F) — Writing elegant parallel code in Rust.\n- [Strategies for solving 'cannot move out of' borrowing errors in Rust](https:\u002F\u002Fhermanradtke.com\u002F2015\u002F06\u002F09\u002Fstrategies-for-solving-cannot-move-out-of-borrowing-errors-in-rust.html\u002F) — Practical tips to help understand the borrow-checker and move semantics.\n- [Effectively Using Iterators In Rust](https:\u002F\u002Fhermanradtke.com\u002F2015\u002F06\u002F22\u002Feffectively-using-iterators-in-rust.html\u002F) — Explanation of the 'Iter' and 'IntoIter' traits and how loops actually work in Rust.\n- [Creating a Rust function that returns a &str or String](https:\u002F\u002Fhermanradtke.com\u002F2015\u002F05\u002F29\u002Fcreating-a-rust-function-that-returns-string-or-str.html\u002F) — How 'Into' and 'Cow' (Clone-on-write) work together to avoid allocations for string types.\n- [Creating a Rust function that accepts String or &str](https:\u002F\u002Fhermanradtke.com\u002F2015\u002F05\u002F06\u002Fcreating-a-rust-function-that-accepts-string-or-str.html\u002F) — How to make calling your code both ergonomic and fast (zero-allocation).\n- [Error Handling in Rust](https:\u002F\u002Fburntsushi.net\u002Frust-error-handling\u002F) — Understanding and handling errors in Rust in an idiomatic way.\n- [Rust traits for developer friendly libraries](https:\u002F\u002Fbenashford.github.io\u002Fblog\u002F2015\u002F05\u002F24\u002Frust-traits-for-developer-friendly-libraries\u002F) — Thoughts about implementing good Rust libraries.\n\n\n## 🎤 Talks\n\n### 2024\n\n- The Four Horsemen of Bad Rust Code — A talk about common pitfalls in Rust code like overengineering and premature optimization. [[Video](https:\u002F\u002Fgithub.com\u002Fcorrode\u002Ffour-horsemen-talk)]\n### 2023\n\n- Tricks of the Trait: Enabling Ergonomic Extractors — Rust Nation UK, Feb. 2023 [[Video](https:\u002F\u002Fwww.youtube.com\u002Fwatch?v=7DOYtnCXucw)]\n### 2022\n\n- Ergonomic APIs for hard problems — RustLab Conference, October 2022 [[Video](https:\u002F\u002Fwww.youtube.com\u002Fwatch?v=Phk0C-kLlho)]\n- Nine Rules for Elegant Rust Library APIs — Seattle Rust Meetup, Sep. 2022 [[Video](https:\u002F\u002Fwww.youtube.com\u002Fwatch?v=6-8-9ZV-2WQ)]\n### 2020\n\n- Macros for a More Productive Rust — RustConf 2020 [[Video](https:\u002F\u002Fwww.youtube.com\u002Fwatch?v=dZiWkbnaQe8)]\n### 2019\n\n- Making Rust Delightful — RustCon Asia 2019 [[Video](https:\u002F\u002Fwww.youtube.com\u002Fwatch?v=YSEx8wtlPWc)]\n### 2018\n\n- Idiomatic Rust - Writing Concise and Elegant Rust Code — FOSDEM 2018 [[Video](https:\u002F\u002Fwww.youtube.com\u002Fwatch?v=P2mooqNMxMs)]\n### 2017\n\n- Idiomatic Rust Libraries — Rustfest Kiev [[Video](https:\u002F\u002Fwww.youtube.com\u002Fwatch?v=0zOg8_B71gE)]\n\n\n## 💬 Forum\n\n### 2020\n\n- [Preferred way of passing `Path`-like types around?](https:\u002F\u002Fwww.reddit.com\u002Fr\u002Frust\u002Fcomments\u002Fcekeq9\u002Fpreferred_way_of_passing_pathlike_types_around\u002F)\n### 2017\n\n- [An idiomatic way to sum up values in a multidimensional Array](https:\u002F\u002Fusers.rust-lang.org\u002Ft\u002Fan-idiomatic-way-to-sum-up-values-in-a-multidimensional-array\u002F9485)\n- [Which is more idiomatic? Functional, imperative or a mix?](https:\u002F\u002Fusers.rust-lang.org\u002Ft\u002Fwhich-is-more-idiomatic-functional-imperative-or-a-mix\u002F11278)\n\n\n## 📜 History\n\nComing 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](https:\u002F\u002Fnorvig.com\u002Fspell-correct.html) and [sudoku solvers](https:\u002F\u002Fnorvig.com\u002Fsudoku.html); and, of course, the [Zen of Python](https:\u002F\u002Fpeps.python.org\u002Fpep-0020\u002F). For Rust, there is no such thing as the Zen of Python, however, so I started collecting my own resources.\nThe goal of this project is to create a peer-reviewed collection of articles\u002Ftalks\u002Frepos, which teach idiomatic Rust style. It's a community project and you can contribute.\n\n## 🔏 License\n\n[![CC0](https:\u002F\u002Flicensebuttons.net\u002Fp\u002Fzero\u002F1.0\u002F88x31.png)](https:\u002F\u002Fcreativecommons.org\u002Fpublicdomain\u002Fzero\u002F1.0\u002F)\n\nTo the extent possible under law, [Matthias Endler](https:\u002F\u002Fendler.dev) has waived all copyright and related or neighboring rights to this work.\nLogo adapted from [FreePik.com](https:\u002F\u002Fwww.freepik.com).","该项目是一个经过同行评审的文章、演讲和仓库集合，旨在教授简洁且符合Rust语言习惯的编程方式。其核心功能在于汇集了大量关于如何编写高质量Rust代码的学习资源，包括但不限于最佳实践指南、设计模式目录、代码示例等，并通过社区贡献不断更新和完善。技术特点方面，它强调遵循Rust社区推荐的标准与惯例，帮助开发者写出更高效、可读性强的代码。适用于希望深入理解Rust语言特性和提升编码技能的各种水平的程序员，在实际项目开发中能够有效提高代码质量和团队协作效率。",2,"2026-06-11 03:03:56","top_language"]