Skip to content

Commit f6e7aec

Browse files
committed
Implemented DerefMut for the owned Id.
This closes #5.
1 parent 61e9ea3 commit f6e7aec

File tree

3 files changed

+15
-13
lines changed

3 files changed

+15
-13
lines changed

examples/custom_class.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,7 @@ fn main() {
5353
let mut obj: Id<MYObject> = INSObject::new();
5454
println!("{}", obj);
5555

56-
obj.deref_mut().set_number(7);
56+
obj.set_number(7);
5757
println!("Number: {}", obj.number());
5858

5959
unsafe {

foundation/array.rs

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -339,24 +339,24 @@ mod tests {
339339
fn test_add_object() {
340340
let mut array: Id<NSMutableArray<NSObject>> = INSObject::new();
341341
let obj: Id<NSObject> = INSObject::new();
342-
array.deref_mut().add_object(obj);
342+
array.add_object(obj);
343343

344344
assert!(array.len() == 1);
345345
assert!(array.object_at(0) == array.object_at(0));
346346

347347
let obj: Id<NSObject> = INSObject::new();
348-
array.deref_mut().insert_object_at(0, obj);
348+
array.insert_object_at(0, obj);
349349
assert!(array.len() == 2);
350350
}
351351

352352
#[test]
353353
fn test_replace_object() {
354354
let mut array: Id<NSMutableArray<NSObject>> = INSObject::new();
355355
let obj: Id<NSObject> = INSObject::new();
356-
array.deref_mut().add_object(obj);
356+
array.add_object(obj);
357357

358358
let obj: Id<NSObject> = INSObject::new();
359-
let old_obj = array.deref_mut().replace_object_at(0, obj);
359+
let old_obj = array.replace_object_at(0, obj);
360360
assert!(&*old_obj != array.object_at(0));
361361
}
362362

@@ -365,16 +365,16 @@ mod tests {
365365
let mut array: Id<NSMutableArray<NSObject>> = INSObject::new();
366366
for _ in range(0u, 4) {
367367
let obj: Id<NSObject> = INSObject::new();
368-
array.deref_mut().add_object(obj);
368+
array.add_object(obj);
369369
}
370370

371-
array.deref_mut().remove_object_at(1);
371+
array.remove_object_at(1);
372372
assert!(array.len() == 3);
373373

374-
array.deref_mut().remove_last_object();
374+
array.remove_last_object();
375375
assert!(array.len() == 2);
376376

377-
array.deref_mut().remove_all_objects();
377+
array.remove_all_objects();
378378
assert!(array.is_empty());
379379
}
380380
}

id.rs

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -53,10 +53,6 @@ impl<T: Message> Id<T, Owned> {
5353
mem::transmute(self)
5454
}
5555
}
56-
57-
pub fn deref_mut(&mut self) -> &mut T {
58-
unsafe { &mut *self.ptr }
59-
}
6056
}
6157

6258
impl<T: Message, O: Ownership> ToMessage for Id<T, O> {
@@ -89,6 +85,12 @@ impl<T: Message, O: Ownership> Deref<T> for Id<T, O> {
8985
}
9086
}
9187

88+
impl<T: Message> DerefMut<T> for Id<T, Owned> {
89+
fn deref_mut(&mut self) -> &mut T {
90+
unsafe { &mut *self.ptr }
91+
}
92+
}
93+
9294
impl<T: Message + PartialEq, O: Ownership> PartialEq for Id<T, O> {
9395
fn eq(&self, other: &Id<T, O>) -> bool {
9496
self.deref() == other.deref()

0 commit comments

Comments
 (0)