rust/hg-cpython/src/dirstate/dirs_multiset.rs
changeset 43285 ffc1fbd7d1f5
parent 43284 ce6dd1cee4c8
child 43286 f8c114f20d2d
equal deleted inserted replaced
43284:ce6dd1cee4c8 43285:ffc1fbd7d1f5
    90                     }
    90                     }
    91                 }
    91                 }
    92             })
    92             })
    93     }
    93     }
    94     def __iter__(&self) -> PyResult<DirsMultisetKeysIterator> {
    94     def __iter__(&self) -> PyResult<DirsMultisetKeysIterator> {
    95         let mut leak_handle =
    95         let leaked_ref = self.inner_shared(py).leak_immutable()?;
    96             unsafe { self.inner_shared(py).leak_immutable()? };
       
    97         let leaked_ref = leak_handle.data.take().unwrap();
       
    98         DirsMultisetKeysIterator::from_inner(
    96         DirsMultisetKeysIterator::from_inner(
    99             py,
    97             py,
   100             leak_handle,
    98             unsafe { leaked_ref.map(py, |o| o.iter()) },
   101             leaked_ref.iter(),
       
   102         )
    99         )
   103     }
   100     }
   104 
   101 
   105     def __contains__(&self, item: PyObject) -> PyResult<bool> {
   102     def __contains__(&self, item: PyObject) -> PyResult<bool> {
   106         Ok(self.inner(py).borrow().contains(HgPath::new(
   103         Ok(self.inner(py).borrow().contains(HgPath::new(
   124     }
   121     }
   125 }
   122 }
   126 
   123 
   127 py_shared_iterator!(
   124 py_shared_iterator!(
   128     DirsMultisetKeysIterator,
   125     DirsMultisetKeysIterator,
   129     PyLeakedRef<&'static DirsMultiset>,
   126     PyLeakedRef<DirsMultisetIter<'static>>,
   130     DirsMultisetIter<'static>,
       
   131     Dirs::translate_key,
   127     Dirs::translate_key,
   132     Option<PyBytes>
   128     Option<PyBytes>
   133 );
   129 );