about summary refs log tree commit diff
path: root/src/libstd
diff options
context:
space:
mode:
authorBrian Anderson <banderson@mozilla.com>2014-02-09 14:05:31 -0800
committerBrian Anderson <banderson@mozilla.com>2014-02-09 16:23:39 -0800
commit07c5e5d81363b6cdbca64637832620ab4870d258 (patch)
treec50243096b7db657c9b8906b987d7f5fd005258c /src/libstd
parent1b7733109d7b692c2ddd404f1bb6c751c3194750 (diff)
downloadrust-07c5e5d81363b6cdbca64637832620ab4870d258.tar.gz
rust-07c5e5d81363b6cdbca64637832620ab4870d258.zip
std: Clean up the swap function a little
Diffstat (limited to 'src/libstd')
-rw-r--r--src/libstd/util.rs13
1 files changed, 5 insertions, 8 deletions
diff --git a/src/libstd/util.rs b/src/libstd/util.rs
index 4f7fbbc2bbc..644b5cefdc8 100644
--- a/src/libstd/util.rs
+++ b/src/libstd/util.rs
@@ -26,19 +26,16 @@ pub fn id<T>(x: T) -> T { x }
 pub fn swap<T>(x: &mut T, y: &mut T) {
     unsafe {
         // Give ourselves some scratch space to work with
-        let mut tmp: T = mem::uninit();
-        let t: *mut T = &mut tmp;
+        let mut t: T = mem::uninit();
 
         // Perform the swap, `&mut` pointers never alias
-        let x_raw: *mut T = x;
-        let y_raw: *mut T = y;
-        ptr::copy_nonoverlapping_memory(t, &*x_raw, 1);
-        ptr::copy_nonoverlapping_memory(x, &*y_raw, 1);
-        ptr::copy_nonoverlapping_memory(y, &*t, 1);
+        ptr::copy_nonoverlapping_memory(&mut t, &*x, 1);
+        ptr::copy_nonoverlapping_memory(x, &*y, 1);
+        ptr::copy_nonoverlapping_memory(y, &t, 1);
 
         // y and t now point to the same thing, but we need to completely forget `tmp`
         // because it's no longer relevant.
-        cast::forget(tmp);
+        cast::forget(t);
     }
 }