在 Rust-cpython 中将 Rust 结构体转换为 PyObject

3
我将使用rust-cpython编写Rust函数,以便在Python中调用。我有一个现有的作为输出使用的结构体。如何将其转换为rust-cpython可以理解的PyObject?
我的结构体如下:
struct Block {
    start: i32,
    stop: i32,
}
1个回答

4

我的编译错误提示我需要在我的结构体上实现ToPyObject trait。 为了将我的结构体表示为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
    }
}

这有点像一个hack,但它允许我使用命名字段作为键传递数据。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接