Type-level programming in Rust