🦀 Rust 格式化打印速查表

7 阅读1分钟

🦀 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}右对齐,宽度 8println!("{:>8}", 42)" 42"
{:<8}左对齐,宽度 8println!("{:<8}", 42)"42 "
{:^8}居中,宽度 8println!("{:^8}", 42)" 42 "
{:08}宽度 8,前导 0println!("{: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);
// 输出: Hello world, the number is ff

println!("{name} scored {score:.1}", name="Alice", score=95.678);
// 输出: Alice scored 95.7