Skip to content

Commit a03e2de

Browse files
committed
Remove default ownership on NSArray and NSDictionary, and rename Own
INSArray::Own -> INSArray::ItemOwnership INSDictionary::Own -> INSDictionary::ValueOwnership Also remove `NSSharedArray` and `NSMutableSharedArray`
1 parent 99988b4 commit a03e2de

File tree

3 files changed

+30
-33
lines changed

3 files changed

+30
-33
lines changed

objc2_foundation/src/array.rs

Lines changed: 21 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -84,7 +84,7 @@ unsafe fn from_refs<A: INSArray>(refs: &[&A::Item]) -> Id<A, A::Ownership> {
8484

8585
pub trait INSArray: INSObject {
8686
type Item: INSObject;
87-
type Own: Ownership;
87+
type ItemOwnership: Ownership;
8888

8989
fn count(&self) -> usize {
9090
unsafe { msg_send![self, count] }
@@ -126,7 +126,7 @@ pub trait INSArray: INSObject {
126126
}
127127
}
128128

129-
fn from_vec(vec: Vec<Id<Self::Item, Self::Own>>) -> Id<Self, Self::Ownership> {
129+
fn from_vec(vec: Vec<Id<Self::Item, Self::ItemOwnership>>) -> Id<Self, Self::Ownership> {
130130
unsafe { from_refs(vec.as_slice_ref()) }
131131
}
132132

@@ -144,7 +144,7 @@ pub trait INSArray: INSObject {
144144
self.objects_in_range(0..self.count())
145145
}
146146

147-
fn into_vec(array: Id<Self, Owned>) -> Vec<Id<Self::Item, Self::Own>> {
147+
fn into_vec(array: Id<Self, Owned>) -> Vec<Id<Self::Item, Self::ItemOwnership>> {
148148
array
149149
.to_vec()
150150
.into_iter()
@@ -154,7 +154,7 @@ pub trait INSArray: INSObject {
154154

155155
fn mut_object_at(&mut self, index: usize) -> &mut Self::Item
156156
where
157-
Self: INSArray<Own = Owned>,
157+
Self: INSArray<ItemOwnership = Owned>,
158158
{
159159
unsafe {
160160
let result: *mut Self::Item = msg_send![self, objectAtIndex: index];
@@ -164,22 +164,22 @@ pub trait INSArray: INSObject {
164164

165165
fn shared_object_at(&self, index: usize) -> Id<Self::Item, Shared>
166166
where
167-
Self: INSArray<Own = Shared>,
167+
Self: INSArray<ItemOwnership = Shared>,
168168
{
169169
let obj = self.object_at(index);
170170
unsafe { Id::retain(obj.into()) }
171171
}
172172

173173
fn from_slice(slice: &[Id<Self::Item, Shared>]) -> Id<Self, Self::Ownership>
174174
where
175-
Self: INSArray<Own = Shared>,
175+
Self: INSArray<ItemOwnership = Shared>,
176176
{
177177
unsafe { from_refs(slice.as_slice_ref()) }
178178
}
179179

180180
fn to_shared_vec(&self) -> Vec<Id<Self::Item, Shared>>
181181
where
182-
Self: INSArray<Own = Shared>,
182+
Self: INSArray<ItemOwnership = Shared>,
183183
{
184184
self.to_vec()
185185
.into_iter()
@@ -188,7 +188,7 @@ pub trait INSArray: INSObject {
188188
}
189189
}
190190

191-
pub struct NSArray<T, O: Ownership = Owned> {
191+
pub struct NSArray<T, O: Ownership> {
192192
item: PhantomData<Id<T, O>>,
193193
}
194194

@@ -204,15 +204,15 @@ impl<T: INSObject, O: Ownership> INSObject for NSArray<T, O> {
204204

205205
impl<T: INSObject, O: Ownership> INSArray for NSArray<T, O> {
206206
type Item = T;
207-
type Own = O;
207+
type ItemOwnership = O;
208208
}
209209

210210
impl<T: INSObject> INSCopying for NSArray<T, Shared> {
211-
type Output = NSSharedArray<T>;
211+
type Output = NSArray<T, Shared>;
212212
}
213213

214214
impl<T: INSObject> INSMutableCopying for NSArray<T, Shared> {
215-
type Output = NSMutableSharedArray<T>;
215+
type Output = NSMutableArray<T, Shared>;
216216
}
217217

218218
impl<T: INSObject, O: Ownership> INSFastEnumeration for NSArray<T, O> {
@@ -227,16 +227,14 @@ impl<T: INSObject, O: Ownership> Index<usize> for NSArray<T, O> {
227227
}
228228
}
229229

230-
pub type NSSharedArray<T> = NSArray<T, Shared>;
231-
232230
pub trait INSMutableArray: INSArray {
233-
fn add_object(&mut self, obj: Id<Self::Item, Self::Own>) {
231+
fn add_object(&mut self, obj: Id<Self::Item, Self::ItemOwnership>) {
234232
unsafe {
235233
let _: () = msg_send![self, addObject: &*obj];
236234
}
237235
}
238236

239-
fn insert_object_at(&mut self, index: usize, obj: Id<Self::Item, Self::Own>) {
237+
fn insert_object_at(&mut self, index: usize, obj: Id<Self::Item, Self::ItemOwnership>) {
240238
unsafe {
241239
let _: () = msg_send![self, insertObject: &*obj, atIndex: index];
242240
}
@@ -245,8 +243,8 @@ pub trait INSMutableArray: INSArray {
245243
fn replace_object_at(
246244
&mut self,
247245
index: usize,
248-
obj: Id<Self::Item, Self::Own>,
249-
) -> Id<Self::Item, Self::Own> {
246+
obj: Id<Self::Item, Self::ItemOwnership>,
247+
) -> Id<Self::Item, Self::ItemOwnership> {
250248
let old_obj = unsafe {
251249
let obj = self.object_at(index);
252250
Id::retain(obj.into())
@@ -261,7 +259,7 @@ pub trait INSMutableArray: INSArray {
261259
old_obj
262260
}
263261

264-
fn remove_object_at(&mut self, index: usize) -> Id<Self::Item, Self::Own> {
262+
fn remove_object_at(&mut self, index: usize) -> Id<Self::Item, Self::ItemOwnership> {
265263
let obj = unsafe {
266264
let obj = self.object_at(index);
267265
Id::retain(obj.into())
@@ -272,7 +270,7 @@ pub trait INSMutableArray: INSArray {
272270
obj
273271
}
274272

275-
fn remove_last_object(&mut self) -> Id<Self::Item, Self::Own> {
273+
fn remove_last_object(&mut self) -> Id<Self::Item, Self::ItemOwnership> {
276274
let obj = self
277275
.last_object()
278276
.map(|obj| unsafe { Id::retain(obj.into()) });
@@ -321,7 +319,7 @@ pub trait INSMutableArray: INSArray {
321319
}
322320
}
323321

324-
pub struct NSMutableArray<T, O: Ownership = Owned> {
322+
pub struct NSMutableArray<T, O: Ownership> {
325323
item: PhantomData<Id<T, O>>,
326324
}
327325

@@ -337,17 +335,17 @@ impl<T: INSObject, O: Ownership> INSObject for NSMutableArray<T, O> {
337335

338336
impl<T: INSObject, O: Ownership> INSArray for NSMutableArray<T, O> {
339337
type Item = T;
340-
type Own = O;
338+
type ItemOwnership = O;
341339
}
342340

343341
impl<T: INSObject, O: Ownership> INSMutableArray for NSMutableArray<T, O> {}
344342

345343
impl<T: INSObject> INSCopying for NSMutableArray<T, Shared> {
346-
type Output = NSSharedArray<T>;
344+
type Output = NSArray<T, Shared>;
347345
}
348346

349347
impl<T: INSObject> INSMutableCopying for NSMutableArray<T, Shared> {
350-
type Output = NSMutableSharedArray<T>;
348+
type Output = NSMutableArray<T, Shared>;
351349
}
352350

353351
impl<T: INSObject, O: Ownership> INSFastEnumeration for NSMutableArray<T, O> {
@@ -362,8 +360,6 @@ impl<T: INSObject, O: Ownership> Index<usize> for NSMutableArray<T, O> {
362360
}
363361
}
364362

365-
pub type NSMutableSharedArray<T> = NSMutableArray<T, Shared>;
366-
367363
#[cfg(test)]
368364
mod tests {
369365
use alloc::vec;

objc2_foundation/src/dictionary.rs

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ use objc2::rc::{Id, Owned, Ownership, Shared, SliceId};
88
use objc2::runtime::Class;
99
use objc2::{class, msg_send};
1010

11-
use super::{INSCopying, INSFastEnumeration, INSObject, NSArray, NSEnumerator, NSSharedArray};
11+
use super::{INSCopying, INSFastEnumeration, INSObject, NSArray, NSEnumerator};
1212

1313
unsafe fn from_refs<D, T>(keys: &[&T], vals: &[&D::Value]) -> Id<D, D::Ownership>
1414
where
@@ -30,7 +30,7 @@ where
3030
pub trait INSDictionary: INSObject {
3131
type Key: INSObject;
3232
type Value: INSObject;
33-
type Own: Ownership;
33+
type ValueOwnership: Ownership;
3434

3535
fn count(&self) -> usize {
3636
unsafe { msg_send![self, count] }
@@ -105,7 +105,7 @@ pub trait INSDictionary: INSObject {
105105
}
106106
}
107107

108-
fn keys_array(&self) -> Id<NSSharedArray<Self::Key>, Shared> {
108+
fn keys_array(&self) -> Id<NSArray<Self::Key, Shared>, Shared> {
109109
unsafe {
110110
let keys = msg_send![self, allKeys];
111111
Id::retain(NonNull::new_unchecked(keys))
@@ -114,15 +114,17 @@ pub trait INSDictionary: INSObject {
114114

115115
fn from_keys_and_objects<T>(
116116
keys: &[&T],
117-
vals: Vec<Id<Self::Value, Self::Own>>,
117+
vals: Vec<Id<Self::Value, Self::ValueOwnership>>,
118118
) -> Id<Self, Self::Ownership>
119119
where
120120
T: INSCopying<Output = Self::Key>,
121121
{
122122
unsafe { from_refs(keys, &vals.as_slice_ref()) }
123123
}
124124

125-
fn into_values_array(dict: Id<Self, Owned>) -> Id<NSArray<Self::Value, Self::Own>, Shared> {
125+
fn into_values_array(
126+
dict: Id<Self, Owned>,
127+
) -> Id<NSArray<Self::Value, Self::ValueOwnership>, Shared> {
126128
unsafe {
127129
let vals = msg_send![dict, allValues];
128130
Id::retain(NonNull::new_unchecked(vals))
@@ -148,7 +150,7 @@ impl<K: INSObject, V: INSObject> INSObject for NSDictionary<K, V> {
148150
impl<K: INSObject, V: INSObject> INSDictionary for NSDictionary<K, V> {
149151
type Key = K;
150152
type Value = V;
151-
type Own = Owned;
153+
type ValueOwnership = Owned;
152154
}
153155

154156
impl<K: INSObject, V: INSObject> INSFastEnumeration for NSDictionary<K, V> {

objc2_foundation/src/lib.rs

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,8 +11,7 @@ extern crate std;
1111
extern "C" {}
1212

1313
pub use self::array::{
14-
INSArray, INSMutableArray, NSArray, NSComparisonResult, NSMutableArray, NSMutableSharedArray,
15-
NSRange, NSSharedArray,
14+
INSArray, INSMutableArray, NSArray, NSComparisonResult, NSMutableArray, NSRange,
1615
};
1716
pub use self::data::{INSData, INSMutableData, NSData, NSMutableData};
1817
pub use self::dictionary::{INSDictionary, NSDictionary};

0 commit comments

Comments
 (0)