Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/rust/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用&;管理内存;str和String、本机类型和PyResult<;T>;将值从Rust传递到Python时?_Rust_Pyo3 - Fatal编程技术网

如何使用&;管理内存;str和String、本机类型和PyResult<;T>;将值从Rust传递到Python时?

如何使用&;管理内存;str和String、本机类型和PyResult<;T>;将值从Rust传递到Python时?,rust,pyo3,Rust,Pyo3,使用PyO3,我能够将&str和String类型从Rust传递到Python: #[pyfunction] fn test_str(py:Python)->&str{ “这是一个&str” } #[pyfunction] fn测试字符串(py:Python)->string{ “这是一个字符串”。to_String() } Python可以称之为fine: >>test\u str(),类型(test\u str()) (‘这是一个&str’,) >>>测试字符串(),类型(测试字符串())

使用PyO3,我能够将
&str
String
类型从Rust传递到Python:

#[pyfunction]
fn test_str(py:Python)->&str{
“这是一个&str”
}
#[pyfunction]
fn测试字符串(py:Python)->string{
“这是一个字符串”。to_String()
}
Python可以称之为fine:

>>test\u str(),类型(test\u str())
(‘这是一个&str’,)
>>>测试字符串(),类型(测试字符串())
(‘这是一个字符串’,)
我还可以用相同的行为将它们包装为
PyResult
PyResult

如果有的话,我需要知道什么?我需要采取其他步骤来确保内存在这里得到正确处理?如果我没有试图维护对相同字符串的引用,我是否需要告诉GIL有关
字符串的信息,以便GIL在必要时释放它们

如果我需要做更多的工作,我是否也需要对其他方法做同样的工作,例如当我创建一个Rust
struct

#[pyfunction]
fn新事物(py:Python)->事物{
事情{foo:1,bar:true}
}