about summary refs log tree commit diff
diff options
context:
space:
mode:
authorBrian Anderson <banderson@mozilla.com>2013-04-15 18:56:39 -0700
committerBrian Anderson <banderson@mozilla.com>2013-04-15 18:56:39 -0700
commit1f94364aeff935eebadd3ae47dbae3eb099023da (patch)
tree7251360207fa0d060ed033ee2c62d5c36077f4d6
parented74ac169e3e79ff4ce59329a06223e23f2b99b6 (diff)
downloadrust-1f94364aeff935eebadd3ae47dbae3eb099023da.tar.gz
rust-1f94364aeff935eebadd3ae47dbae3eb099023da.zip
core::rt: Clean up some more hacks
-rw-r--r--src/libcore/rt/sched/mod.rs18
1 files changed, 6 insertions, 12 deletions
diff --git a/src/libcore/rt/sched/mod.rs b/src/libcore/rt/sched/mod.rs
index 8fb8e2a1d10..08c52d8e8d4 100644
--- a/src/libcore/rt/sched/mod.rs
+++ b/src/libcore/rt/sched/mod.rs
@@ -46,17 +46,13 @@ pub struct Scheduler {
 // XXX: Some hacks to put a &fn in Scheduler without borrowck
 // complaining
 type UnsafeTaskReceiver = sys::Closure;
-trait HackAroundBorrowCk {
+trait ClosureConverter {
     fn from_fn(&fn(~Task)) -> Self;
     fn to_fn(self) -> &fn(~Task);
 }
-impl HackAroundBorrowCk for UnsafeTaskReceiver {
-    fn from_fn(f: &fn(~Task)) -> UnsafeTaskReceiver {
-        unsafe { transmute(f) }
-    }
-    fn to_fn(self) -> &fn(~Task) {
-        unsafe { transmute(self) }
-    }
+impl ClosureConverter for UnsafeTaskReceiver {
+    fn from_fn(f: &fn(~Task)) -> UnsafeTaskReceiver { unsafe { transmute(f) } }
+    fn to_fn(self) -> &fn(~Task) { unsafe { transmute(self) } }
 }
 
 enum CleanupJob {
@@ -223,10 +219,8 @@ pub impl Scheduler {
         rtdebug!("blocking task");
 
         let blocked_task = self.current_task.swap_unwrap();
-        let f_fake_region = unsafe {
-            transmute::<&fn(~Task), &fn(~Task)>(f)
-        };
-        let f_opaque = HackAroundBorrowCk::from_fn(f_fake_region);
+        let f_fake_region = unsafe { transmute::<&fn(~Task), &fn(~Task)>(f) };
+        let f_opaque = ClosureConverter::from_fn(f_fake_region);
         self.enqueue_cleanup_job(GiveTask(blocked_task, f_opaque));
 
         local::put(self);