在 Rust 里,Display 和 Debug 都是用来打印 / 输出结构体 / 枚举的 trait(接口),但用途完全不一样:
- Display:给用户看的 ------ 友好、简洁、正式输出。
- Debug:给开发者看的 ------ 调试用、包含完整字段信息。

{:#?} 示例:
调试(美化):
User {
姓名: "张三",
年龄: 20,
}
在自己的 test/expriment 文件夹内,运行:
bash
# 1. 创建一个新项目(名字叫 demo)
cargo new demo
cd demo
修改 main.rs 如下:
rust
use std::fmt::{Display, Debug, Formatter, Result};
// 定义一个结构体
struct User {
name: String,
age: u8,
}
// 实现 Display(给用户看)
impl Display for User {
fn fmt(&self, f: &mut Formatter<'_>) -> Result {
write!(f, "用户:{},年龄:{}岁", self.name, self.age)
}
}
// 实现 Debug(给开发者调试)
impl Debug for User {
fn fmt(&self, f: &mut Formatter<'_>) -> Result {
f.debug_struct("User")
.field("name", &self.name)
.field("age", &self.age)
.finish()
}
}
fn main() {
let user = User {
name: "张三".to_string(),
age: 20,
};
// Display 用 {}
println!("Display:{}", user);
// Debug 用 {:?}
println!("Debug:{:?}", user);
}
在终端运行:
bash
# 2. 打开 src/main.rs 文件,把里面内容全删掉,替换成我给你的完整代码
# 3. 运行
cargo run
预期输出:
Display:用户:张三,年龄:20岁
Debug:User { name: "张三", age: 20 }