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 }
相关推荐
YOLOW924 小时前
两周五个版本:我用 Rust 写的 AI 数据引擎 PageSift,0.81 系列做了什么
rust
西风测评4 小时前
SSH 中文乱码的根源:locale、SendEnv 与 env 请求
rust
unconditional4 小时前
我数了下 sdkm 的源码:41 个工具的安装逻辑,四分之三是同一行
rust·开源
niyongsheng21 小时前
3D 装箱算法工程化:数据结构、放置启发式与支撑规则
数据结构·算法·rust
Hello.Reader1 天前
tsrs 技术解析用 Rust 移植 TypeScript 7,类型检查还能怎样提速?
开发语言·rust·typescript
王仔小奶1 天前
Rust 正在接管金融圈?深度拆解一份高薪 FinTech 岗位 JD
开发语言·金融·rust
你为她披上外套时我正站在窗外1 天前
subtitler v2.10 发布:3 个社区 PR、一个一天修掉的 issue,和关于 uuencode 的真相
rust
Thneonl1 天前
熔断不是开关是状态机:Claude Code 路由内核的 3 条红线
人工智能·rust
Thneonl1 天前
一个 Claude Code 本地代理,凭啥配了 3 个观测出口?
人工智能·rust
西风测评1 天前
终端粘贴原理:bracketed paste、4095 字节行限制与 UTF-8 分片
rust