Using Rust types to guarantee domain invariants | Hacker News Reader