🦀 Rust 格式化打印速查表
1. 基础打印
格式 | 说明 | 示例 | 输出 |
---|
{} | Display(用户友好) | println!("{}", 42) | 42 |
{:?} | Debug(调试格式) | println!("{:?}", vec![1,2,3]) | [1, 2, 3] |
{:#?} | Pretty Debug(多行缩进) | println!("{:#?}", vec![1,2,3]) | [ 1, 2, 3 ] |
2. 数字打印
格式 | 说明 | 示例 | 输出 |
---|
{:x} | 十六进制(小写) | println!("{:x}", 255) | ff |
{:X} | 十六进制(大写) | println!("{:X}", 255) | FF |
{:b} | 二进制 | println!("{:b}", 5) | 101 |
{:o} | 八进制 | println!("{:o}", 9) | 11 |
{:#x} | 十六进制带 0x 前缀 | println!("{:#x}", 255) | 0xff |
{:#b} | 二进制带 0b 前缀 | println!("{:#b}", 5) | 0b101 |
{:#o} | 八进制带 0o 前缀 | println!("{:#o}", 9) | 0o11 |
{:p} | 指针地址 | println!("{:p}", &10) | 0x7ffe... |
3. 对齐与填充
格式 | 说明 | 示例 | 输出 |
---|
{:>8} | 右对齐,宽度 8 | println!("{:>8}", 42) | " 42" |
{:<8} | 左对齐,宽度 8 | println!("{:<8}", 42) | "42 " |
{:^8} | 居中,宽度 8 | println!("{:^8}", 42) | " 42 " |
{:08} | 宽度 8,前导 0 | println!("{:08}", 42) | "00000042" |
4. 浮点数
格式 | 说明 | 示例 | 输出 |
---|
{:.2} | 保留 2 位小数 | println!("{:.2}", 3.14159) | 3.14 |
{:.4} | 保留 4 位小数 | println!("{:.4}", 3.14159) | 3.1416 |
{:+.2} | 带正负号 | println!("{:+.2}", 3.14) | +3.14 |
{:e} | 科学计数法(小写 e) | println!("{:e}", 1000.0) | 1e3 |
{:E} | 科学计数法(大写 E) | println!("{:E}", 1000.0) | 1E3 |
5. 错误打印
use std::fs::File;
fn main() {
let f = File::open("not_exist.txt");
match f {
Ok(_) => println!("OK"),
Err(e) => {
println!("Display: {}", e);
println!("Debug: {:?}", e);
println!("Pretty:\n{:#?}", e);
}
}
}
输出示例:
Display: No such file or directory (os error 2)
Debug: Os { code: 2, kind: NotFound, message: "No such file or directory" }
Pretty:
Os {
code: 2,
kind: NotFound,
message: "No such file or directory",
}
6. 综合用法
println!("Hello {0}, the number is {1:x}", "world", 255);
println!("{name} scored {score:.1}", name="Alice", score=95.678);