如何从结构中获取 fmt::Display 并将其显示在另一个结构的 fmt::Display 中?

Joh*_*ohn 2 struct rust

我不知道如何命名这个问题,因为我是 Rust 新手,所以请随意提出编辑建议。

我有两个结构。一个是Jobstruct,其中包含一些数字,例如工作需要多长时间等。另一个是 a JobSequence,其中包含sVec()的a Job

我实现了 的fmt::Display特征,Job以便它以这种方式打印出它的三个数字:

(10, 12, 43)
Run Code Online (Sandbox Code Playgroud)

现在,我想实现fmt::Display该结构的特征JobSequence,以便它迭代Job向量中的每个并以这种方式显示它们:

(0, 10, 5)
(30, 10, 5)
(0, 10, 5)
(0, 10, 5)
(0, 10, 5)
Run Code Online (Sandbox Code Playgroud)

我认为(?)我应该重用该Job结构的已实现特征并使用它,以便它在某种程度上简单地将它们打印为半列表。这是我目前的实现,但我有一种草率的感觉,有更好的方法:

(10, 12, 43)
Run Code Online (Sandbox Code Playgroud)

Dog*_*ert 5

您可以通过使用格式字符串Display直接传递 impl 来重复使用它:write!{}

impl fmt::Display for JobSequence {
    fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
        for i in &self.job_sequence {
            writeln!(f, "{}", i)?;
        }
        Ok(())
    }
}
Run Code Online (Sandbox Code Playgroud)

您可以在文档中阅读有关格式化宏使用的不同特征的更多信息。(普通{}使用std::fmt::Display。)