diff options
| author | Brian Anderson <banderson@mozilla.com> | 2013-04-15 18:56:39 -0700 |
|---|---|---|
| committer | Brian Anderson <banderson@mozilla.com> | 2013-04-15 18:56:39 -0700 |
| commit | 1f94364aeff935eebadd3ae47dbae3eb099023da (patch) | |
| tree | 7251360207fa0d060ed033ee2c62d5c36077f4d6 | |
| parent | ed74ac169e3e79ff4ce59329a06223e23f2b99b6 (diff) | |
| download | rust-1f94364aeff935eebadd3ae47dbae3eb099023da.tar.gz rust-1f94364aeff935eebadd3ae47dbae3eb099023da.zip | |
core::rt: Clean up some more hacks
| -rw-r--r-- | src/libcore/rt/sched/mod.rs | 18 |
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); |
