如何使用&;管理内存;str和String、本机类型和PyResult<;T>;将值从Rust传递到Python时?
使用PyO3,我能够将如何使用&;管理内存;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’,) >>>测试字符串(),类型(测试字符串())
&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在必要时释放它们
如果我需要做更多的工作,我是否也需要对其他方法做同样的工作,例如当我创建一个Ruststruct
时
#[pyfunction]
fn新事物(py:Python)->事物{
事情{foo:1,bar:true}
}