Rust 如何在struct中存储对象及其引用

Rust 如何在struct中存储对象及其引用,rust,Rust,我简化了代码并制作了一个独立的版本,如下所示: 结构TakesRef{ fn新闻字符串参考:&'a str->TakesRef{ 弦:弦, 对象:TakesRef包装器{ 让obj=TakesRef::new&string; 包装器{obj,string} } } 我得到的错误是: 错误[E0515]:无法返回引用函数参数'string'的值` ->src/lib.rs:19:9 | 18 |让obj=TakesRef::new&string; |---'string'是在这里借来的 19 |包

我简化了代码并制作了一个独立的版本,如下所示:

结构TakesRef{ fn新闻字符串参考:&'a str->TakesRef{ 弦:弦, 对象:TakesRef包装器{ 让obj=TakesRef::new&string; 包装器{obj,string} } } 我得到的错误是:

错误[E0515]:无法返回引用函数参数'string'的值` ->src/lib.rs:19:9 | 18 |让obj=TakesRef::new&string; |---'string'是在这里借来的 19 |包装{obj,string} |^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^返回一个引用当前函数所拥有的数据的值 错误[E0505]:无法移出'string',因为它是借用的 ->src/lib.rs:19:24 | 16 | impl{ |-此处定义了生命周期“a”
17 | fn newstring:String->Wrapper这样的自引用结构正是引入std::pin的原因。您可能需要检查和查看文档。

我阅读了对该问题的回答-它们对我没有帮助。在我的特殊情况下,TakesRef不是我所有的代码,而是它的库代码。我需要一个解决方案不要求我改变问题的参数,但在包装层解决它。在我看来,解决方案不是将字符串和obj放在一起。因此,取消包装层并重新考虑API,这是提议的复制目标中的第一个建议之一。我已用我所选择的现有Q&a更新了复制通过搜索Stack Overflow for rental找到。所选的解决了实际问题,因此它们应该是一个很好的起点,尤其是它可以准确地反映您的情况。如副本中所述,固定不能帮助您创建对自身引用严格的指针。它只能帮助正确使用原始指针。