// 定义Rectangle结构体
struct Rectangle {
width: u32,
height: u32,
}
// 定义Square结构体
struct Square {
side: u32,
}
// 为Rectangle实现从Square初始化的方式
impl From<Square> for Rectangle {
fn from(square: Square) -> Self {
Rectangle {
width: square.side,
height: square.side,
}
}
}
fn main() {
let square = Square { side: 5 };
let rectangle: Rectangle = Rectangle::from(square);
println!("Rectangle width: {}, height: {}", rectangle.width, rectangle.height);
}
逻辑说明
- 结构体定义:首先定义了
Rectangle
和Square
两个结构体,分别包含相应的字段。
From
trait 实现:通过为Rectangle
实现From<Square>
trait,定义了从Square
到Rectangle
的转换逻辑。在from
方法中,创建一个新的Rectangle
实例,其width
和height
都设置为Square
实例的side
值。
- 主函数:在
main
函数中,创建一个Square
实例,并使用Rectangle::from
方法将其转换为Rectangle
实例,然后打印出Rectangle
的width
和height
,验证转换是否成功。这种方式代码简洁,并且通过实现标准库中的From
trait,提高了代码的可维护性和与其他 Rust 代码的兼容性。