XAM*_*cky 4 console struct println rust
我目前正在实现fmt::Display
一个结构,以便它将打印到控制台.然而,struct有一个字段,它是Vec
它的类型.
pub struct Node<'a> {
pub start_tag: &'a str,
pub end_tag: &'a str,
pub content: String,
pub children: Vec<Node<'a>>,
}
Run Code Online (Sandbox Code Playgroud)
impl<'a> fmt::Display for Node<'a> {
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
write!(f, "START TAG: {:?}", self.start_tag);
write!(f, "CONTENT: {:?}", self.content);
for node in self.children {
write!(f, "CHILDREN:\n\t {:?}", node);
}
write!(f, "END TAG: {:?}", self.end_tag);
}
}
Run Code Online (Sandbox Code Playgroud)
START TAG: "Hello"
CONTENT: ""
CHILDREN:
PRINTS CHILDREN WITH INDENT
END TAG: "World"
Run Code Online (Sandbox Code Playgroud)
有一个(有点隐藏)的功能Debug
,你可以使用格式说明符{:#?}
来漂亮你的对象(使用缩进和多行).如果您将struct的元素重写为与请求的输出具有相同的顺序并导出Debug
特征
#[derive(Debug)]
pub struct Node<'a> {
pub start_tag: &'a str,
pub content: String,
pub children: Vec<Node<'a>>,
pub end_tag: &'a str,
}
Run Code Online (Sandbox Code Playgroud)
那么你的输出可能如下所示:
Node {
start_tag: "Hello",
content: "",
children: [
Node {
start_tag: "Foo",
content: "",
children: [],
end_tag: "Bar"
}
],
end_tag: "World"
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
559 次 |
最近记录: |