MST

星途 面试题库

面试题:Rust fmt traits定制打印格式复杂结构体

给定一个嵌套结构体`NestedStruct`,其内部包含一个`Vec<i32>`和另一个结构体`InnerStruct`,`InnerStruct`有一个`String`字段。要求通过实现`std::fmt::Debug` trait,以一种易读且符合Rust风格的格式打印`NestedStruct`,并且在打印`Vec<i32>`时,每个元素之间用` -> `连接。
41.7万 热度难度
编程语言Rust

知识考点

AI 面试

面试题答案

一键面试
use std::fmt;

struct InnerStruct {
    value: String,
}

struct NestedStruct {
    vec: Vec<i32>,
    inner: InnerStruct,
}

impl fmt::Debug for InnerStruct {
    fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
        write!(f, "InnerStruct {{ value: \"{}\" }}", self.value)
    }
}

impl fmt::Debug for NestedStruct {
    fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
        let vec_str = self.vec.iter()
                              .map(|x| x.to_string())
                              .collect::<Vec<String>>()
                              .join(" -> ");
        write!(f, "NestedStruct {{ vec: [{}], inner: {:?} }}", vec_str, self.inner)
    }
}