From 4e7286ecc16a27abf4b87c582881f3919409bbb7 Mon Sep 17 00:00:00 2001 From: Steven Fackler Date: Sat, 29 Aug 2015 15:40:25 -0700 Subject: [PATCH] Clean up data * Implement Deref for CFData * Use slice::from_raw_parts instead of transmuting a tuple --- src/data.rs | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/src/data.rs b/src/data.rs index 55be5f1..0b0266c 100644 --- a/src/data.rs +++ b/src/data.rs @@ -13,6 +13,8 @@ use base::{CFAllocatorRef, CFIndex, CFIndexConvertible, CFRelease, CFRetain}; use base::{CFTypeID, CFTypeRef, TCFType, kCFAllocatorDefault}; use std::mem; +use std::ops::Deref; +use std::slice; #[repr(C)] struct __CFData; @@ -82,7 +84,7 @@ impl CFData { #[inline] pub fn bytes<'a>(&'a self) -> &'a [u8] { unsafe { - mem::transmute((CFDataGetBytePtr(self.obj), self.len() as usize)) + slice::from_raw_parts(CFDataGetBytePtr(self.obj), self.len() as usize) } } @@ -95,6 +97,15 @@ impl CFData { } } +impl Deref for CFData { + type Target = [u8]; + + #[inline] + fn deref(&self) -> &[u8] { + self.bytes() + } +} + #[link(name = "CoreFoundation", kind = "framework")] extern { /*