idiomatic-rust/resources.json

1202 lines
34 KiB
JSON
Raw Normal View History

[
{
"title": "Rust Anthology",
"url": "https://github.com/brson/rust-anthology",
"description": "The best short-form writing about Rust, collected.",
"tags": [
"anthology",
"writing",
"collection"
],
"official": false,
"year": 2018,
"difficultyLevel": "all",
"duration": null,
"interactivityLevel": "low",
"free": true,
"category": "project"
},
{
"title": "blessed.rs",
"url": "https://blessed.rs",
"description": "An unofficial guide to the Rust ecosystem. Suggestions for popular, well-maintained crates.",
"tags": [
"guide",
"ecosystem",
"crates"
],
"official": false,
"year": 2019,
"difficultyLevel": "all",
"duration": null,
"interactivityLevel": "medium",
"free": true,
"category": "project"
},
{
"title": "cheats.rs - Idiomatic Rust tips",
"url": "https://cheats.rs",
"description": "A list of quick tips to make your code more idiomatic.",
"tags": [
"tips",
"idiomatic",
"quick"
],
"official": false,
"year": 2020,
"difficultyLevel": "all",
"duration": null,
"interactivityLevel": "low",
"free": true,
"category": "project"
},
{
"title": "clippy",
"url": "https://github.com/rust-lang/rust-clippy",
"description": "A bunch of lints to catch common mistakes and improve your Rust code.",
"tags": [
"lints",
"code-quality",
"tool"
],
"official": true,
"year": 2015,
"difficultyLevel": "all",
"duration": null,
"interactivityLevel": "low",
"free": true,
"category": "project"
},
{
"title": "Patterns",
"url": "https://rust-unofficial.github.io/patterns/",
"description": "A catalogue of design patterns in Rust.",
"tags": [
"design-patterns",
"catalogue",
"best-practices"
],
"official": false,
"year": 2016,
"difficultyLevel": "intermediate",
"duration": null,
"interactivityLevel": "low",
"free": true,
"category": "project"
},
{
"title": "Elements of Rust",
"url": "https://github.com/ferrous-systems/elements-of-rust",
"description": "A collection of software engineering techniques for effectively expressing intent with Rust.",
"tags": [
"software-engineering",
"techniques",
"best-practices"
],
"official": false,
"year": 2019,
"difficultyLevel": "advanced",
"duration": null,
"interactivityLevel": "medium",
"free": true,
"category": "project"
},
{
"title": "Possible Rust",
"url": "https://www.possiblerust.com/",
"description": "A blog for intermediate Rust programmers exploring real-world code and design patterns.",
"tags": [
"blog",
"intermediate",
"design-patterns"
],
"official": false,
"year": 2020,
"difficultyLevel": "intermediate",
"duration": null,
"interactivityLevel": "medium",
"free": true,
"category": "project"
},
{
"title": "Rust API Guidelines",
"url": "https://rust-lang.github.io/api-guidelines/",
"description": "An extensive list of recommendations for idiomatic Rust APIs.",
"tags": [
"api",
"guidelines",
"best-practices"
],
"official": true,
"year": 2017,
"difficultyLevel": "intermediate",
"duration": null,
"interactivityLevel": "low",
"free": true,
"category": "project"
},
{
"title": "Rust by Example",
"url": "https://doc.rust-lang.org/rust-by-example/",
"description": "A community driven collection of example code which follow Rust best practices.",
"tags": [
"examples",
"community",
"best-practices"
],
"official": false,
"year": 2015,
"difficultyLevel": "all",
"duration": null,
"interactivityLevel": "high",
"free": true,
"category": "project"
},
{
"title": "Comprehensive Rust",
"url": "https://github.com/google/comprehensive-rust",
"description": "A four day Rust course developed by the Android team, covering all aspects of Rust.",
"tags": [
"course",
"learning",
"comprehensive"
],
"official": true,
"year": 2021,
"difficultyLevel": "all",
"duration": "4 days",
"interactivityLevel": "high",
"free": true,
"category": "workshop"
},
{
"title": "Hecto: Build your own text editor in Rust",
"url": "https://www.flenker.blog/hecto/",
"description": "This is a series of blog posts that shows you how to build a text editor in Rust",
"tags": [
"project",
2024-02-05 22:38:37 +00:00
"learning"
],
"official": false,
"year": 2019,
"difficultyLevel": "all",
"duration": "variable",
"interactivityLevel": "high",
"free": true,
"category": "workshop"
},
{
"title": "Build your own JIRA with Rust",
"url": "https://github.com/LukeMathWalker/build-your-own-jira-with-rust/",
"description": "A test-driven workshop to learn Rust by building your own JIRA clone!",
"tags": [
"test-driven",
"project"
],
"official": true,
"year": 2020,
"difficultyLevel": "intermediate",
2024-02-05 22:37:37 +00:00
"duration": null,
"interactivityLevel": "high",
"free": true,
"category": "workshop"
},
{
"title": "Ferrous Systems Teaching Material",
"url": "https://ferrous-systems.github.io/teaching-material/index.html",
"description": "Free workshop material produced by Ferrous Systems for trainings.",
"tags": [
"material",
"training"
],
"official": true,
"year": 2019,
"difficultyLevel": "all",
"duration": "3-4 days",
"interactivityLevel": "medium",
"free": true,
"category": "workshop"
},
{
"title": "PingCAP talent plan",
"url": "https://github.com/pingcap/talent-plan",
"description": "A series of training courses about writing distributed systems in Rust.",
"tags": [
"training",
"distributed-systems",
"course"
],
"official": true,
"year": 2018,
"difficultyLevel": "advanced",
2024-02-05 22:37:37 +00:00
"duration": null,
"interactivityLevel": "high",
"free": true,
"category": "workshop"
},
{
"title": "Procedural Macros Workshop",
"url": "https://github.com/dtolnay/proc-macro-workshop",
"description": "A selection of projects designed to learn to write Rust procedural macros.",
"tags": [
"macros",
"coding"
],
"official": true,
"year": 2019,
"difficultyLevel": "advanced",
2024-02-05 22:37:37 +00:00
"duration": null,
"interactivityLevel": "high",
"free": true,
"category": "workshop"
},
{
"title": "rust-lang/rustlings",
"url": "https://github.com/rust-lang/rustlings",
"description": "Small exercises to get you used to reading and writing Rust code.",
"tags": [
"exercises",
"learning",
"beginner"
],
"official": true,
"year": 2018,
"difficultyLevel": "beginner",
2024-02-05 22:37:37 +00:00
"duration": null,
"interactivityLevel": "high",
"free": true,
"category": "workshop"
},
{
"title": "Rust Development at Sentry",
"url": "https://develop.sentry.dev/rust/",
"description": "A document containing useful resources for getting started with Rust and adhering to Sentry coding principles.",
"tags": [
"guide",
"coding-principles",
"development"
],
"official": true,
"year": 2020,
"difficultyLevel": "intermediate",
2024-02-05 22:37:37 +00:00
"duration": null,
"interactivityLevel": "low",
"free": true,
"category": "workshop"
},
{
"title": "Rust 101",
"url": "https://101-rs.tweede.golf/",
"description": "A Rust University course by tweede golf.",
"tags": [
"course",
"university",
"learning"
],
"official": false,
"year": 2019,
"difficultyLevel": "beginner",
2024-02-05 22:37:37 +00:00
"duration": null,
"interactivityLevel": "medium",
"free": true,
"category": "workshop"
},
{
"title": "Command Line Applications in Rust",
"url": "https://rust-cli.github.io/book",
"description": "A tutorial on how to write CLI apps in Rust, learning many aspects of the ecosystem.",
"tags": [
"tutorial",
"cli",
"ecosystem"
],
"official": false,
"year": 2024,
"difficultyLevel": "all",
2024-02-05 22:37:37 +00:00
"duration": null,
"interactivityLevel": "medium",
"free": true,
"category": "book"
},
{
"title": "Command-Line Rust",
"url": "https://github.com/kyclark/command-line-rust",
"description": "Learn the language by writing Rust versions of common Unix coreutils.",
"tags": [
"unix",
"coreutils",
"learning"
],
"official": false,
"year": 2022,
"difficultyLevel": "intermediate",
2024-02-05 22:37:37 +00:00
"duration": null,
"interactivityLevel": "medium",
"free": true,
"category": "book"
},
{
"title": "Discover the world of microcontrollers through Rust!",
"url": "https://rust-embedded.github.io/discovery/",
"description": "An introductory course on microcontroller-based embedded systems using Rust.",
"tags": [
"embedded-systems",
"microcontroller",
"course"
],
"official": false,
"year": 2023,
"difficultyLevel": "beginner",
2024-02-05 22:37:37 +00:00
"duration": null,
"interactivityLevel": "high",
"free": true,
"category": "book"
},
{
"title": "High Assurance Rust",
"url": "https://highassurance.rs/",
"description": "Developing secure and robust software, focusing on embedded-friendly data structures in Rust.",
"tags": [
"security",
"robustness",
"embedded"
],
"official": false,
"year": 2022,
"difficultyLevel": "advanced",
2024-02-05 22:37:37 +00:00
"duration": null,
"interactivityLevel": "medium",
"free": true,
"category": "book"
},
{
"title": "Rust Cookbook",
"url": "https://github.com/rust-lang-nursery/rust-cookbook",
"description": "Examples that demonstrate good practices to accomplish common programming tasks in Rust.",
"tags": [
"examples",
"good-practices",
"programming"
],
"official": false,
"year": 2021,
"difficultyLevel": "intermediate",
2024-02-05 22:37:37 +00:00
"duration": null,
"interactivityLevel": "medium",
"free": true,
"category": "book"
},
{
"title": "Rust for Rustaceans",
"url": "https://nostarch.com/rust-rustaceans",
"description": "Covers how to design reliable, idiomatic, and ergonomic Rust programs based on best principles.",
"tags": [
"design",
"idiomatic",
"ergonomic"
],
"official": false,
"year": 2021,
"difficultyLevel": "advanced",
2024-02-05 22:37:37 +00:00
"duration": null,
"interactivityLevel": "low",
"free": false,
"category": "book"
},
{
"title": "Programming Rust: Fast, Safe Systems Development",
"url": "https://www.oreilly.com/library/view/programming-rust-2nd/9781492052586/",
"description": "A comprehensive Rust Programming Guide that covers most of Rust's features in detail.",
"tags": [
"comprehensive",
"features",
"guide"
],
"official": false,
"year": 2021,
"difficultyLevel": "all",
2024-02-05 22:37:37 +00:00
"duration": null,
"interactivityLevel": "low",
"free": false,
"category": "book"
},
{
"title": "Rust Atomics and Locks",
"url": "https://marabos.nl/atomics/",
"description": "Helps Rust programmers of all levels gain a clear understanding of low-level concurrency.",
"tags": [
"concurrency",
"low-level",
"understanding"
],
"official": false,
"year": 2023,
"difficultyLevel": "intermediate",
2024-02-05 22:37:37 +00:00
"duration": null,
"interactivityLevel": "medium",
"free": true,
"category": "book"
},
{
"title": "Compile-Time Invariants in Rust",
"url": "https://corrode.dev/blog/compile-time-invariants/",
"description": "Shows how macros can be used to enforce invariants at compile-time.",
"tags": [
"macros",
"invariants",
"compile-time"
],
"official": false,
"year": 2023,
"difficultyLevel": "advanced",
2024-02-05 22:37:37 +00:00
"duration": null,
"interactivityLevel": "low",
"free": true,
"category": "article"
},
{
"title": "Aim For Immutability in Rust",
"url": "https://corrode.dev/blog/immutability/",
"description": "Explains why variables are immutable in Rust by default.",
"tags": [
"immutability",
"variables",
"rust-basics"
],
"official": false,
"year": 2023,
"difficultyLevel": "beginner",
2024-02-05 22:37:37 +00:00
"duration": null,
"interactivityLevel": "low",
"free": true,
"category": "article"
},
{
"title": "Naming Your Lifetimes",
"url": "https://www.possiblerust.com/pattern/naming-your-lifetimes",
"description": "Explains how using longer, declarative lifetime names can help to disambiguate which borrow is which.",
"tags": [
"lifetimes",
"naming-conventions",
"rust-patterns"
],
"official": false,
"year": 2021,
"difficultyLevel": "intermediate",
2024-02-05 22:37:37 +00:00
"duration": null,
"interactivityLevel": "low",
"free": true,
"category": "article"
},
{
"title": "Aiming for idiomatic Rust",
"url": "https://web.archive.org/web/20221203043933/https://shane-o.dev/blog/aiming-for-idiomatic-rust",
"description": "Discusses different ways to solve a popular coding puzzle, 'balanced brackets', in Rust.",
"tags": [
"coding-puzzle",
"best-practices"
],
"official": false,
"year": 2021,
"difficultyLevel": "intermediate",
2024-02-05 22:37:37 +00:00
"duration": null,
"interactivityLevel": "medium",
"free": true,
"category": "article"
},
{
"title": "Wrapping errors in Rust",
"url": "https://edgarluque.com/blog/wrapping-errors-in-rust",
"description": "Wrapping 'reqwest::Error' and a custom error type as an enum to make library usage easier.",
"tags": [
"error-handling",
"rust-tips",
"programming"
],
"official": false,
"year": 2021,
"difficultyLevel": "intermediate",
2024-02-05 22:37:37 +00:00
"duration": null,
"interactivityLevel": "medium",
"free": true,
"category": "article"
},
{
"title": "Hexagonal architecture in Rust",
"url": "https://alexis-lozano.com/hexagonal-architecture-in-rust-1/",
"description": "Describes how to build a Rust service using domain driven design and a test-first approach.",
"tags": [
"architecture",
"domain-driven-design",
"rust-service"
],
"official": false,
"year": 2021,
"difficultyLevel": "advanced",
2024-02-05 22:37:37 +00:00
"duration": null,
"interactivityLevel": "medium",
"free": true,
"category": "article"
},
{
"title": "Context-preserving error handling",
"url": "https://kazlauskas.me/entries/errors",
"description": "Explains how to use crates like 'thiserror' in combination with 'map_err' to add context to errors.",
"tags": [
"error-handling",
"crates",
"rust-tips"
],
"official": false,
"year": 2020,
"difficultyLevel": "intermediate",
2024-02-05 22:37:37 +00:00
"duration": null,
"interactivityLevel": "low",
"free": true,
"category": "article"
},
{
"title": "Refactoring Rust Transpiled from C",
"url": "https://immunant.com/blog/2020/09/transpiled_c_safety/",
"description": "Describes how to lift a C-project that was automatically converted to unsafe Rust to safer, more idiomatic Rust.",
"tags": [
"refactoring",
"transpiling",
"c-to-rust"
],
"official": false,
"year": 2020,
"difficultyLevel": "advanced",
2024-02-05 22:37:37 +00:00
"duration": null,
"interactivityLevel": "medium",
"free": true,
"category": "article"
},
{
"title": "Learning Rust through open source and live code reviews",
"url": "https://loige.co/learning-rust-through-open-source-and-live-code-reviews/",
"description": "Covers patterns like 'FromStr' and exposing a CLI and a library in one crate.",
"tags": [
"open-source",
"code-review",
"rust-patterns"
],
"official": false,
"year": 2020,
"difficultyLevel": "intermediate",
2024-02-05 22:37:37 +00:00
"duration": null,
"interactivityLevel": "medium",
"free": true,
"category": "article"
},
{
"title": "Guide on how to write documentation for a Rust crate",
"url": "https://blog.guillaume-gomez.fr/articles/2020-03-12+Guide+on+how+to+write+documentation+for+a+Rust+crate",
"description": "Writing good documentation with rustdoc including many examples.",
"tags": [
"documentation",
"rustdoc",
"best-practices"
],
"official": false,
"year": 2020,
"difficultyLevel": "all",
2024-02-05 22:37:37 +00:00
"duration": null,
"interactivityLevel": "medium",
"free": true,
"category": "article"
},
{
"title": "Are out parameters idiomatic in Rust?",
"url": "https://steveklabnik.com/writing/are-out-parameters-idiomatic-in-rust",
"description": "Discusses the pros and cons of functions returning a value vs. modifying a parameter in-place.",
"tags": [
"functions",
"parameters"
],
"official": false,
"year": 2020,
"difficultyLevel": "intermediate",
2024-02-05 22:37:37 +00:00
"duration": null,
"interactivityLevel": "low",
"free": true,
"category": "article"
},
{
"title": "Await a minute",
"url": "https://docs.rs/dtolnay/0.0.3/dtolnay/macro._01__await_a_minute.html",
"description": "Example code for moving from raw futures to async/await syntax to improve error handling.",
"tags": [
"async",
"await",
"error-handling"
],
"official": false,
"year": 2019,
"difficultyLevel": "intermediate",
2024-02-05 22:37:37 +00:00
"duration": null,
"interactivityLevel": "medium",
"free": true,
"category": "article"
},
{
"title": "Taking string arguments in Rust",
"url": "http://xion.io/post/code/rust-string-args.html",
"description": "Discussing how to avoid subtle issues with string handling and when to use 'str' vs 'String'.",
"tags": [
"strings",
"arguments",
"best-practices"
],
"official": false,
"year": 2019,
"difficultyLevel": "beginner",
2024-02-05 22:37:37 +00:00
"duration": null,
"interactivityLevel": "low",
"free": true,
"category": "article"
},
{
"title": "Rust Patterns: Enums Instead Of Booleans",
"url": "http://blakesmith.me/2019/05/07/rust-patterns-enums-instead-of-booleans.html",
"description": "Discusses how using enums instead of booleans can express intent more clearly in Rust.",
"tags": [
"enums",
"booleans",
"patterns"
],
"official": false,
"year": 2019,
"difficultyLevel": "intermediate",
2024-02-05 22:37:37 +00:00
"duration": null,
"interactivityLevel": "medium",
"free": true,
"category": "article"
},
{
"title": "Programming an ARM microcontroller in Rust at four different levels of abstraction",
"url": "https://pramode.in/2018/02/20/programming-a-microcontroller-in-rust-at-four-levels-of-abstraction/",
"description": "Demonstrates how Rust helps to move from low-level embedded code to high-level abstractions.",
"tags": [
"microcontroller",
"arm",
"abstraction"
],
"official": false,
"year": 2018,
"difficultyLevel": "advanced",
2024-02-05 22:37:37 +00:00
"duration": null,
"interactivityLevel": "high",
"free": true,
"category": "article"
},
{
"title": "Iteration patterns for Result & Option",
"url": "http://xion.io/post/code/rust-iter-patterns.html",
"description": "Explores how to filter and partition iterators of Result and Option types idiomatically.",
"tags": [
"iterators",
"result",
"option"
],
"official": false,
"year": 2017,
"difficultyLevel": "intermediate",
2024-02-05 22:37:37 +00:00
"duration": null,
"interactivityLevel": "medium",
"free": true,
"category": "article"
},
{
"title": "Lessons learned redesigning and refactoring a Rust Library",
"url": "https://web.archive.org/web/20220126172949/https://blog.mgattozzi.dev/refactor-rust/",
"description": "'RefCell', the builder pattern and more.",
"tags": [
"refactoring",
"design-patterns",
"library"
],
"official": false,
"year": 2017,
"difficultyLevel": "advanced",
2024-02-05 22:37:37 +00:00
"duration": null,
"interactivityLevel": "medium",
"free": true,
"category": "article"
},
{
"title": "Math with distances in Rust: safety and correctness across units",
"url": "https://ferrisellis.com/content/rust-implementing-units-for-types/",
"description": "How to create a system to cleanly and safely do arithmetic with lengths.",
"tags": [
"math",
"safety",
"type-system"
],
"official": false,
"year": 2017,
"difficultyLevel": "intermediate",
2024-02-05 22:37:37 +00:00
"duration": null,
"interactivityLevel": "medium",
"free": true,
"category": "article"
},
{
"title": "The balance between cost, useability and soundness in C bindings, and Rust-SDL2's release",
"url": "https://web.archive.org/web/20190509123207/https://cobrand.github.io/rust/sdl2/2017/05/07/the-balance-between-soundness-cost-useability.html",
"description": "Writing safe, sound, idiomatic libraries despite the limitations of the borrow checker.",
"tags": [
"c-bindings",
2024-02-05 22:37:37 +00:00
"sdl",
"borrow-checker"
],
"official": false,
"year": 2017,
"difficultyLevel": "advanced",
2024-02-05 22:37:37 +00:00
"duration": null,
"interactivityLevel": "medium",
"free": true,
"category": "article"
},
{
"title": "Russian Dolls and clean Rust code",
"url": "https://web.archive.org/web/20220126183049/https://blog.mgattozzi.dev/russian-dolls/",
"description": "How to use the full power of 'Option' and 'Result' (especially 'and_then()' and 'unwrap_or()').",
"tags": [
"option",
"result",
"code-quality"
],
"official": false,
"year": 2016,
"difficultyLevel": "intermediate",
2024-02-05 22:37:37 +00:00
"duration": null,
"interactivityLevel": "medium",
"free": true,
"category": "article"
},
{
"title": "Elegant Library APIs in Rust",
"url": "https://deterministic.space/elegant-apis-in-rust.html",
"description": "Many helpful tips and tricks for writing libraries in Rust.",
"tags": [
"libraries",
"api-design",
"best-practices"
],
"official": false,
"year": 2016,
"difficultyLevel": "intermediate",
2024-02-05 22:37:37 +00:00
"duration": null,
"interactivityLevel": "medium",
"free": true,
"category": "article"
},
{
"title": "Teaching libraries through good documentation",
"url": "https://deterministic.space/teaching-libraries.html",
"description": "How to use the full power of Rust's documentation support (e.g. doc tests).",
"tags": [
"documentation",
"libraries"
],
"official": false,
"year": 2016,
"difficultyLevel": "intermediate",
2024-02-05 22:37:37 +00:00
"duration": null,
"interactivityLevel": "medium",
"free": true,
"category": "article"
},
{
"title": "Pretty State Machine Patterns in Rust",
"url": "https://hoverbear.org/2016/10/12/rust-state-machine-pattern/",
"description": "How to represent a State Machine in an expressive and understandable way in Rust.",
"tags": [
"state-machine",
"patterns"
],
"official": false,
"year": 2016,
"difficultyLevel": "intermediate",
2024-02-05 22:37:37 +00:00
"duration": null,
"interactivityLevel": "medium",
"free": true,
"category": "article"
},
{
"title": "Ripgrep Code Review",
"url": "https://blog.mbrt.dev/posts/ripgrep/",
"description": "An analysis of the popular 'ripgrep' tool's source code.",
"tags": [
"code-review",
"ripgrep",
"analysis"
],
"official": false,
"year": 2016,
"difficultyLevel": "advanced",
2024-02-05 22:37:37 +00:00
"duration": null,
"interactivityLevel": "medium",
"free": true,
"category": "article"
},
{
"title": "Rustic Bits",
"url": "https://llogiq.github.io/2016/02/11/rustic.html",
"description": "Small things that make for rustic code.",
"tags": [
"best-practices",
"code-quality"
],
"official": false,
"year": 2016,
"difficultyLevel": "beginner",
2024-02-05 22:37:37 +00:00
"duration": null,
"interactivityLevel": "low",
"free": true,
"category": "article"
},
{
"title": "Convenient and idiomatic conversions in Rust",
"url": "https://ricardomartins.cc/2016/08/03/convenient_and_idiomatic_conversions_in_rust",
"description": "Explains 'From<T>', 'Into<T>', 'TryFrom<T>', 'TryInto<T>', 'AsRef<T>' and 'AsMut<T>' with practical examples.",
"tags": [
"conversions",
"examples"
],
"official": false,
"year": 2016,
"difficultyLevel": "intermediate",
2024-02-05 22:37:37 +00:00
"duration": null,
"interactivityLevel": "medium",
"free": true,
"category": "article"
},
{
"title": "Idiomatic tree and graph like structures in Rust",
"url": "https://rust-leipzig.github.io/architecture/2016/12/20/idiomatic-trees-in-rust/",
"description": "Introduction to safe, dynamic, arena based tree structures without using lifetimes.",
"tags": [
"tree-structures",
"graphs"
],
"official": false,
"year": 2016,
"difficultyLevel": "advanced",
2024-02-05 22:37:37 +00:00
"duration": null,
"interactivityLevel": "medium",
"free": true,
"category": "article"
},
{
"title": "Rust traits for developer friendly libraries",
"url": "https://benashford.github.io/blog/2015/05/24/rust-traits-for-developer-friendly-libraries/",
"description": "Thoughts about implementing good Rust libraries.",
"tags": [
"rust-traits",
"libraries",
"development"
],
"official": false,
"year": 2015,
"difficultyLevel": "intermediate",
2024-02-05 22:37:37 +00:00
"duration": null,
"interactivityLevel": "low",
"free": true,
"category": "article"
},
{
"title": "Error Handling in Rust",
"url": "https://blog.burntsushi.net/rust-error-handling/",
"description": "Understanding and handling errors in Rust in an idiomatic way.",
"tags": [
"error-handling"
],
"official": false,
"year": 2015,
"difficultyLevel": "intermediate",
2024-02-05 22:37:37 +00:00
"duration": null,
"interactivityLevel": "medium",
"free": true,
"category": "article"
},
{
"title": "Creating a Rust function that accepts String or &str",
"url": "https://hermanradtke.com/2015/05/06/creating-a-rust-function-that-accepts-string-or-str.html",
"description": "How to make calling your code both ergonomic and fast (zero-allocation).",
"tags": [
"functions",
"string-handling"
],
"official": false,
"year": 2015,
"difficultyLevel": "intermediate",
2024-02-05 22:37:37 +00:00
"duration": null,
"interactivityLevel": "medium",
"free": true,
"category": "article"
},
{
"title": "Creating a Rust function that returns a &str or String",
"url": "https://hermanradtke.com/2015/05/29/creating-a-rust-function-that-returns-string-or-str.html",
"description": "How 'Into' and 'Cow' (Clone-on-write) work together to avoid allocations for string types.",
"tags": [
"functions",
"string-handling"
],
"official": false,
"year": 2015,
"difficultyLevel": "intermediate",
2024-02-05 22:37:37 +00:00
"duration": null,
"interactivityLevel": "medium",
"free": true,
"category": "article"
},
{
"title": "Effectively Using Iterators In Rust",
"url": "https://hermanradtke.com/2015/06/22/effectively-using-iterators-in-rust.html",
"description": "Explanation of the 'Iter' and 'IntoIter' traits and how loops actually work in Rust.",
"tags": [
"iterators",
"traits"
],
"official": false,
"year": 2015,
"difficultyLevel": "intermediate",
2024-02-05 22:37:37 +00:00
"duration": null,
"interactivityLevel": "medium",
"free": true,
"category": "article"
},
{
"title": "Strategies for solving 'cannot move out of' borrowing errors in Rust",
"url": "https://hermanradtke.com/2015/06/09/strategies-for-solving-cannot-move-out-of-borrowing-errors-in-rust.html",
"description": "Practical tips to help understand the borrow-checker and move semantics.",
"tags": [
"borrow-checker",
"move-semantics"
],
"official": false,
"year": 2015,
"difficultyLevel": "intermediate",
2024-02-05 22:37:37 +00:00
"duration": null,
"interactivityLevel": "medium",
"free": true,
"category": "article"
},
{
"title": "Rayon: data parallelism in Rust",
"url": "https://smallcultfollowing.com/babysteps/blog/2015/12/18/rayon-data-parallelism-in-rust/",
"description": "Writing elegant parallel code in Rust.",
"tags": [
"parallelism",
"rayon"
],
"official": false,
"year": 2015,
"difficultyLevel": "advanced",
2024-02-05 22:37:37 +00:00
"duration": null,
"interactivityLevel": "medium",
"free": true,
"category": "article"
},
{
"title": "Tricks of the Trait: Enabling Ergonomic Extractors",
"url": "https://www.youtube.com/watch?v=7DOYtnCXucw",
"description": "Rust Nation UK, Feb. 2023",
"tags": [
"traits",
"ergonomics",
"extractors"
],
"official": false,
"year": 2023,
"difficultyLevel": "intermediate",
2024-02-05 22:37:37 +00:00
"duration": null,
"interactivityLevel": "low",
"free": true,
"category": "talk"
},
{
"title": "Nine Rules for Elegant Rust Library APIs",
"url": "https://www.youtube.com/watch?v=6-8-9ZV-2WQ",
"description": "Seattle Rust Meetup, Sep. 2022",
"tags": [
"library-apis",
"elegance"
],
"official": false,
"year": 2022,
"difficultyLevel": "intermediate",
2024-02-05 22:37:37 +00:00
"duration": null,
"interactivityLevel": "low",
"free": true,
"category": "talk"
},
{
"title": "Ergonomic APIs for hard problems",
"url": "https://www.youtube.com/watch?v=Phk0C-kLlho",
"description": "RustLab Conference, October 2022",
"tags": [
"apis",
"ergonomics",
"rust-conference"
],
"official": false,
"year": 2022,
"difficultyLevel": "intermediate",
2024-02-05 22:37:37 +00:00
"duration": null,
"interactivityLevel": "low",
"free": true,
"category": "talk"
},
{
"title": "Macros for a More Productive Rust",
"url": "https://www.youtube.com/watch?v=dZiWkbnaQe8",
"description": "RustConf 2020",
"tags": [
"macros",
"productivity",
"rustconf"
],
"official": false,
"year": 2020,
"difficultyLevel": "intermediate",
2024-02-05 22:37:37 +00:00
"duration": null,
"interactivityLevel": "low",
"free": true,
"category": "talk"
},
{
"title": "Making Rust Delightful",
"url": "https://www.youtube.com/watch?v=YSEx8wtlPWc",
"description": "RustCon Asia 2019",
"tags": [
"conference",
"development"
],
"official": false,
"year": 2019,
"difficultyLevel": "all",
2024-02-05 22:37:37 +00:00
"duration": null,
"interactivityLevel": "low",
"free": true,
"category": "talk"
},
{
"title": "Idiomatic Rust - Writing Concise and Elegant Rust Code",
"url": "https://www.youtube.com/watch?v=P2mooqNMxMs",
"description": "FOSDEM 2018",
"tags": [
"fosdem"
],
"official": false,
"year": 2018,
"difficultyLevel": "all",
2024-02-05 22:37:37 +00:00
"duration": null,
"interactivityLevel": "low",
"free": true,
"category": "talk"
},
{
"title": "Idiomatic Rust Libraries",
"url": "https://www.youtube.com/watch?v=0zOg8_B71gE",
"description": "Rustfest Kiev",
"tags": [
"rust-libraries",
"rustfest"
],
"official": false,
"year": 2017,
"difficultyLevel": "intermediate",
2024-02-05 22:37:37 +00:00
"duration": null,
"interactivityLevel": "low",
"free": true,
"category": "talk"
},
{
"title": "Preferred way of passing `Path`-like types around?",
"url": "https://www.reddit.com/r/rust/comments/cekeq9/preferred_way_of_passing_pathlike_types_around/",
"description": "A Reddit discussion on the best practices for passing `Path`-like types in Rust.",
"tags": [
"discussion",
"path-types",
"best-practices"
],
"official": false,
"year": 2020,
"difficultyLevel": "intermediate",
2024-02-05 22:37:37 +00:00
"duration": null,
"interactivityLevel": "high",
"free": true,
"category": "forum"
},
{
"title": "Which is more idiomatic? Functional, imperative or a mix?",
"url": "https://users.rust-lang.org/t/which-is-more-idiomatic-functional-imperative-or-a-mix/11278",
"description": "A discussion on Rust's users forum about the idiomatic way to write Rust code: functional, imperative, or a mix of both.",
"tags": [
"functional",
"imperative",
"coding-style"
],
"official": false,
"year": 2017,
"difficultyLevel": "all",
2024-02-05 22:37:37 +00:00
"duration": null,
"interactivityLevel": "high",
"free": true,
"category": "forum"
},
{
"title": "An idiomatic way to sum up values in a multidimensional Array",
"url": "https://users.rust-lang.org/t/an-idiomatic-way-to-sum-up-values-in-a-multidimensional-array/9485",
"description": "Forum discussion on idiomatic approaches to summing values in a multidimensional array in Rust.",
"tags": [
"arrays",
"summing"
],
"official": false,
"year": 2017,
"difficultyLevel": "intermediate",
2024-02-05 22:37:37 +00:00
"duration": null,
"interactivityLevel": "high",
"free": true,
"category": "forum"
2024-02-05 22:37:37 +00:00
},
{
"title": "The Four Horsemen of Bad Rust Code",
"url": "https://github.com/corrode/four-horsemen-talk",
"description": "A talk about common pitfalls in Rust code like overengineering and premature optimization.",
"tags": [
"pitfalls",
"common-mistakes",
"patterns"
],
"official": false,
"year": 2024,
"difficultyLevel": "beginner",
"duration": null,
"interactivityLevel": "low",
"free": true,
"category": "talk"
},
{
"title": "Idiomatic Rust Workshop",
"url": "https://fettblog.eu/slides/idiomatic-rust/",
"description": "A talk/workshop about idiomatic Rust code focusing on effective use of existing syntax and design patterns",
"tags": [
"tooling",
"syntax",
"design-patterns"
],
"official": false,
"year": 2021,
"difficultyLevel": "beginner",
"duration": null,
"interactivityLevel": "low",
"free": true,
"category": "workshop"
}
2024-02-05 22:38:37 +00:00
]