https://blog.devgenius.io/mastering-rust-design-patterns-a-comprehensive-guide-with-code-examples-46f045824d7f