@@ -313,10 +313,10 @@ impl<'py, T: PyClass> PyRef<'py, T> {
313313 }
314314}
315315
316- impl < ' p , T , U > PyRef < ' p , T >
316+ impl < ' p , T > PyRef < ' p , T >
317317where
318- T : PyClass < BaseType = U > ,
319- U : PyClass ,
318+ T : PyClass ,
319+ T :: BaseType : PyClass ,
320320{
321321 /// Gets a `PyRef<T::BaseType>`.
322322 ///
@@ -363,10 +363,10 @@ where
363363 /// # pyo3::py_run!(py, sub, "assert sub.name() == 'base1 base2 sub'")
364364 /// # });
365365 /// ```
366- pub fn into_super ( self ) -> PyRef < ' p , U > {
366+ pub fn into_super ( self ) -> PyRef < ' p , T :: BaseType > {
367367 let py = self . py ( ) ;
368368 let t_not_frozen = !<T :: Frozen as crate :: pyclass:: boolean_struct:: private:: Boolean >:: VALUE ;
369- let u_frozen = <U :: Frozen as crate :: pyclass:: boolean_struct:: private:: Boolean >:: VALUE ;
369+ let u_frozen = << T :: BaseType as PyClass > :: Frozen as crate :: pyclass:: boolean_struct:: private:: Boolean >:: VALUE ;
370370 if t_not_frozen && u_frozen {
371371 // If `T` is mutable subclass of `U` differ, then it is possible that we need to
372372 // release the borrow count now. (e.g. `U` may have a noop borrow checker so
@@ -443,7 +443,7 @@ where
443443 /// # pyo3::py_run!(py, sub, "assert sub.format_name_lengths() == '9 8'")
444444 /// # });
445445 /// ```
446- pub fn as_super ( & self ) -> & PyRef < ' p , U > {
446+ pub fn as_super ( & self ) -> & PyRef < ' p , T :: BaseType > {
447447 let ptr = NonNull :: from ( & self . inner )
448448 // `Bound<T>` has the same layout as `Bound<T::BaseType>`
449449 . cast :: < Bound < ' p , T :: BaseType > > ( )
@@ -521,20 +521,20 @@ impl<'p, T: PyClass<Frozen = False>> PyRefMut<'p, T> {
521521 }
522522}
523523
524- impl < T , U > AsRef < U > for PyRefMut < ' _ , T >
524+ impl < T > AsRef < T :: BaseType > for PyRefMut < ' _ , T >
525525where
526- T : PyClass < BaseType = U , Frozen = False > ,
527- U : PyClass < Frozen = False > ,
526+ T : PyClass < Frozen = False > ,
527+ T :: BaseType : PyClass < Frozen = False > ,
528528{
529529 fn as_ref ( & self ) -> & T :: BaseType {
530530 PyRefMut :: downgrade ( self ) . as_super ( )
531531 }
532532}
533533
534- impl < T , U > AsMut < U > for PyRefMut < ' _ , T >
534+ impl < T > AsMut < T :: BaseType > for PyRefMut < ' _ , T >
535535where
536- T : PyClass < BaseType = U , Frozen = False > ,
537- U : PyClass < Frozen = False > ,
536+ T : PyClass < Frozen = False > ,
537+ T :: BaseType : PyClass < Frozen = False > ,
538538{
539539 fn as_mut ( & mut self ) -> & mut T :: BaseType {
540540 self . as_super ( )
@@ -587,15 +587,15 @@ impl<'py, T: PyClass<Frozen = False>> PyRefMut<'py, T> {
587587 }
588588}
589589
590- impl < ' p , T , U > PyRefMut < ' p , T >
590+ impl < ' p , T > PyRefMut < ' p , T >
591591where
592- T : PyClass < BaseType = U , Frozen = False > ,
593- U : PyClass < Frozen = False > ,
592+ T : PyClass < Frozen = False > ,
593+ T :: BaseType : PyClass < Frozen = False > ,
594594{
595595 /// Gets a `PyRef<T::BaseType>`.
596596 ///
597597 /// See [`PyRef::into_super`] for more.
598- pub fn into_super ( self ) -> PyRefMut < ' p , U > {
598+ pub fn into_super ( self ) -> PyRefMut < ' p , T :: BaseType > {
599599 let py = self . py ( ) ;
600600 PyRefMut {
601601 inner : unsafe {
@@ -614,7 +614,7 @@ where
614614 /// can also be chained to access the super-superclass (and so on).
615615 ///
616616 /// See [`PyRef::as_super`] for more.
617- pub fn as_super ( & mut self ) -> & mut PyRefMut < ' p , U > {
617+ pub fn as_super ( & mut self ) -> & mut PyRefMut < ' p , T :: BaseType > {
618618 let mut ptr = NonNull :: from ( & mut self . inner )
619619 // `Bound<T>` has the same layout as `Bound<T::BaseType>`
620620 . cast :: < Bound < ' p , T :: BaseType > > ( )
0 commit comments