回答編集履歴

1

別回答

2020/04/01 04:25

投稿

namuyan
namuyan

スコア76

test CHANGED
@@ -8,7 +8,7 @@
8
8
 
9
9
  #[pyclass]
10
10
 
11
- stract Inner {
11
+ struct Inner {
12
12
 
13
13
  a: u32
14
14
 
@@ -18,7 +18,7 @@
18
18
 
19
19
  #[pyclass]
20
20
 
21
- stract Outer {
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 obj = self.header.to_object(py);
69
+ let cell: &PyCell<Inner> = self.inner.as_ref(py);
58
70
 
59
- let rc: PyRef<Inner> = obj.extract(py).unwrap();
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
+ メンテナーによる別回答を元に想定された使い方の具体例を載せました。