diff rust/hg-cpython/src/dirstate/dirs_multiset.rs @ 43177:5cb8867c9e2b

rust-cpython: move $leaked struct out of macro It wasn't easy to hack the $leaked struct since errors in macro would generate lots of compile errors. Let's make it a plain struct so we can easily extend it. PyLeakedRef keeps a more generic PyObject instead of the $name struct since it no longer has to call any specific methods implemented by the $name class. $leaked parameter in py_shared_iterator!() is kept for future change.
author Yuya Nishihara <yuya@tcha.org>
date Sun, 08 Sep 2019 20:26:55 +0900
parents 070a38737334
children 1b2200bd06b6
line wrap: on
line diff
--- a/rust/hg-cpython/src/dirstate/dirs_multiset.rs	Sun Sep 15 16:04:45 2019 +0900
+++ b/rust/hg-cpython/src/dirstate/dirs_multiset.rs	Sun Sep 08 20:26:55 2019 +0900
@@ -16,7 +16,8 @@
     Python,
 };
 
-use crate::{dirstate::extract_dirstate, ref_sharing::PySharedRefCell};
+use crate::dirstate::extract_dirstate;
+use crate::ref_sharing::{PyLeakedRef, PySharedRefCell};
 use hg::{
     utils::hg_path::{HgPath, HgPathBuf},
     DirsMultiset, DirsMultisetIter, DirstateMapError, DirstateParseError,
@@ -106,7 +107,7 @@
     }
 });
 
-py_shared_ref!(Dirs, DirsMultiset, inner, DirsMultisetLeakedRef,);
+py_shared_ref!(Dirs, DirsMultiset, inner);
 
 impl Dirs {
     pub fn from_inner(py: Python, d: DirsMultiset) -> PyResult<Self> {
@@ -123,7 +124,7 @@
 
 py_shared_iterator!(
     DirsMultisetKeysIterator,
-    DirsMultisetLeakedRef,
+    PyLeakedRef,
     DirsMultisetIter<'static>,
     Dirs::translate_key,
     Option<PyBytes>