MST

星途 面试题库

面试题:Rust中复制语义在简单数据结构中的应用

假设有一个结构体 `Point`,包含两个 `i32` 类型的字段 `x` 和 `y`。请使用Rust的复制语义,编写一段代码,创建一个 `Point` 实例,并将其赋值给另一个变量,解释在这个过程中复制语义是如何工作的。
46.9万 热度难度
编程语言Rust

知识考点

AI 面试

面试题答案

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

fn main() {
    // 创建Point实例
    let p1 = Point { x: 10, y: 20 };
    // 将p1赋值给p2
    let p2 = p1;

    // 解释:因为i32实现了Copy trait,Point结构体默认也实现了Copy trait
    // 当执行let p2 = p1;时,Rust会将p1的内容按位复制一份给p2
    // 此时p1和p2是两个独立的实例,修改p2不会影响p1
    println!("p1: x = {}, y = {}", p1.x, p1.y);
    println!("p2: x = {}, y = {}", p2.x, p2.y);
}

在这段代码中,i32 类型实现了 Copy trait,因此 Point 结构体也自动实现了 Copy trait。当执行 let p2 = p1; 时,Rust 使用复制语义,将 p1 的内容按位复制给 p2,从而创建了一个新的独立实例 p2。这意味着 p1p2 拥有相同的值,但它们是两个不同的实例,对 p2 的修改不会影响 p1