Fmt::Display 'Cleaner' 与 Fmt::Debug 相比如何?

How is Fmt::Display 'Cleaner' than Fmt::Debug?

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

但是在 RBE Display 函数描述中,它把 Fmt::Display 描述为 'cleaner' 而不是 Fmt::Debug。
这怎么样?在我看来,您必须做更多的工作,编写更多的代码来尝试让 Fmt::Display 工作,而 Fmt::Debug 马上就能工作?

我是不是对 'Cleaner' 代码有什么误解,还是打字错误?

Display 的 output 通常比 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);
}

它将输出:

Debug: "N\tO\tI\tC\tE"
Display: N  O   I   C   E

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