You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Rust中如何Pretty print结构体与任意数据类型

Rust 实现结构体/任意类型美观打印(Pretty Print)的零手动开发方案

日常Rust开发做调试打印时,普遍会遇到这类痛点:

  • 想要输出层级清晰、带缩进的美观格式化内容,手动给每个结构体写Debug trait实现太繁琐
  • 嵌套数组、多层嵌套结构体用默认的{:?}格式打印会挤成一团,可读性极差
  • 需要开箱即用、不需要逐一定制打印逻辑的通用方案

目前最便捷的可选方案是使用pretty-trait库,它内置了绝大多数常用类型的默认美观打印实现,自定义结构体也能直接派生使用,不需要手写额外的打印逻辑。

使用方法

  1. 先在项目Cargo.toml里引入依赖,版本可选用crates.io上发布的最新正式版,如果需要给自定义结构体派生打印实现,记得开启derive特性:
[dependencies]
pretty-trait = { version = "0.3", features = ["derive"] }
  1. 代码中引入对应的trait,自定义结构体加上派生宏,就可以直接调用打印方法:
use pretty_trait::Pretty;

// 自定义结构体只需要派生,不需要写任何打印相关逻辑
#[derive(Pretty, Default)]
struct UserInfo {
    uid: u64,
    username: String,
    roles: Vec<String>,
    profile: UserProfile,
}

#[derive(Pretty, Default)]
struct UserProfile {
    age: u8,
    is_verified: bool,
    register_timestamp: i64,
}

fn main() {
    let test_user = UserInfo::default();
    // 直接调用方法即可输出带缩进、层级分明的格式化内容
    test_user.pretty_print();
}

如果有特殊的字段隐藏、格式定制需求,也可以手动给类型实现Pretty trait做自定义调整,默认实现已经能覆盖绝大多数日常调试打印的场景。


内容的提问来源于stack exchange,提问作者Coder

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.30 01:45:35