https://medium.com/@AdanRobles00/mastering-rust-a-comprehensive-guide-to-advanced-rust-programming-techniques-aaeb774188b4