MST

星途 面试题库

面试题:Rust中结构体之间的显式类型转换技巧

定义两个结构体`Point2D`和`Point3D`,`Point2D`有`x`和`y`两个i32类型的字段,`Point3D`有`x`、`y`、`z`三个i32类型的字段。现在要将`Point2D`类型的实例转换为`Point3D`类型,假设`z`字段初始值为0,描述实现这种转换的方法,包括必要的trait实现等。
21.1万 热度难度
编程语言Rust

知识考点

AI 面试

面试题答案

一键面试
// 定义Point2D结构体
struct Point2D {
    x: i32,
    y: i32,
}

// 定义Point3D结构体
struct Point3D {
    x: i32,
    y: i32,
    z: i32,
}

// 定义From trait实现,将Point2D转换为Point3D
use std::convert::From;

impl From<Point2D> for Point3D {
    fn from(p: Point2D) -> Self {
        Point3D {
            x: p.x,
            y: p.y,
            z: 0,
        }
    }
}

可以通过以下方式使用这个转换:

fn main() {
    let point_2d = Point2D { x: 1, y: 2 };
    let point_3d: Point3D = Point3D::from(point_2d);
    println!("Point3D: x = {}, y = {}, z = {}", point_3d.x, point_3d.y, point_3d.z);
}