You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
34 lines
1.3 KiB
Markdown
34 lines
1.3 KiB
Markdown
# Introduction
|
|
|
|
## Participation
|
|
|
|
If you are interested in contributing to this book, check out the
|
|
[contribution guidelines](https://github.com/rust-unofficial/patterns/blob/master/CONTRIBUTING.md).
|
|
|
|
## Design patterns
|
|
|
|
When developing programs, we have to solve many problems.
|
|
A program can be viewed as a solution to a problem.
|
|
It can also be viewed as a collection of solutions to many problems.
|
|
All of these solutions work together to solve a bigger problem.
|
|
|
|
## Design patterns in Rust
|
|
|
|
There are many problems that share the same form.
|
|
Due to the fact that Rust is not object-oriented, design patterns vary with
|
|
respect to other object-oriented programming languages.
|
|
While the details are different, since they have the same form they can be
|
|
solved using the same fundamental methods:
|
|
|
|
- [Design patterns](./patterns/index.md) are methods to solve common problems
|
|
when writing software.
|
|
- [Anti-patterns](./anti_patterns/index.md) are methods to solve these same
|
|
common problems. However, while design patterns give us benefits,
|
|
anti-patterns create more problems.
|
|
- [Idioms](./idioms/index.md) are guidelines to follow when coding.
|
|
They are social norms of the community.
|
|
You can break them, but if you do you should have a good reason for it.
|
|
|
|
TODO: Mention why Rust is a bit special - functional elements, type system,
|
|
borrow checker
|