https://medium.com/@murataslan1/crafting-custom-errors-empowering-robust-rust-applications-481073518741