使用PyAny将Rust创建的对象从Python传递回Rust
我在Rust中有一个struct+实现,返回Python。此对象也可以传递回Rust进行进一步的工作。(在我的实际代码中,我使用的是使用PyAny将Rust创建的对象从Python传递回Rust,rust,pyo3,Rust,Pyo3,我在Rust中有一个struct+实现,返回Python。此对象也可以传递回Rust进行进一步的工作。(在我的实际代码中,我使用的是HashMap,但即使直接使用struct似乎也会导致相同的问题,因此为了简单起见,我的示例使用struct Person) 似乎我需要为Person执行从PyObject执行,但Rust找不到 #[pyclass] 结构人{ 名称:String, 年龄:u8, 高度_cm:f32, } impl pyo3::FromPYObjects此方法似乎不存在于任何发布版本
HashMap
,但即使直接使用struct似乎也会导致相同的问题,因此为了简单起见,我的示例使用struct Person
)
似乎我需要为Person执行从PyObject执行,但Rust找不到
#[pyclass]
结构人{
名称:String,
年龄:u8,
高度_cm:f32,
}
impl pyo3::FromPYObjects此方法似乎不存在于任何发布版本中。您正在查看代码的主分支,但可能正在使用已发布的版本。我建议您查看您实际使用的代码版本,或者查看文档。导入downcast
的PR在四天前被合并:Arg,您是对的。(当前版本)具有downcast\u ref
和downcast\u mut
。使用它,我可以得到一个引用,如let x:&Person=any.downcast_ref().unwrap()代码>。我假设我也可以以某种方式再次获得所有权,但这可能是不可能的(因为Python也有一个引用),所以我显然必须创建一个新的值。