Type aware command line parser in Rust