https://blog.devgenius.io/mastering-error-handling-in-rust-a-deep-dive-into-result-types-38ad19ad5658