diff options
| author | Erick Tryzelaar <erick.tryzelaar@gmail.com> | 2013-07-23 12:31:00 -0700 |
|---|---|---|
| committer | Erick Tryzelaar <erick.tryzelaar@gmail.com> | 2013-07-23 16:57:00 -0700 |
| commit | cced3c9013e4f8e1202b6088f9d3b564e40cac40 (patch) | |
| tree | a86ab04547baac35b19165f62e64c99e407ae50e /src/libstd | |
| parent | 037a5b1af4b66e44d6d2130cedb576c5659bac8c (diff) | |
| download | rust-cced3c9013e4f8e1202b6088f9d3b564e40cac40.tar.gz rust-cced3c9013e4f8e1202b6088f9d3b564e40cac40.zip | |
std: simplify str::as_imm_buf and vec::as_{imm,mut}_buf
Diffstat (limited to 'src/libstd')
| -rw-r--r-- | src/libstd/str.rs | 7 | ||||
| -rw-r--r-- | src/libstd/vec.rs | 11 |
2 files changed, 6 insertions, 12 deletions
diff --git a/src/libstd/str.rs b/src/libstd/str.rs index 95cbc5aa409..b869f574beb 100644 --- a/src/libstd/str.rs +++ b/src/libstd/str.rs @@ -1957,11 +1957,8 @@ impl<'self> StrSlice<'self> for &'self str { */ #[inline] fn as_imm_buf<T>(&self, f: &fn(*u8, uint) -> T) -> T { - unsafe { - let v: *(*u8, uint) = cast::transmute(self); - let (buf, len) = *v; - f(buf, len) - } + let v: &[u8] = unsafe { cast::transmute(*self) }; + v.as_imm_buf(f) } /** diff --git a/src/libstd/vec.rs b/src/libstd/vec.rs index baeb87e51b9..6bbf1210a31 100644 --- a/src/libstd/vec.rs +++ b/src/libstd/vec.rs @@ -1691,7 +1691,7 @@ pub trait MutableVector<'self, T> { unsafe fn unsafe_mut_ref(&self, index: uint) -> *mut T; unsafe fn unsafe_set(&self, index: uint, val: T); - fn as_mut_buf<U>(&self, f: &fn(*mut T, uint) -> U) -> U; + fn as_mut_buf<U>(self, f: &fn(*mut T, uint) -> U) -> U; } impl<'self,T> MutableVector<'self, T> for &'self mut [T] { @@ -1783,12 +1783,9 @@ impl<'self,T> MutableVector<'self, T> for &'self mut [T] { /// Similar to `as_imm_buf` but passing a `*mut T` #[inline] - fn as_mut_buf<U>(&self, f: &fn(*mut T, uint) -> U) -> U { - unsafe { - let v : *(*mut T,uint) = transmute(self); - let (buf,len) = *v; - f(buf, len / sys::nonzero_size_of::<T>()) - } + fn as_mut_buf<U>(self, f: &fn(*mut T, uint) -> U) -> U { + let (buf, len): (*mut T, uint) = unsafe { transmute(self) }; + f(buf, len / sys::nonzero_size_of::<T>()) } } |
