@@ -315,10 +315,10 @@ impl<'py, T: PyClass> PyRef<'py, T> {
315315 }
316316}
317317
318- impl < ' p , T , U > PyRef < ' p , T >
318+ impl < ' p , T > PyRef < ' p , T >
319319where
320- T : PyClass < BaseType = U > ,
321- U : PyClass ,
320+ T : PyClass ,
321+ T :: BaseType : PyClass ,
322322{
323323 /// Gets a `PyRef<T::BaseType>`.
324324 ///
@@ -365,10 +365,10 @@ where
365365 /// # pyo3::py_run!(py, sub, "assert sub.name() == 'base1 base2 sub'")
366366 /// # });
367367 /// ```
368- pub fn into_super ( self ) -> PyRef < ' p , U > {
368+ pub fn into_super ( self ) -> PyRef < ' p , T :: BaseType > {
369369 let py = self . py ( ) ;
370370 let t_not_frozen = !<T :: Frozen as crate :: pyclass:: boolean_struct:: private:: Boolean >:: VALUE ;
371- let u_frozen = <U :: Frozen as crate :: pyclass:: boolean_struct:: private:: Boolean >:: VALUE ;
371+ let u_frozen = << T :: BaseType as PyClass > :: Frozen as crate :: pyclass:: boolean_struct:: private:: Boolean >:: VALUE ;
372372 if t_not_frozen && u_frozen {
373373 // If `T` is mutable subclass of `U` differ, then it is possible that we need to
374374 // release the borrow count now. (e.g. `U` may have a noop borrow checker so
@@ -445,7 +445,7 @@ where
445445 /// # pyo3::py_run!(py, sub, "assert sub.format_name_lengths() == '9 8'")
446446 /// # });
447447 /// ```
448- pub fn as_super ( & self ) -> & PyRef < ' p , U > {
448+ pub fn as_super ( & self ) -> & PyRef < ' p , T :: BaseType > {
449449 let ptr = NonNull :: from ( & self . inner )
450450 // `Bound<T>` has the same layout as `Bound<T::BaseType>`
451451 . cast :: < Bound < ' p , T :: BaseType > > ( )
@@ -523,20 +523,20 @@ impl<'p, T: PyClass<Frozen = False>> PyRefMut<'p, T> {
523523 }
524524}
525525
526- impl < T , U > AsRef < U > for PyRefMut < ' _ , T >
526+ impl < T > AsRef < T :: BaseType > for PyRefMut < ' _ , T >
527527where
528- T : PyClass < BaseType = U , Frozen = False > ,
529- U : PyClass < Frozen = False > ,
528+ T : PyClass < Frozen = False > ,
529+ T :: BaseType : PyClass < Frozen = False > ,
530530{
531531 fn as_ref ( & self ) -> & T :: BaseType {
532532 PyRefMut :: downgrade ( self ) . as_super ( )
533533 }
534534}
535535
536- impl < T , U > AsMut < U > for PyRefMut < ' _ , T >
536+ impl < T > AsMut < T :: BaseType > for PyRefMut < ' _ , T >
537537where
538- T : PyClass < BaseType = U , Frozen = False > ,
539- U : PyClass < Frozen = False > ,
538+ T : PyClass < Frozen = False > ,
539+ T :: BaseType : PyClass < Frozen = False > ,
540540{
541541 fn as_mut ( & mut self ) -> & mut T :: BaseType {
542542 self . as_super ( )
@@ -589,15 +589,15 @@ impl<'py, T: PyClass<Frozen = False>> PyRefMut<'py, T> {
589589 }
590590}
591591
592- impl < ' p , T , U > PyRefMut < ' p , T >
592+ impl < ' p , T > PyRefMut < ' p , T >
593593where
594- T : PyClass < BaseType = U , Frozen = False > ,
595- U : PyClass < Frozen = False > ,
594+ T : PyClass < Frozen = False > ,
595+ T :: BaseType : PyClass < Frozen = False > ,
596596{
597597 /// Gets a `PyRef<T::BaseType>`.
598598 ///
599599 /// See [`PyRef::into_super`] for more.
600- pub fn into_super ( self ) -> PyRefMut < ' p , U > {
600+ pub fn into_super ( self ) -> PyRefMut < ' p , T :: BaseType > {
601601 let py = self . py ( ) ;
602602 PyRefMut {
603603 inner : unsafe {
@@ -616,7 +616,7 @@ where
616616 /// can also be chained to access the super-superclass (and so on).
617617 ///
618618 /// See [`PyRef::as_super`] for more.
619- pub fn as_super ( & mut self ) -> & mut PyRefMut < ' p , U > {
619+ pub fn as_super ( & mut self ) -> & mut PyRefMut < ' p , T :: BaseType > {
620620 let mut ptr = NonNull :: from ( & mut self . inner )
621621 // `Bound<T>` has the same layout as `Bound<T::BaseType>`
622622 . cast :: < Bound < ' p , T :: BaseType > > ( )
0 commit comments