面试题答案
一键面试use std::fmt;
struct Point {
x: i32,
y: i32,
}
impl fmt::Debug for Point {
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
write!(f, "Point {{ x: {}, y: {} }}", self.x, self.y)
}
}
Debug
trait与Display
trait在格式化输出上的主要区别如下:
Debug
trait:主要用于调试目的,通常提供开发者友好的输出,包含结构体字段的详细信息,例如上面实现中展示的结构体字段名与对应值。通过{:?}
格式化占位符使用,适合在开发过程中打印调试信息。Display
trait:用于提供用户友好的输出,更注重最终用户看到的展示形式。通过{}
格式化占位符使用,通常在需要向最终用户展示数据时使用,其实现更侧重于简洁、美观和易读的输出。比如对于一个日期类型,Debug
可能输出详细的内部表示,而Display
可能输出YYYY - MM - DD
这样简洁的格式。