回答編集履歴
1
別回答
test
CHANGED
@@ -8,7 +8,7 @@
|
|
8
8
|
|
9
9
|
#[pyclass]
|
10
10
|
|
11
|
-
str
|
11
|
+
struct Inner {
|
12
12
|
|
13
13
|
a: u32
|
14
14
|
|
@@ -18,7 +18,7 @@
|
|
18
18
|
|
19
19
|
#[pyclass]
|
20
20
|
|
21
|
-
str
|
21
|
+
struct Outer {
|
22
22
|
|
23
23
|
inner: Py<Inner>
|
24
24
|
|
@@ -52,11 +52,23 @@
|
|
52
52
|
|
53
53
|
|
54
54
|
|
55
|
+
//fn get(&self, py: Python) -> u32 {
|
56
|
+
|
57
|
+
// let obj = self.inner.to_object(py);
|
58
|
+
|
59
|
+
// let rc: PyRef<Inner> = obj.extract(py).unwrap();
|
60
|
+
|
61
|
+
// rc.a
|
62
|
+
|
63
|
+
//}
|
64
|
+
|
65
|
+
|
66
|
+
|
55
67
|
fn get(&self, py: Python) -> u32 {
|
56
68
|
|
57
|
-
let
|
69
|
+
let cell: &PyCell<Inner> = self.inner.as_ref(py);
|
58
70
|
|
59
|
-
let rc: PyRef<Inner> = o
|
71
|
+
let rc: PyRef<Inner> = cell.borrow();
|
60
72
|
|
61
73
|
rc.a
|
62
74
|
|
@@ -67,3 +79,11 @@
|
|
67
79
|
```
|
68
80
|
|
69
81
|
`&PyCell<Inner>`➡`Py<Inner>`➡`PyObject`➡`PyRef<Inner>`or`PyRefMut<Inner>`で操作?何かもっと良い方法があれば回答の方をよろしくお願いします。
|
82
|
+
|
83
|
+
|
84
|
+
|
85
|
+
追記 4/1
|
86
|
+
|
87
|
+
---
|
88
|
+
|
89
|
+
メンテナーによる別回答を元に想定された使い方の具体例を載せました。
|