Fmt::Display 'Cleaner' 比 Fmt::Debug 怎么样?

Red*_*ble 3 coding-style rust

所以我目前正在开始使用 Rust,并且正在阅读 Rust By Example。
做练习,边玩边玩代码。

但在 RBE Display函数描述中,它描述 Fmt::Display 比 Fmt::Debug 更“干净”。
这怎么样?从我看来,您必须做更多的工作,并编写更多的代码来尝试使 Fmt::Display 工作,而 Fmt::Debug 立即工作?

我是否误解了“清洁”代码是什么,或者这是一个错字?

小智 9

Display 的输出通常比 Debug 更清晰,而不是实现它的代码。Debug 的输出旨在用于调试目的,提供不那么模糊的输出。Display 的输出是面向用户的输出,因此它高度依赖于您的结构的含义,这就是它无法导出的原因。

例如,考虑以下代码:

fn main() {
    // Note that \t is the TAB character
    let output = "N\tO\tI\tC\tE";
    println!("Debug: {:?}", output);
    println!("Display: {}", output);
}
Run Code Online (Sandbox Code Playgroud)

它会输出:

Debug: "N\tO\tI\tC\tE"
Display: N  O   I   C   E
Run Code Online (Sandbox Code Playgroud)

在这种情况下,Debug 将显示 str(文本)包含的字符(因为它在调试时更有用),而 Display 将只打印它们。