我在理解如何创建一个可以“返回”给调用者的字符串而不违反生命周期方面遇到了麻烦。
我有一个简单的函数类型
pub extern fn get_string(file: &mut &mut String) -> i32
它应该创建一个字符串(以正确的方式分配),并通过file
将其传递回调用者。我知道这是一个非常“C”的事情,Rust可以返回字符串,但这就是我在这里需要做的。
我需要一些帮助。我试过:
pub extern fn get_string(file: &mut &mut String) -> i32 {
let my_str:String = "String passed in Rust.\n".to_owned();
local_file = &mut &mut my_str_ptr;
return 0;
}
但显然my_str
是局部的,在函数结束后将无法生存。如何正确转移所有权?
在解决方案中,我可以根据自己的需要分配字符串(希望使用rust的String
),但之后我确实需要通过指针传递引用。
1条答案
按热度按时间qlzsbp2j1#
我会这样做,但我不确定这样的赋值给
&mut &mut String
的意图。如果
file
是main()
中的&mut &mut s
,则*file
是&mut s
(i.即r
)且**file
为s
。