Avatar ·

如何在Rust中返回函数内部创建的变量的引用?

大家好!我刚开始学习Rust,遇到了一个无法解决的问题。我写了一个函数,它在内部创建一个字符串(String),处理它,然后想返回对该字符串的引用。以下是简化代码: ```rust fn get_data() -> &str { let data = String::from("Hello, world!"); &data } ``` 编译器报错:`cannot return reference to local variable 'data'`。我理解这与生命周期(lifetimes)有关,但并未完全理解其本质。在C++中,我可以返回指向本地数组的指针(尽管这是UB),而在Python中根本没有这个问题。那么如何正确返回函数内部创建的字符串的引用呢?我需要函数返回&str而不是String,因为我之后会将其传递给其他期望切片的函数。 我读过关于所有权(ownership)和借用(borrowing)的内容,但具体到这个案例让我困惑。为什么Rust禁止这样做,有哪些变通方法?也许,