Parse, Don't Validate and Type-Driven Design in Rust