web-dev-qa-db-ja.com

Rustで変数を出力し、Rubyの.inspectのように、その変数に関するすべてを表示するにはどうすればよいですか?

use std::collections::HashMap;

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

コンパイルに失敗します:

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
  |

次のようなことを言う方法はありますか?

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

そしてそれを印刷してもらいます:

1) "Daniel" => "798-1364"
12
Andrew Arrow

あなたが探しているのは Debug フォーマッターです:

use std::collections::HashMap;

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

これは印刷するはずです:

{"Daniel": "798-1364"}

参照:

19
Nate Mara

Rust 1.32では dbg マクロが導入されました:

use std::collections::HashMap;

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

これは印刷されます:

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

????

6
halfelf