rust 为什么在自定义结构体上中心打印不起作用?[duplicate]

dphi5xsq  于 2023-02-04  发布在  其他
关注(0)|答案(1)|浏览(107)

此问题在此处已有答案

Why is the width ignored for my custom formatter implementation?(1个答案)
3天前关闭。
首先我写了一个结构体:

struct sdt {
    name: String,
    sex: bool
}

然后对其执行impl*Display*:

impl Display for sdt {
    fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
        write!(f, "<{}, {}>", self.name, self.sex)
    }
}

现在我想打印它居中如下:

fn main() {
    println!("{:^30}", "hello world!");
    let s = sdt {
        name: String::from("cheng-min"),
        sex: false
    };
    println!("{:^30}", s)
}

但它的输出是:output
你能告诉我发生了什么事以及如何解决这个问题吗?

erhoui1w

erhoui1w1#

格式说明符本身不做任何工作,它们被传递给Formatter对象,在Display实现中调用f,函数可以随意使用它们。
例如,要将结果输出填充到给定宽度(像许多内置类型所做的那样),请使用Formatter::pad

impl Display for sdt {
  fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
    f.pad(&format!("<{}, {}>", self.name, self.sex))
  }
}

相关问题