rust/hg-cpython/src/ancestors.rs
changeset 51272 c4cbb515b006
parent 51255 24d3298189d7
equal deleted inserted replaced
51271:eab5b061cd48 51272:c4cbb515b006
   175         let leaked = self.inner(py).borrow();
   175         let leaked = self.inner(py).borrow();
   176         // Safety: we don't leak the "faked" reference out of `UnsafePyLeaked`
   176         // Safety: we don't leak the "faked" reference out of `UnsafePyLeaked`
   177         let inner: &RefCell<VCGLazyAncestors<PySharedIndex>> =
   177         let inner: &RefCell<VCGLazyAncestors<PySharedIndex>> =
   178             &*unsafe { leaked.try_borrow(py)? };
   178             &*unsafe { leaked.try_borrow(py)? };
   179         let inner_mut: &mut VCGLazyAncestors<PySharedIndex> =
   179         let inner_mut: &mut VCGLazyAncestors<PySharedIndex> =
   180             &mut *inner.borrow_mut();
   180             &mut inner.borrow_mut();
   181         inner_mut.contains(rev.0)
   181         inner_mut.contains(rev.0)
   182             .map_err(|e| GraphError::pynew_from_vcsgraph(py, e))
   182             .map_err(|e| GraphError::pynew_from_vcsgraph(py, e))
   183     }
   183     }
   184 
   184 
   185     def __iter__(&self) -> PyResult<AncestorsIterator> {
   185     def __iter__(&self) -> PyResult<AncestorsIterator> {
   333             //    implement it for a Python set rewrapped with the GIL marker
   333             //    implement it for a Python set rewrapped with the GIL marker
   334             let leaked = py_rust_index_to_graph(py,
   334             let leaked = py_rust_index_to_graph(py,
   335                                                self.index(py).clone_ref(py))?;
   335                                                self.index(py).clone_ref(py))?;
   336             // Safety: we don't leak the "faked" reference out of `UnsafePyLeaked`
   336             // Safety: we don't leak the "faked" reference out of `UnsafePyLeaked`
   337             let index = &*unsafe { leaked.try_borrow(py)? };
   337             let index = &*unsafe { leaked.try_borrow(py)? };
   338             rev_pyiter_collect(py, &revs, &*index)?
   338             rev_pyiter_collect(py, &revs, index)?
   339         };
   339         };
   340 
   340 
   341         let mut leaked = self.inner(py).borrow_mut();
   341         let mut leaked = self.inner(py).borrow_mut();
   342         // Safety: we don't leak the "faked" reference out of `UnsafePyLeaked`
   342         // Safety: we don't leak the "faked" reference out of `UnsafePyLeaked`
   343         let inner: &mut CoreMissing<PySharedIndex> =
   343         let inner: &mut CoreMissing<PySharedIndex> =