面试题答案
一键面试fn process_string(slice: &str) -> String {
// 将字符串切片转换为String类型,这里没有所有权转移,只是复制了内容
let new_string = slice.to_string();
// 这里可以对new_string进行进一步处理,比如修改字符串内容
new_string
}
所有权转移与引用机制解释
- 参数:函数接收一个字符串切片
&str
作为参数,这是一个引用。引用意味着函数不会获取参数的所有权,而是借用其数据。这样可以避免在函数调用时发生不必要的所有权转移,提高效率。这里slice
只是一个指向原始字符串数据的指针,它并没有获取所有权。 - 返回值:函数返回一个新的
String
类型。在process_string
函数内部,通过to_string
方法将字符串切片转换为String
类型,新创建的String
拥有其内部数据的所有权。当函数返回时,这个新的String
的所有权被转移给调用者。