https://geeklaunch.io/blog/make-invalid-states-unrepresentable/ https://lexi-lambda.github.io/blog/2019/11/05/parse-don-t-validate/ https://cliffle.com/blog/rust-typestate/ https://doc.rust-lang.org/book/ch18-03-oo-design-patterns.html