Rust 的 fmt::Formatter 格式化输出用法教程

在Rust编程语言中,fmt::Formatter 是用于格式化输出的核心类型之一。你可以通过实现 fmt::Display 或者 fmt::Debug trait 来控制类型的字符串表示形式。格式化的字符串替换通常通过大括号 {} 来表示,并且你可以在大括号中指定格式选项。

基本用法:

use std::fmt;

struct Point {
    x: i32,
    y: i32,
}

impl fmt::Display for Point {
    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
        write!(f, "({}, {})", self.x, self.y)
    }
}

fn main() {
    let point = Point { x: 10, y: 20 };
    println!("The point is: {}", point);
}

上述代码中,实现了 fmt::Display trait 来定义 Point 的字符串格式。

常用格式选项:

  • 填充与对齐: 你可以通过指定 widthalign 来控制输出的宽度和对齐方式。
    • println!("{:>10}", 42); // 输出 " 42"
    • println!("{:<10}", 42); // 输出 "42 "
    • println!("{:^10}", 42); // 输出 " 42 "
  • 数字格式:
    • 进制: {} 可以用来以十进制输出整数,而 {:#x}{:#X}{:#o}{:#b} 则分别以十六进制、大写十六进制、八进制、二进制输出。浮点数: {:.2} 可以指定小数位数。
    • println!("{:x}", 255); // 输出 "ff"
    • println!("{:.2}", 3.1415); // 输出 "3.14"
  • 字符串格式化: 你可以使用 {} 替换为指定的字符串。
    • println!("Hello, {}!", "world");
  • 调试格式: 使用 {:?}{:#?} 输出对象的调试信息。
    rust let arr = [1, 2, 3];
  • println!("{:?}", arr); // 输出 "[1, 2, 3]"

高级用法:

  • 精确控制: 在实现 fmt::Displayfmt::Debug 时,你可以通过 Formatter 对象来控制格式化的精确度、填充、宽度等。
  • impl fmt::Display for Point {
    • fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
    • write!(f, "({:>width$}, {:>width$})",
    • self.x, self.y, width = 3)
    • }
    • }

上述例子将会输出 ( 10, 20),其中数字前面会自动填充空格。

希望这些示例可以帮助你更好地理解 fmt::Formatter 的字符串替换格式。

Translate »