[PATCH 8 of 9] rust-cpython: remove useless PyRefMut wrapper

Yuya Nishihara yuya at tcha.org
Sat Oct 19 06:07:25 EDT 2019


# HG changeset patch
# User Yuya Nishihara <yuya at tcha.org>
# Date 1570280485 14400
#      Sat Oct 05 09:01:25 2019 -0400
# Node ID e325eea5dc005c8032cc577f97fcfc11a8e4b86e
# Parent  80179a0d5152dd7ca90227ba5218c55795f1b647
rust-cpython: remove useless PyRefMut wrapper

diff --git a/rust/hg-cpython/src/ref_sharing.rs b/rust/hg-cpython/src/ref_sharing.rs
--- a/rust/hg-cpython/src/ref_sharing.rs
+++ b/rust/hg-cpython/src/ref_sharing.rs
@@ -61,14 +61,14 @@ impl PySharedState {
         &'a self,
         py: Python<'a>,
         pyrefmut: RefMut<'a, T>,
-    ) -> PyResult<PyRefMut<'a, T>> {
+    ) -> PyResult<RefMut<'a, T>> {
         match self.current_borrow_count(py) {
             0 => {
                 // Note that this wraps around to the same value if mutably
                 // borrowed more than usize::MAX times, which wouldn't happen
                 // in practice.
                 self.generation.fetch_add(1, Ordering::Relaxed);
-                Ok(PyRefMut::new(py, pyrefmut, self))
+                Ok(pyrefmut)
             }
             _ => Err(AlreadyBorrowed::new(
                 py,
@@ -170,7 +170,7 @@ impl<T> PySharedRefCell<T> {
     // inner.try_borrow_mut(). The current implementation panics if
     // self.inner has been borrowed, but returns error if py_shared_state
     // refuses to borrow.
-    fn borrow_mut<'a>(&'a self, py: Python<'a>) -> PyResult<PyRefMut<'a, T>> {
+    fn borrow_mut<'a>(&'a self, py: Python<'a>) -> PyResult<RefMut<'a, T>> {
         self.py_shared_state.borrow_mut(py, self.inner.borrow_mut())
     }
 }
@@ -199,7 +199,7 @@ impl<'a, T> PySharedRef<'a, T> {
         self.data.borrow(self.py)
     }
 
-    pub fn borrow_mut(&self) -> PyResult<PyRefMut<'a, T>> {
+    pub fn borrow_mut(&self) -> PyResult<RefMut<'a, T>> {
         self.data.borrow_mut(self.py)
     }
 
@@ -226,38 +226,6 @@ impl<'a, T> PySharedRef<'a, T> {
     }
 }
 
-/// Holds a mutable reference to data shared between Python and Rust.
-pub struct PyRefMut<'a, T> {
-    inner: RefMut<'a, T>,
-}
-
-impl<'a, T> PyRefMut<'a, T> {
-    // Must be constructed by PySharedState after checking its leak_count.
-    // Otherwise, drop() would incorrectly update the state.
-    fn new(
-        _py: Python<'a>,
-        inner: RefMut<'a, T>,
-        _py_shared_state: &'a PySharedState,
-    ) -> Self {
-        Self {
-            inner,
-        }
-    }
-}
-
-impl<'a, T> std::ops::Deref for PyRefMut<'a, T> {
-    type Target = RefMut<'a, T>;
-
-    fn deref(&self) -> &Self::Target {
-        &self.inner
-    }
-}
-impl<'a, T> std::ops::DerefMut for PyRefMut<'a, T> {
-    fn deref_mut(&mut self) -> &mut Self::Target {
-        &mut self.inner
-    }
-}
-
 /// Allows a `py_class!` generated struct to share references to one of its
 /// data members with Python.
 ///


More information about the Mercurial-devel mailing list