This repository contains Rust 🦀 examples for all 23 classic GoF design patterns, and even a little more.
All examples are designed to introduce practical applicability in the Rust language. There are conceptual and real-world examples. In both cases, Rust idiomatic ways of code development and all the specifics are taken into account.
The repository is developed to be a part of the Refactoring.Guru project.
These examples have been tested with a stable rustc 1.62
(2021 edition).
All examples can be launched via the command line, using cargo
as follows:
cargo run --bin adapter
You can find a proper target in Cargo.toml
of each example:
[[bin]] name = "adapter" path = "main.rs"
Each example contains a README.md with instructions and additional explanations.
Interestingly, in Rust:
- Almost all structural and creational patterns can be implemented using generics, hence, static dispatch.
- Most behavioral patterns can NOT be implemented using static dispatch, instead, they can be implemented only via dynamic dispatch.
A well-thought pattern classification fits the Rust language design perfectly as "behavior" is dynamic in nature and "structure" is static.
Some patterns are really easy to implement in Rust, mostly creational ones, e.g. Prototype, Static Creation Method.
The Mediator behavioral pattern is the hardest to implement with Rust, considering Rust's specific ownership model with strict borrow checker rules.
This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International License.
Authors: Alexander Fadeev (@fadeevab).