@@ -52,29 +52,29 @@ __inner_extern_class!(
5252 // `T: PartialEq` bound correct because `NSArray` does deep (instead of
5353 // shallow) equality comparisons.
5454 #[ derive( PartialEq , Eq , Hash ) ]
55- pub struct NSArray <T : Message , O : Ownership = Shared > {
55+ pub struct NSArray <T : ? Sized + Message , O : Ownership = Shared > {
5656 item: PhantomData <Id <T , O >>,
5757 notunwindsafe: PhantomData <& ' static mut ( ) >,
5858 }
5959
60- unsafe impl <T : Message , O : Ownership > ClassType for NSArray <T , O > {
60+ unsafe impl <T : ? Sized + Message , O : Ownership > ClassType for NSArray <T , O > {
6161 type Super = NSObject ;
6262 }
6363) ;
6464
6565// SAFETY: Same as Id<T, O> (which is what NSArray effectively stores).
66- unsafe impl < T : Message + Sync + Send > Sync for NSArray < T , Shared > { }
67- unsafe impl < T : Message + Sync + Send > Send for NSArray < T , Shared > { }
68- unsafe impl < T : Message + Sync > Sync for NSArray < T , Owned > { }
69- unsafe impl < T : Message + Send > Send for NSArray < T , Owned > { }
66+ unsafe impl < T : ? Sized + Message + Sync + Send > Sync for NSArray < T , Shared > { }
67+ unsafe impl < T : ? Sized + Message + Sync + Send > Send for NSArray < T , Shared > { }
68+ unsafe impl < T : ? Sized + Message + Sync > Sync for NSArray < T , Owned > { }
69+ unsafe impl < T : ? Sized + Message + Send > Send for NSArray < T , Owned > { }
7070
7171// Also same as Id<T, O>
72- impl < T : Message + RefUnwindSafe , O : Ownership > RefUnwindSafe for NSArray < T , O > { }
73- impl < T : Message + RefUnwindSafe > UnwindSafe for NSArray < T , Shared > { }
74- impl < T : Message + UnwindSafe > UnwindSafe for NSArray < T , Owned > { }
72+ impl < T : ? Sized + Message + RefUnwindSafe , O : Ownership > RefUnwindSafe for NSArray < T , O > { }
73+ impl < T : ? Sized + Message + RefUnwindSafe > UnwindSafe for NSArray < T , Shared > { }
74+ impl < T : ? Sized + Message + UnwindSafe > UnwindSafe for NSArray < T , Owned > { }
7575
7676#[ track_caller]
77- pub ( crate ) unsafe fn with_objects < T : Message + ? Sized , R : Message , O : Ownership > (
77+ pub ( crate ) unsafe fn with_objects < T : ? Sized + Message , R : ? Sized + Message , O : Ownership > (
7878 cls : & Class ,
7979 objects : & [ & T ] ,
8080) -> Id < R , O > {
@@ -89,7 +89,7 @@ pub(crate) unsafe fn with_objects<T: Message + ?Sized, R: Message, O: Ownership>
8989
9090extern_methods ! (
9191 /// Generic creation methods.
92- unsafe impl <T : Message , O : Ownership > NSArray <T , O > {
92+ unsafe impl <T : ? Sized + Message , O : Ownership > NSArray <T , O > {
9393 /// Get an empty array.
9494 pub fn new( ) -> Id <Self , Shared > {
9595 // SAFETY:
@@ -120,7 +120,7 @@ extern_methods!(
120120 }
121121
122122 /// Creation methods that produce shared arrays.
123- unsafe impl <T : Message > NSArray <T , Shared > {
123+ unsafe impl <T : ? Sized + Message > NSArray <T , Shared > {
124124 pub fn from_slice( slice: & [ Id <T , Shared >] ) -> Id <Self , Shared > {
125125 // SAFETY: Taking `&T` would not be sound, since the `&T` could come
126126 // from an `Id<T, Owned>` that would now no longer be owned!
@@ -133,7 +133,7 @@ extern_methods!(
133133 }
134134
135135 /// Generic accessor methods.
136- unsafe impl <T : Message , O : Ownership > NSArray <T , O > {
136+ unsafe impl <T : ? Sized + Message , O : Ownership > NSArray <T , O > {
137137 #[ doc( alias = "count" ) ]
138138 #[ sel( count) ]
139139 pub fn len( & self ) -> usize ;
@@ -200,7 +200,7 @@ extern_methods!(
200200 }
201201
202202 /// Accessor methods that work on shared arrays.
203- unsafe impl <T : Message > NSArray <T , Shared > {
203+ unsafe impl <T : ? Sized + Message > NSArray <T , Shared > {
204204 #[ doc( alias = "objectAtIndex:" ) ]
205205 pub fn get_retained( & self , index: usize ) -> Id <T , Shared > {
206206 let obj = self . get( index) . unwrap( ) ;
@@ -217,7 +217,7 @@ extern_methods!(
217217 }
218218
219219 /// Accessor methods that work on owned arrays.
220- unsafe impl <T : Message > NSArray <T , Owned > {
220+ unsafe impl <T : ? Sized + Message > NSArray <T , Owned > {
221221 #[ doc( alias = "objectAtIndex:" ) ]
222222 pub fn get_mut( & mut self , index: usize ) -> Option <& mut T > {
223223 // TODO: Replace this check with catching the thrown NSRangeException
@@ -242,28 +242,28 @@ extern_methods!(
242242/// This is implemented as a shallow copy.
243243///
244244/// As such, it is only possible when the array's contents are `Shared`.
245- unsafe impl < T : Message > NSCopying for NSArray < T , Shared > {
245+ unsafe impl < T : ? Sized + Message > NSCopying for NSArray < T , Shared > {
246246 type Ownership = Shared ;
247247 type Output = NSArray < T , Shared > ;
248248}
249249
250250/// This is implemented as a shallow copy.
251- unsafe impl < T : Message > NSMutableCopying for NSArray < T , Shared > {
251+ unsafe impl < T : ? Sized + Message > NSMutableCopying for NSArray < T , Shared > {
252252 type Output = NSMutableArray < T , Shared > ;
253253}
254254
255- impl < T : Message > alloc:: borrow:: ToOwned for NSArray < T , Shared > {
255+ impl < T : ? Sized + Message > alloc:: borrow:: ToOwned for NSArray < T , Shared > {
256256 type Owned = Id < NSArray < T , Shared > , Shared > ;
257257 fn to_owned ( & self ) -> Self :: Owned {
258258 self . copy ( )
259259 }
260260}
261261
262- unsafe impl < T : Message , O : Ownership > NSFastEnumeration for NSArray < T , O > {
262+ unsafe impl < T : ? Sized + Message , O : Ownership > NSFastEnumeration for NSArray < T , O > {
263263 type Item = T ;
264264}
265265
266- impl < ' a , T : Message , O : Ownership > IntoIterator for & ' a NSArray < T , O > {
266+ impl < ' a , T : ? Sized + Message , O : Ownership > IntoIterator for & ' a NSArray < T , O > {
267267 type Item = & ' a T ;
268268 type IntoIter = NSFastEnumerator < ' a , NSArray < T , O > > ;
269269
@@ -272,21 +272,21 @@ impl<'a, T: Message, O: Ownership> IntoIterator for &'a NSArray<T, O> {
272272 }
273273}
274274
275- impl < T : Message , O : Ownership > Index < usize > for NSArray < T , O > {
275+ impl < T : ? Sized + Message , O : Ownership > Index < usize > for NSArray < T , O > {
276276 type Output = T ;
277277
278278 fn index ( & self , index : usize ) -> & T {
279279 self . get ( index) . unwrap ( )
280280 }
281281}
282282
283- impl < T : Message > IndexMut < usize > for NSArray < T , Owned > {
283+ impl < T : ? Sized + Message > IndexMut < usize > for NSArray < T , Owned > {
284284 fn index_mut ( & mut self , index : usize ) -> & mut T {
285285 self . get_mut ( index) . unwrap ( )
286286 }
287287}
288288
289- impl < T : Message , O : Ownership > DefaultId for NSArray < T , O > {
289+ impl < T : ? Sized + Message , O : Ownership > DefaultId for NSArray < T , O > {
290290 type Ownership = Shared ;
291291
292292 #[ inline]
@@ -295,7 +295,7 @@ impl<T: Message, O: Ownership> DefaultId for NSArray<T, O> {
295295 }
296296}
297297
298- impl < T : fmt:: Debug + Message , O : Ownership > fmt:: Debug for NSArray < T , O > {
298+ impl < T : ? Sized + fmt:: Debug + Message , O : Ownership > fmt:: Debug for NSArray < T , O > {
299299 #[ inline]
300300 fn fmt ( & self , f : & mut fmt:: Formatter < ' _ > ) -> fmt:: Result {
301301 f. debug_list ( ) . entries ( self . iter_fast ( ) ) . finish ( )
0 commit comments