https://medium.com/@michaelfairfield_43759/title-mastering-rust-error-handling-advanced-topics-and-techniques-23a7618b4b60