Search code examples
debuggingrustprintln

How do I print variables in Rust and have it show everything about that variable, like Ruby's .inspect?


use std::collections::HashMap;

fn main() {
    let mut hash = HashMap::new();
    hash.insert("Daniel", "798-1364");
    println!("{}", hash);
}

will fail to compile:

error[E0277]: `std::collections::HashMap<&str, &str>` doesn't implement `std::fmt::Display`
 --> src/main.rs:6:20
  |
6 |     println!("{}", hash);
  |                    ^^^^ `std::collections::HashMap<&str, &str>` cannot be formatted with the default formatter
  |

Is there a way to say something like:

println!("{}", hash.inspect());

and have it print out:

1) "Daniel" => "798-1364"

Solution

  • What you're looking for is the Debug formatter:

    use std::collections::HashMap;
    
    fn main() {
        let mut hash = HashMap::new();
        hash.insert("Daniel", "798-1364");
        println!("{:?}", hash);
    }
    

    This should print:

    {"Daniel": "798-1364"}
    

    See also: