MST

星途 面试题库

面试题:Rust中Debug trait与格式化输出的基础运用

在Rust中,假设有一个结构体`Point`,包含两个`i32`类型的字段`x`和`y`。请实现`Debug` trait,使得使用`println!`宏并结合`{:?}`格式化占位符能正确打印出结构体实例的内容。同时解释一下`Debug` trait与`Display` trait在格式化输出上的主要区别。
16.7万 热度难度
编程语言Rust

知识考点

AI 面试

面试题答案

一键面试
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这样简洁的格式。