Skip to content

Commit 4118e96

Browse files
committed
Removed IdSlice trait.
It won't work without unsafe_no_drop_flag which can't be used in stable rust.
1 parent f4d3044 commit 4118e96

4 files changed

Lines changed: 9 additions & 28 deletions

File tree

core/id.rs

Lines changed: 0 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -162,25 +162,6 @@ impl<T, O> fmt::Debug for Id<T, O> where T: fmt::Debug {
162162
/// A convenient alias for a shared `Id`.
163163
pub type ShareId<T> = Id<T, Shared>;
164164

165-
/// Extension methods for slices containing `Id`s.
166-
pub trait IdSlice {
167-
/// The type of the items in the slice.
168-
type Item;
169-
170-
/// Convert a slice of `Id`s into a slice of references
171-
fn as_refs_slice(&self) -> &[&Self::Item];
172-
}
173-
174-
impl<T, O> IdSlice for [Id<T, O>] {
175-
type Item = T;
176-
177-
fn as_refs_slice(&self) -> &[&T] {
178-
unsafe {
179-
mem::transmute(self)
180-
}
181-
}
182-
}
183-
184165
#[cfg(test)]
185166
mod tests {
186167
use std::mem;

core/lib.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ extern crate malloc_buf;
1212
#[cfg(test)]
1313
extern crate objc_test_utils;
1414

15-
pub use id::{Id, IdSlice, Owned, Ownership, Shared, ShareId};
15+
pub use id::{Id, Owned, Ownership, Shared, ShareId};
1616
pub use encode::{encode, Encode, EncodePtr};
1717
pub use message::{send_message, send_super_message, Message, MessageArguments, ToMessage};
1818
pub use weak::WeakId;

foundation/array.rs

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ use std::cmp::Ordering;
22
use std::marker::PhantomData;
33
use std::ops::{Index, Range};
44

5-
use objc::{Id, IdSlice, Owned, Ownership, Shared, ShareId};
5+
use objc::{Id, Owned, Ownership, Shared, ShareId};
66
use objc::runtime::{Class, Object};
77

88
use {INSCopying, INSFastEnumeration, INSMutableCopying, INSObject, NSEnumerator};
@@ -98,9 +98,9 @@ pub trait INSArray : INSObject {
9898
}
9999

100100
fn from_vec(vec: Vec<Id<Self::Item, Self::Own>>) -> Id<Self> {
101-
let refs = vec.as_refs_slice();
101+
let refs: Vec<&Self::Item> = vec.iter().map(|obj| &**obj).collect();
102102
unsafe {
103-
INSArray::from_refs(refs)
103+
INSArray::from_refs(&refs)
104104
}
105105
}
106106

@@ -143,9 +143,9 @@ pub trait INSSharedArray : INSArray<Own=Shared> {
143143
}
144144

145145
fn from_slice(slice: &[ShareId<Self::Item>]) -> Id<Self> {
146-
let refs = slice.as_refs_slice();
146+
let refs: Vec<&Self::Item> = slice.iter().map(|obj| &**obj).collect();
147147
unsafe {
148-
INSArray::from_refs(refs)
148+
INSArray::from_refs(&refs)
149149
}
150150
}
151151

foundation/dictionary.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ use std::marker::PhantomData;
33
use std::ops::Index;
44
use std::ptr;
55

6-
use objc::{Id, IdSlice, Owned, Ownership, ShareId};
6+
use objc::{Id, Owned, Ownership, ShareId};
77
use objc::runtime::Class;
88

99
use {
@@ -99,9 +99,9 @@ pub trait INSDictionary : INSObject {
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> {
102-
let vals_refs = vals.as_refs_slice();
102+
let vals_refs: Vec<&Self::Value> = vals.iter().map(|obj| &**obj).collect();
103103
unsafe {
104-
INSDictionary::from_refs(keys, vals_refs)
104+
INSDictionary::from_refs(keys, &vals_refs)
105105
}
106106
}
107107

0 commit comments

Comments
 (0)