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

流过昼夜 提交于 2019-12-05 17:49:19

问题


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"

回答1:


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:

  • What is the difference between println's format styles?



回答2:


Rust 1.32 introduced the dbg macro:

use std::collections::HashMap;

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

This will print:

[src/main.rs:6] hash = {
    "Daniel": "798-1364"
}

🎉



来源:https://stackoverflow.com/questions/39039700/how-do-i-print-variables-in-rust-and-have-it-show-everything-about-that-variable

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!