changeset 42890:74d67c645278

rust-cpython: remove Option<_> from interface of py_shared_iterator It's the implementation detail of the py_shared_iterator that the leaked reference is kept in Option<_> so that it can be dropped early.
author Yuya Nishihara <yuya@tcha.org>
date Sun, 08 Sep 2019 13:08:59 +0900
parents ea91a126c803
children 5ccc08d02280
files rust/hg-cpython/src/dirstate/dirstate_map.rs rust/hg-cpython/src/ref_sharing.rs
diffstat 2 files changed, 7 insertions(+), 7 deletions(-) [+]
line wrap: on
line diff
--- a/rust/hg-cpython/src/dirstate/dirstate_map.rs	Sun Sep 08 12:26:12 2019 +0900
+++ b/rust/hg-cpython/src/dirstate/dirstate_map.rs	Sun Sep 08 13:08:59 2019 +0900
@@ -323,7 +323,7 @@
         let (leak_handle, leaked_ref) = unsafe { self.leak_immutable(py)? };
         DirstateMapKeysIterator::from_inner(
             py,
-            Some(leak_handle),
+            leak_handle,
             leaked_ref.iter(),
         )
     }
@@ -332,7 +332,7 @@
         let (leak_handle, leaked_ref) = unsafe { self.leak_immutable(py)? };
         DirstateMapItemsIterator::from_inner(
             py,
-            Some(leak_handle),
+            leak_handle,
             leaked_ref.iter(),
         )
     }
@@ -341,7 +341,7 @@
         let (leak_handle, leaked_ref) = unsafe { self.leak_immutable(py)? };
         DirstateMapKeysIterator::from_inner(
             py,
-            Some(leak_handle),
+            leak_handle,
             leaked_ref.iter(),
         )
     }
@@ -438,7 +438,7 @@
         let (leak_handle, leaked_ref) = unsafe { self.leak_immutable(py)? };
         CopyMapKeysIterator::from_inner(
             py,
-            Some(leak_handle),
+            leak_handle,
             leaked_ref.copy_map.iter(),
         )
     }
@@ -447,7 +447,7 @@
         let (leak_handle, leaked_ref) = unsafe { self.leak_immutable(py)? };
         CopyMapItemsIterator::from_inner(
             py,
-            Some(leak_handle),
+            leak_handle,
             leaked_ref.copy_map.iter(),
         )
     }
--- a/rust/hg-cpython/src/ref_sharing.rs	Sun Sep 08 12:26:12 2019 +0900
+++ b/rust/hg-cpython/src/ref_sharing.rs	Sun Sep 08 13:08:59 2019 +0900
@@ -378,12 +378,12 @@
         impl $name {
             pub fn from_inner(
                 py: Python,
-                leaked: Option<$leaked>,
+                leaked: $leaked,
                 it: $iterator_type
             ) -> PyResult<Self> {
                 Self::create_instance(
                     py,
-                    RefCell::new(leaked),
+                    RefCell::new(Some(leaked)),
                     RefCell::new(it)
                 )
             }