RUST Display Debug {} {:?}

在 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 }
相关推荐
大卫小东(Sheldon)1 天前
Rust 推荐使用宏而非普通函数的场景
rust
doiito1 天前
【Agent Harness】为什么我把 JSON‑LD “编译成 DAG” 后,整个 Agent 平台立刻聪明了
ai·rust·架构设计·系统设计·ai agent
jump_jump1 天前
为了重玩金庸群侠传,我研究了一下 Ruffle 怎么复活 Flash
游戏·rust·github
星栈2 天前
Dioxus 多页面怎么做:`dioxus-router`、嵌套路由、`Outlet` 和页面组织,一篇给你讲顺
前端·rust·前端框架
Rust研习社4 天前
组合真的优于继承吗?为什么 Rust 和 Go 都拥抱组合舍弃继承?
后端·rust·编程语言
红尘散仙5 天前
想写一个像样的终端 App?试试把 React 的开发体验搬进 Rust TUI
前端·rust
vivo互联网技术5 天前
从 Web 到桌面:基于 Tauri 2.0 + Vue 3 打造 vivo 线下门店「大头贴」拍照体验系统
前端·rust
Rust研习社5 天前
这 8 个 Rust 学习资源值得每个新手收藏起来
后端·rust·编程语言
星栈6 天前
10 分钟跑起第一个 Dioxus 应用:`dx` CLI、`rsx!` 和热更新好不好用
前端·rust·前端框架
望眼欲穿的程序猿6 天前
读取芯片内部温度传感器
嵌入式硬件·rust