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

Andrew Arrow picture Andrew Arrow · Aug 19, 2016 · Viewed 11.4k times · Source
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"

Answer

Nate Mara picture Nate Mara · Aug 19, 2016

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: