Skip to content

Commit 4b602cb

Browse files
committed
Removed unsafe from_refs methods.
1 parent c51b0cd commit 4b602cb

File tree

2 files changed

+22
-22
lines changed

2 files changed

+22
-22
lines changed

src/array.rs

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,14 @@ impl NSRange {
5151
}
5252
}
5353

54+
unsafe fn from_refs<A>(refs: &[&A::Item]) -> Id<A> where A: INSArray {
55+
let cls = A::class();
56+
let obj: *mut A = msg_send![cls, alloc];
57+
let obj: *mut A = msg_send![obj, initWithObjects:refs.as_ptr()
58+
count:refs.len()];
59+
Id::from_retained_ptr(obj)
60+
}
61+
5462
pub trait INSArray : INSObject {
5563
type Item: INSObject;
5664
type Own: Ownership;
@@ -89,18 +97,10 @@ pub trait INSArray : INSObject {
8997
}
9098
}
9199

92-
unsafe fn from_refs(refs: &[&Self::Item]) -> Id<Self> {
93-
let cls = Self::class();
94-
let obj: *mut Self = msg_send![cls, alloc];
95-
let obj: *mut Self = msg_send![obj, initWithObjects:refs.as_ptr()
96-
count:refs.len()];
97-
Id::from_retained_ptr(obj)
98-
}
99-
100100
fn from_vec(vec: Vec<Id<Self::Item, Self::Own>>) -> Id<Self> {
101101
let refs: Vec<&Self::Item> = vec.iter().map(|obj| &**obj).collect();
102102
unsafe {
103-
INSArray::from_refs(&refs)
103+
from_refs(&refs)
104104
}
105105
}
106106

@@ -145,7 +145,7 @@ pub trait INSArray : INSObject {
145145
where Self: INSArray<Own=Shared> {
146146
let refs: Vec<&Self::Item> = slice.iter().map(|obj| &**obj).collect();
147147
unsafe {
148-
INSArray::from_refs(&refs)
148+
from_refs(&refs)
149149
}
150150
}
151151

src/dictionary.rs

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,17 @@ use {
1111
NSArray, NSSharedArray, NSEnumerator,
1212
};
1313

14+
unsafe fn from_refs<D, T>(keys: &[&T], vals: &[&D::Value]) -> Id<D>
15+
where D: INSDictionary, T: INSCopying<Output=D::Key> {
16+
let cls = D::class();
17+
let count = min(keys.len(), vals.len());
18+
let obj: *mut D = msg_send![cls, alloc];
19+
let obj: *mut D = msg_send![obj, initWithObjects:vals.as_ptr()
20+
forKeys:keys.as_ptr()
21+
count:count];
22+
Id::from_retained_ptr(obj)
23+
}
24+
1425
pub trait INSDictionary : INSObject {
1526
type Key: INSObject;
1627
type Value: INSObject;
@@ -85,23 +96,12 @@ pub trait INSDictionary : INSObject {
8596
}
8697
}
8798

88-
unsafe fn from_refs<T>(keys: &[&T], vals: &[&Self::Value]) -> Id<Self>
89-
where T: INSCopying<Output=Self::Key> {
90-
let cls = Self::class();
91-
let count = min(keys.len(), vals.len());
92-
let obj: *mut Self = msg_send![cls, alloc];
93-
let obj: *mut Self = msg_send![obj, initWithObjects:vals.as_ptr()
94-
forKeys:keys.as_ptr()
95-
count:count];
96-
Id::from_retained_ptr(obj)
97-
}
98-
9999
fn from_keys_and_objects<T>(keys: &[&T],
100100
vals: Vec<Id<Self::Value, Self::Own>>) -> Id<Self>
101101
where T: INSCopying<Output=Self::Key> {
102102
let vals_refs: Vec<&Self::Value> = vals.iter().map(|obj| &**obj).collect();
103103
unsafe {
104-
INSDictionary::from_refs(keys, &vals_refs)
104+
from_refs(keys, &vals_refs)
105105
}
106106
}
107107

0 commit comments

Comments
 (0)