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

Rust中format!宏里{:#?}的含义及相关文档查询

Rust中format!宏里{:#?}的含义及说明

1. {:#?}的核心作用

{:#?}是Rust针对Debug格式化提供的美化缩进输出模式,仅适用于实现了Debug trait的类型。它会将元组、结构体、枚举这类复杂数据结构展开为多行,并添加缩进,让输出的层级结构更清晰易读,区别于{:?}的紧凑单行输出。

比如你给出的示例代码:

format!("{:#?}", (100, 200));

输出结果为带缩进的结构化形式:

(
    100,
    200,
)

如果改用普通的{:?},输出会是紧凑的单行:(100, 200)。

2. 相关标准库说明

Rust标准库的std::fmt模块中,Debug trait的文档详细定义了这个格式化标记:

  • 所有实现Debug trait的类型(包括大部分标准库容器,如Vec、HashMap,以及自定义的#[derive(Debug)]类型)都支持{:?}和{:#?}两种格式
  • 这里的#属于格式化标记中的"alternate"(替代)模式,对Debug格式化来说,就是触发美化缩进的输出逻辑

举个自定义结构体的例子:

#[derive(Debug)]
struct Book {
    title: String,
    pages: u16,
}

let book = Book { title: "Rust Programming".into(), pages: 500 };
println!("{:#?}", book);

输出会是结构化的多行形式:

Book {
    title: "Rust Programming",
    pages: 500,
}

内容的提问来源于stack exchange,提问作者boundless-forest

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 00:25:21