@@ -59,15 +59,17 @@ macro_rules! glib_shared_wrapper {
5959 }
6060
6161 #[ doc( hidden) ]
62- impl $( <$( $generic $( : $bound $( + $bound2) * ) ?) ,+>) ? $crate:: shared:: SharedMemoryManager <$ffi_name> for $name $( <$( $generic) ,+>) ? {
62+ impl $( <$( $generic $( : $bound $( + $bound2) * ) ?) ,+>) ? $crate:: shared:: SharedMemoryManager for $name $( <$( $generic) ,+>) ? {
63+ type Target = $ffi_name;
64+
6365 #[ inline]
64- unsafe fn ref_( $ref_arg: * mut $ffi_name ) {
66+ unsafe fn ref_( $ref_arg: * mut Self :: Target ) {
6567 $ref_expr;
6668 }
6769
6870 #[ inline]
6971 #[ allow( clippy:: no_effect) ]
70- unsafe fn unref( $unref_arg: * mut $ffi_name ) {
72+ unsafe fn unref( $unref_arg: * mut Self :: Target ) {
7173 $unref_expr;
7274 }
7375 }
@@ -436,29 +438,31 @@ macro_rules! glib_shared_wrapper {
436438 } ;
437439}
438440
439- pub trait SharedMemoryManager < T > {
441+ pub trait SharedMemoryManager {
442+ type Target ;
443+
440444 /// # Safety
441445 ///
442446 /// Callers are responsible for ensuring that a matching call to `unref`
443447 /// is made at an appropriate time.
444- unsafe fn ref_ ( ptr : * mut T ) ;
448+ unsafe fn ref_ ( ptr : * mut Self :: Target ) ;
445449
446450 /// # Safety
447451 ///
448452 /// Callers are responsible for ensuring that a matching call to `ref` was
449453 /// made before this is called, and that the pointer is not used after the
450454 /// `unref` call.
451- unsafe fn unref ( ptr : * mut T ) ;
455+ unsafe fn unref ( ptr : * mut Self :: Target ) ;
452456}
453457
454458/// Encapsulates memory management logic for shared types.
455459#[ repr( transparent) ]
456- pub struct Shared < T , MM : SharedMemoryManager < T > > {
460+ pub struct Shared < T , MM : SharedMemoryManager < Target = T > > {
457461 inner : ptr:: NonNull < T > ,
458462 mm : PhantomData < * const MM > ,
459463}
460464
461- impl < T , MM : SharedMemoryManager < T > > Drop for Shared < T , MM > {
465+ impl < T , MM : SharedMemoryManager < Target = T > > Drop for Shared < T , MM > {
462466 #[ inline]
463467 fn drop ( & mut self ) {
464468 unsafe {
@@ -467,7 +471,7 @@ impl<T, MM: SharedMemoryManager<T>> Drop for Shared<T, MM> {
467471 }
468472}
469473
470- impl < T , MM : SharedMemoryManager < T > > Clone for Shared < T , MM > {
474+ impl < T , MM : SharedMemoryManager < Target = T > > Clone for Shared < T , MM > {
471475 #[ inline]
472476 fn clone ( & self ) -> Self {
473477 unsafe {
@@ -480,38 +484,38 @@ impl<T, MM: SharedMemoryManager<T>> Clone for Shared<T, MM> {
480484 }
481485}
482486
483- impl < T , MM : SharedMemoryManager < T > > fmt:: Debug for Shared < T , MM > {
487+ impl < T , MM : SharedMemoryManager < Target = T > > fmt:: Debug for Shared < T , MM > {
484488 fn fmt ( & self , f : & mut fmt:: Formatter ) -> fmt:: Result {
485489 f. debug_struct ( "Shared" )
486490 . field ( "inner" , & self . inner )
487491 . finish ( )
488492 }
489493}
490494
491- impl < T , MM : SharedMemoryManager < T > > PartialOrd for Shared < T , MM > {
495+ impl < T , MM : SharedMemoryManager < Target = T > > PartialOrd for Shared < T , MM > {
492496 #[ inline]
493497 fn partial_cmp ( & self , other : & Self ) -> Option < cmp:: Ordering > {
494498 self . inner . partial_cmp ( & other. inner )
495499 }
496500}
497501
498- impl < T , MM : SharedMemoryManager < T > > Ord for Shared < T , MM > {
502+ impl < T , MM : SharedMemoryManager < Target = T > > Ord for Shared < T , MM > {
499503 #[ inline]
500504 fn cmp ( & self , other : & Self ) -> cmp:: Ordering {
501505 self . inner . cmp ( & other. inner )
502506 }
503507}
504508
505- impl < T , MM : SharedMemoryManager < T > > PartialEq for Shared < T , MM > {
509+ impl < T , MM : SharedMemoryManager < Target = T > > PartialEq for Shared < T , MM > {
506510 #[ inline]
507511 fn eq ( & self , other : & Self ) -> bool {
508512 self . inner == other. inner
509513 }
510514}
511515
512- impl < T , MM : SharedMemoryManager < T > > Eq for Shared < T , MM > { }
516+ impl < T , MM : SharedMemoryManager < Target = T > > Eq for Shared < T , MM > { }
513517
514- impl < T , MM : SharedMemoryManager < T > > Hash for Shared < T , MM > {
518+ impl < T , MM : SharedMemoryManager < Target = T > > Hash for Shared < T , MM > {
515519 #[ inline]
516520 fn hash < H > ( & self , state : & mut H )
517521 where
@@ -523,7 +527,7 @@ impl<T, MM: SharedMemoryManager<T>> Hash for Shared<T, MM> {
523527
524528impl < ' a , T : ' static , MM > ToGlibPtr < ' a , * mut T > for Shared < T , MM >
525529where
526- MM : SharedMemoryManager < T > + ' static ,
530+ MM : SharedMemoryManager < Target = T > + ' static ,
527531{
528532 type Storage = PhantomData < & ' a Self > ;
529533
@@ -541,7 +545,7 @@ where
541545 }
542546}
543547
544- impl < T : ' static , MM : SharedMemoryManager < T > > FromGlibPtrNone < * mut T > for Shared < T , MM > {
548+ impl < T : ' static , MM : SharedMemoryManager < Target = T > > FromGlibPtrNone < * mut T > for Shared < T , MM > {
545549 #[ inline]
546550 unsafe fn from_glib_none ( ptr : * mut T ) -> Self {
547551 debug_assert ! ( !ptr. is_null( ) ) ;
@@ -553,7 +557,7 @@ impl<T: 'static, MM: SharedMemoryManager<T>> FromGlibPtrNone<*mut T> for Shared<
553557 }
554558}
555559
556- impl < T : ' static , MM : SharedMemoryManager < T > > FromGlibPtrNone < * const T > for Shared < T , MM > {
560+ impl < T : ' static , MM : SharedMemoryManager < Target = T > > FromGlibPtrNone < * const T > for Shared < T , MM > {
557561 #[ inline]
558562 unsafe fn from_glib_none ( ptr : * const T ) -> Self {
559563 debug_assert ! ( !ptr. is_null( ) ) ;
@@ -565,7 +569,7 @@ impl<T: 'static, MM: SharedMemoryManager<T>> FromGlibPtrNone<*const T> for Share
565569 }
566570}
567571
568- impl < T : ' static , MM : SharedMemoryManager < T > > FromGlibPtrFull < * mut T > for Shared < T , MM > {
572+ impl < T : ' static , MM : SharedMemoryManager < Target = T > > FromGlibPtrFull < * mut T > for Shared < T , MM > {
569573 #[ inline]
570574 unsafe fn from_glib_full ( ptr : * mut T ) -> Self {
571575 debug_assert ! ( !ptr. is_null( ) ) ;
@@ -576,7 +580,7 @@ impl<T: 'static, MM: SharedMemoryManager<T>> FromGlibPtrFull<*mut T> for Shared<
576580 }
577581}
578582
579- impl < T : ' static , MM : SharedMemoryManager < T > > FromGlibPtrBorrow < * mut T > for Shared < T , MM > {
583+ impl < T : ' static , MM : SharedMemoryManager < Target = T > > FromGlibPtrBorrow < * mut T > for Shared < T , MM > {
580584 #[ inline]
581585 unsafe fn from_glib_borrow ( ptr : * mut T ) -> Borrowed < Self > {
582586 debug_assert ! ( !ptr. is_null( ) ) ;
0 commit comments