Rust中format!宏里{:#?}的含义及相关文档查询
Rust中format!宏里
{:#?}的含义及说明 1. {:#?}的核心作用
{:#?}是Rust针对Debug格式化提供的美化缩进输出模式,仅适用于实现了Debug trait的类型。它会将元组、结构体、枚举这类复杂数据结构展开为多行,并添加缩进,让输出的层级结构更清晰易读,区别于{:?}的紧凑单行输出。
比如你给出的示例代码:
format!("{:#?}", (100, 200));
输出结果为带缩进的结构化形式:
( 100, 200, )
如果改用普通的{:?},输出会是紧凑的单行:(100, 200)。
2. 相关标准库说明
Rust标准库的std::fmt模块中,Debug trait的文档详细定义了这个格式化标记:
- 所有实现
Debugtrait的类型(包括大部分标准库容器,如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
相关产品推荐
相关产品推荐

