@@ -59,15 +59,17 @@ macro_rules! glib_shared_wrapper {
59
59
}
60
60
61
61
#[ 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
+
63
65
#[ inline]
64
- unsafe fn ref_( $ref_arg: * mut $ffi_name ) {
66
+ unsafe fn ref_( $ref_arg: * mut Self :: Target ) {
65
67
$ref_expr;
66
68
}
67
69
68
70
#[ inline]
69
71
#[ allow( clippy:: no_effect) ]
70
- unsafe fn unref( $unref_arg: * mut $ffi_name ) {
72
+ unsafe fn unref( $unref_arg: * mut Self :: Target ) {
71
73
$unref_expr;
72
74
}
73
75
}
@@ -436,29 +438,31 @@ macro_rules! glib_shared_wrapper {
436
438
} ;
437
439
}
438
440
439
- pub trait SharedMemoryManager < T > {
441
+ pub trait SharedMemoryManager {
442
+ type Target ;
443
+
440
444
/// # Safety
441
445
///
442
446
/// Callers are responsible for ensuring that a matching call to `unref`
443
447
/// is made at an appropriate time.
444
- unsafe fn ref_ ( ptr : * mut T ) ;
448
+ unsafe fn ref_ ( ptr : * mut Self :: Target ) ;
445
449
446
450
/// # Safety
447
451
///
448
452
/// Callers are responsible for ensuring that a matching call to `ref` was
449
453
/// made before this is called, and that the pointer is not used after the
450
454
/// `unref` call.
451
- unsafe fn unref ( ptr : * mut T ) ;
455
+ unsafe fn unref ( ptr : * mut Self :: Target ) ;
452
456
}
453
457
454
458
/// Encapsulates memory management logic for shared types.
455
459
#[ repr( transparent) ]
456
- pub struct Shared < T , MM : SharedMemoryManager < T > > {
460
+ pub struct Shared < T , MM : SharedMemoryManager < Target = T > > {
457
461
inner : ptr:: NonNull < T > ,
458
462
mm : PhantomData < * const MM > ,
459
463
}
460
464
461
- impl < T , MM : SharedMemoryManager < T > > Drop for Shared < T , MM > {
465
+ impl < T , MM : SharedMemoryManager < Target = T > > Drop for Shared < T , MM > {
462
466
#[ inline]
463
467
fn drop ( & mut self ) {
464
468
unsafe {
@@ -467,7 +471,7 @@ impl<T, MM: SharedMemoryManager<T>> Drop for Shared<T, MM> {
467
471
}
468
472
}
469
473
470
- impl < T , MM : SharedMemoryManager < T > > Clone for Shared < T , MM > {
474
+ impl < T , MM : SharedMemoryManager < Target = T > > Clone for Shared < T , MM > {
471
475
#[ inline]
472
476
fn clone ( & self ) -> Self {
473
477
unsafe {
@@ -480,38 +484,38 @@ impl<T, MM: SharedMemoryManager<T>> Clone for Shared<T, MM> {
480
484
}
481
485
}
482
486
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 > {
484
488
fn fmt ( & self , f : & mut fmt:: Formatter ) -> fmt:: Result {
485
489
f. debug_struct ( "Shared" )
486
490
. field ( "inner" , & self . inner )
487
491
. finish ( )
488
492
}
489
493
}
490
494
491
- impl < T , MM : SharedMemoryManager < T > > PartialOrd for Shared < T , MM > {
495
+ impl < T , MM : SharedMemoryManager < Target = T > > PartialOrd for Shared < T , MM > {
492
496
#[ inline]
493
497
fn partial_cmp ( & self , other : & Self ) -> Option < cmp:: Ordering > {
494
498
self . inner . partial_cmp ( & other. inner )
495
499
}
496
500
}
497
501
498
- impl < T , MM : SharedMemoryManager < T > > Ord for Shared < T , MM > {
502
+ impl < T , MM : SharedMemoryManager < Target = T > > Ord for Shared < T , MM > {
499
503
#[ inline]
500
504
fn cmp ( & self , other : & Self ) -> cmp:: Ordering {
501
505
self . inner . cmp ( & other. inner )
502
506
}
503
507
}
504
508
505
- impl < T , MM : SharedMemoryManager < T > > PartialEq for Shared < T , MM > {
509
+ impl < T , MM : SharedMemoryManager < Target = T > > PartialEq for Shared < T , MM > {
506
510
#[ inline]
507
511
fn eq ( & self , other : & Self ) -> bool {
508
512
self . inner == other. inner
509
513
}
510
514
}
511
515
512
- impl < T , MM : SharedMemoryManager < T > > Eq for Shared < T , MM > { }
516
+ impl < T , MM : SharedMemoryManager < Target = T > > Eq for Shared < T , MM > { }
513
517
514
- impl < T , MM : SharedMemoryManager < T > > Hash for Shared < T , MM > {
518
+ impl < T , MM : SharedMemoryManager < Target = T > > Hash for Shared < T , MM > {
515
519
#[ inline]
516
520
fn hash < H > ( & self , state : & mut H )
517
521
where
@@ -523,7 +527,7 @@ impl<T, MM: SharedMemoryManager<T>> Hash for Shared<T, MM> {
523
527
524
528
impl < ' a , T : ' static , MM > ToGlibPtr < ' a , * mut T > for Shared < T , MM >
525
529
where
526
- MM : SharedMemoryManager < T > + ' static ,
530
+ MM : SharedMemoryManager < Target = T > + ' static ,
527
531
{
528
532
type Storage = PhantomData < & ' a Self > ;
529
533
@@ -541,7 +545,7 @@ where
541
545
}
542
546
}
543
547
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 > {
545
549
#[ inline]
546
550
unsafe fn from_glib_none ( ptr : * mut T ) -> Self {
547
551
debug_assert ! ( !ptr. is_null( ) ) ;
@@ -553,7 +557,7 @@ impl<T: 'static, MM: SharedMemoryManager<T>> FromGlibPtrNone<*mut T> for Shared<
553
557
}
554
558
}
555
559
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 > {
557
561
#[ inline]
558
562
unsafe fn from_glib_none ( ptr : * const T ) -> Self {
559
563
debug_assert ! ( !ptr. is_null( ) ) ;
@@ -565,7 +569,7 @@ impl<T: 'static, MM: SharedMemoryManager<T>> FromGlibPtrNone<*const T> for Share
565
569
}
566
570
}
567
571
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 > {
569
573
#[ inline]
570
574
unsafe fn from_glib_full ( ptr : * mut T ) -> Self {
571
575
debug_assert ! ( !ptr. is_null( ) ) ;
@@ -576,7 +580,7 @@ impl<T: 'static, MM: SharedMemoryManager<T>> FromGlibPtrFull<*mut T> for Shared<
576
580
}
577
581
}
578
582
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 > {
580
584
#[ inline]
581
585
unsafe fn from_glib_borrow ( ptr : * mut T ) -> Borrowed < Self > {
582
586
debug_assert ! ( !ptr. is_null( ) ) ;
0 commit comments