Mercurial > hg
changeset 43429:75b4eb98ad97
rust-cpython: remove useless PyRefMut wrapper
author | Yuya Nishihara <yuya@tcha.org> |
---|---|
date | Sat, 05 Oct 2019 09:01:25 -0400 |
parents | 6c0e47874217 |
children | 8418b77132c1 |
files | rust/hg-cpython/src/ref_sharing.rs |
diffstat | 1 files changed, 4 insertions(+), 36 deletions(-) [+] |
line wrap: on
line diff
--- a/rust/hg-cpython/src/ref_sharing.rs Sat Oct 05 08:59:09 2019 -0400 +++ b/rust/hg-cpython/src/ref_sharing.rs Sat Oct 05 09:01:25 2019 -0400 @@ -61,14 +61,14 @@ &'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 @@ // 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 @@ 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 @@ } } -/// 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. ///