https://towardsdev.com/day-26-unleashing-rusts-smart-pointers-navigating-the-pointerscape-0171be6824c3