This was a good blog post. I particularly appreciated the statement about the validate and parse function comparison: “Both of these functions check the same thing, but parseNonEmpty
gives the caller access to the information it learned, while validateNonEmpty
just throws it away.”
In Rust, using the Option and Result types make the general flow of the application much easier to organize, make modular, and reuse.