面试题答案
一键面试在Rust中,为Point
结构体实现Debug
trait可以按以下步骤进行:
- 导入必要的模块:
use std::fmt;
- 定义
Point
结构体:
struct Point {
x: i32,
y: i32,
}
- 为
Point
结构体实现Debug
trait:
impl fmt::Debug for Point {
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
f.debug_struct("Point")
.field("x", &self.x)
.field("y", &self.y)
.finish()
}
}
在上述实现中:
fmt
函数是Debug
trait要求实现的方法,它接受一个&mut fmt::Formatter<'_>
类型的参数f
。f.debug_struct("Point")
创建一个用于格式化结构体的构建器,"Point"是结构体的名称。.field("x", &self.x)
和.field("y", &self.y)
分别添加结构体的字段及其对应的值。.finish()
完成格式化并返回结果。
这样,当你在代码中对Point
结构体实例使用dbg!()
宏或println!("{:?}", point)
(其中point
是Point
结构体的实例)时,就会按照我们定义的格式输出结构体字段的值。例如:
fn main() {
let p = Point { x: 10, y: 20 };
println!("{:?}", p);
}
输出结果为:Point { x: 10, y: 20 }
。