https://medium.com/@gurani.udit93/mastering-rust-ownership-a-beginners-guide-with-examples-7b5697415ba8