我有一个 rust 结构,它使用 pyo3 pyclass 宏来允许在 python 中使用。这适用于简单的结构,但如果我有一个包含来自不同库的类型的结构,它就会变得更加困难。
例子:
use geo::Point;
#[pyclass]
#[derive(Clone, Copy)]
pub struct CellState {
pub id: u32,
pub position: Point<f64>,
pub population: u32,
}
上面我们使用了 rust geo 库中的 Point 类型。编译器提供以下错误:
the trait `pyo3::PyClass` is not implemented for `geo::Point<f64>
如果我然后尝试在 Point 上实现 PyClass:
impl PyClass for Point<f64> {}
它给了我以下编译器错误:
impl doesn't use only types from inside the current crate
关于解决此问题的干净简单方法的任何想法?