为什么要做dbg!和println!(“ {:?}”)显示不同的输出?

Max*_*ian 2 rust

我原以为dbg!(x)println!("{:?}", x)既能打印相同的字符串,因为{:?}用于调试输出,对不对?

如果我没记错的话,为什么我们会看到这个结果,一个显示在单行中,而另一个显示在多行中?

fn main() {
    let x: Vec<u32> = (0..10).collect();
    println!("{:?}", x[0..1].to_vec());
    dbg!(x[0..1].to_vec());
}
Run Code Online (Sandbox Code Playgroud)
[src/main.rs:4] x[0..1].to_vec() = [
    0,
]
[0]
Run Code Online (Sandbox Code Playgroud)

游乐场链接

mca*_*ton 5

dbg!不使用{:?}但是{:#?}

额外#这意味着dbg!将使用备用格式,它使用多个空格和换行,而普通格式化会变得更加密集。