3

Python オブジェクトを錆に渡して、Python オブジェクトのフィールドを使用して操作を実行しようとしています。

パイソン:

class myclass(object):
    def __init__(self):
        self.a = 3

b = myclass()
print(b.a)
// 3

さび:

#[pyfn(m, "rust_obj")]
fn rust_obj_py(py: Python, x: PyObject) -> PyResult<PyObject> { 
    let y = x.clone_ref(py);
    y.a += 2;
    Ok(y)
}   

Python から呼び出した場合の期待される結果は次のようになります。

c = rust_obj(b)
print(c.a)
// 5

代わりに、コンパイル時に Rust エラーが発生します。

error[E0609]: no field `a` on type `pyo3::PyObject`
   --> src\lib.rs:926:5
    |
926 |         y.a += 2;
    |           ^ unknown field

オブジェクトのフィールドとメソッドを錆でリストし、フィールドを操作する方法はありますか?

4

1 に答える 1