Python から、Python オブジェクトを返す Rust 関数を呼び出したいと思います。
my_rust_module.my_function() # => <object>
クラスのインスタンス化に関する PYO3 ガイドでは、このようなオブジェクトを としてインスタンス化する方法が説明されているため、この関数を作成する方法はわかりPyRefませんが、 からそのような参照を返す方法がわかりませんpyfunction。
これは私がしようとしているものです:
#[pyfunction]
fn my_function(py: Python) -> PyRef {
let gil = Python::acquire_gil();
let py = gil.python();
PyRef::new(py, MyStruct { }).unwrap()
}
ただし、PyRef有効な戻り値の型ではないようです (コンパイラーは「型引数の数が間違っています: 期待される 1、見つかった 0」)、および aPyRefを a などの返される可能性のあるものに変換する方法がわかりませんPyObject。