我正在使用rust-cpython来编写可在Python中调用的Rust函数。
我有一个用作输出的现有结构。如何将其转换为rust-cpython可以理解的PyObject?
我的结构看起来像这样:
struct Block {
start: i32,
stop: i32,
}
我的编译错误说我需要在我的struct上实现ToPyObject特性。为了在一个PyObject类型中表示我的结构,我决定使用PyDict。
我看看rust-cpython是如何为HashMap做的,我只是把它复制过来。
impl ToPyObject for Block {
type ObjectType = PyDict;
fn to_py_object(&self, py: Python) -> PyDict {
let dict = PyDict::new(py);
dict.set_item(py, "start", self.start).unwrap();
dict.set_item(py, "stop", self.stop).unwrap();
dict
}
}
这是一种破解,但它允许我传递带有命名字段的数据作为键。