@@ -46,17 +46,13 @@ pub struct Scheduler {
46
46
// XXX: Some hacks to put a &fn in Scheduler without borrowck
47
47
// complaining
48
48
type UnsafeTaskReceiver = sys:: Closure ;
49
- trait HackAroundBorrowCk {
49
+ trait ClosureConverter {
50
50
fn from_fn ( & fn ( ~Task ) ) -> Self ;
51
51
fn to_fn ( self ) -> & fn ( ~Task ) ;
52
52
}
53
- impl HackAroundBorrowCk for UnsafeTaskReceiver {
54
- fn from_fn ( f : & fn ( ~Task ) ) -> UnsafeTaskReceiver {
55
- unsafe { transmute ( f) }
56
- }
57
- fn to_fn ( self ) -> & fn ( ~Task ) {
58
- unsafe { transmute ( self ) }
59
- }
53
+ impl ClosureConverter for UnsafeTaskReceiver {
54
+ fn from_fn ( f : & fn ( ~Task ) ) -> UnsafeTaskReceiver { unsafe { transmute ( f) } }
55
+ fn to_fn ( self ) -> & fn ( ~Task ) { unsafe { transmute ( self ) } }
60
56
}
61
57
62
58
enum CleanupJob {
@@ -223,10 +219,8 @@ pub impl Scheduler {
223
219
rtdebug ! ( "blocking task" ) ;
224
220
225
221
let blocked_task = self . current_task . swap_unwrap ( ) ;
226
- let f_fake_region = unsafe {
227
- transmute :: < & fn ( ~Task ) , & fn ( ~Task ) > ( f)
228
- } ;
229
- let f_opaque = HackAroundBorrowCk :: from_fn ( f_fake_region) ;
222
+ let f_fake_region = unsafe { transmute :: < & fn ( ~Task ) , & fn ( ~Task ) > ( f) } ;
223
+ let f_opaque = ClosureConverter :: from_fn ( f_fake_region) ;
230
224
self . enqueue_cleanup_job ( GiveTask ( blocked_task, f_opaque) ) ;
231
225
232
226
local:: put ( self ) ;
0 commit comments