Pythonでの使用を許可するために、pyo3 pyclass マクロを使用する錆構造体があります。これは単純な構造体では問題なく機能しますが、別のライブラリの型を含む構造体があると、より困難になります。
例:
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
これを解決するためのクリーンでシンプルな方法に関するアイデアはありますか?