MST

星途 面试题库

面试题:Rust中引用如何避免所有权转移及其好处的简单应用

假设有一个结构体`Person`,包含`name`(字符串类型)和`age`(整型)字段。编写一个函数,该函数接收一个`Person`的引用,对其`age`进行增加操作,同时不发生所有权转移,阐述引用在此处避免所有权转移带来的好处。
43.8万 热度难度
编程语言Rust

知识考点

AI 面试

面试题答案

一键面试

在Rust语言中代码实现如下:

struct Person {
    name: String,
    age: i32,
}

fn increment_age(person: &mut Person) {
    person.age += 1;
}

引用在此处避免所有权转移带来的好处:

  1. 资源复用:如果不使用引用,传递Person结构体时会发生所有权转移,函数结束后原变量无法再使用。使用引用可以在不转移所有权的情况下对结构体进行操作,使得原变量在函数调用结束后仍能继续使用,从而实现资源复用。
  2. 性能提升:避免了不必要的数据复制,特别是对于大型结构体,传递引用只传递一个指针,相比传递整个结构体,在性能上有显著提升。
  3. 代码简洁:在多个函数需要操作同一个结构体实例时,使用引用可以使代码更加简洁,不必在每个函数调用时都处理所有权的转移和返回。