From 4118e96b23786b24f0915aca2c44ab21b80fa550 Mon Sep 17 00:00:00 2001 From: Steven Sheldon Date: Thu, 5 Mar 2015 09:13:25 -0800 Subject: [PATCH] Removed IdSlice trait. It won't work without unsafe_no_drop_flag which can't be used in stable rust. --- core/id.rs | 19 ------------------- core/lib.rs | 2 +- foundation/array.rs | 10 +++++----- foundation/dictionary.rs | 6 +++--- 4 files changed, 9 insertions(+), 28 deletions(-) diff --git a/core/id.rs b/core/id.rs index 224cd43b6..d3241179d 100644 --- a/core/id.rs +++ b/core/id.rs @@ -162,25 +162,6 @@ impl fmt::Debug for Id where T: fmt::Debug { /// A convenient alias for a shared `Id`. pub type ShareId = Id; -/// Extension methods for slices containing `Id`s. -pub trait IdSlice { - /// The type of the items in the slice. - type Item; - - /// Convert a slice of `Id`s into a slice of references - fn as_refs_slice(&self) -> &[&Self::Item]; -} - -impl IdSlice for [Id] { - type Item = T; - - fn as_refs_slice(&self) -> &[&T] { - unsafe { - mem::transmute(self) - } - } -} - #[cfg(test)] mod tests { use std::mem; diff --git a/core/lib.rs b/core/lib.rs index 52c8e6319..4d81ab75e 100644 --- a/core/lib.rs +++ b/core/lib.rs @@ -12,7 +12,7 @@ extern crate malloc_buf; #[cfg(test)] extern crate objc_test_utils; -pub use id::{Id, IdSlice, Owned, Ownership, Shared, ShareId}; +pub use id::{Id, Owned, Ownership, Shared, ShareId}; pub use encode::{encode, Encode, EncodePtr}; pub use message::{send_message, send_super_message, Message, MessageArguments, ToMessage}; pub use weak::WeakId; diff --git a/foundation/array.rs b/foundation/array.rs index b41a382f4..c3c8d5feb 100644 --- a/foundation/array.rs +++ b/foundation/array.rs @@ -2,7 +2,7 @@ use std::cmp::Ordering; use std::marker::PhantomData; use std::ops::{Index, Range}; -use objc::{Id, IdSlice, Owned, Ownership, Shared, ShareId}; +use objc::{Id, Owned, Ownership, Shared, ShareId}; use objc::runtime::{Class, Object}; use {INSCopying, INSFastEnumeration, INSMutableCopying, INSObject, NSEnumerator}; @@ -98,9 +98,9 @@ pub trait INSArray : INSObject { } fn from_vec(vec: Vec>) -> Id { - let refs = vec.as_refs_slice(); + let refs: Vec<&Self::Item> = vec.iter().map(|obj| &**obj).collect(); unsafe { - INSArray::from_refs(refs) + INSArray::from_refs(&refs) } } @@ -143,9 +143,9 @@ pub trait INSSharedArray : INSArray { } fn from_slice(slice: &[ShareId]) -> Id { - let refs = slice.as_refs_slice(); + let refs: Vec<&Self::Item> = slice.iter().map(|obj| &**obj).collect(); unsafe { - INSArray::from_refs(refs) + INSArray::from_refs(&refs) } } diff --git a/foundation/dictionary.rs b/foundation/dictionary.rs index 3241c7b37..f8ed79b46 100644 --- a/foundation/dictionary.rs +++ b/foundation/dictionary.rs @@ -3,7 +3,7 @@ use std::marker::PhantomData; use std::ops::Index; use std::ptr; -use objc::{Id, IdSlice, Owned, Ownership, ShareId}; +use objc::{Id, Owned, Ownership, ShareId}; use objc::runtime::Class; use { @@ -99,9 +99,9 @@ pub trait INSDictionary : INSObject { fn from_keys_and_objects(keys: &[&T], vals: Vec>) -> Id where T: INSCopying { - let vals_refs = vals.as_refs_slice(); + let vals_refs: Vec<&Self::Value> = vals.iter().map(|obj| &**obj).collect(); unsafe { - INSDictionary::from_refs(keys, vals_refs) + INSDictionary::from_refs(keys, &vals_refs) } }