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
。