pub unsafe fn new<T>(data: *const T) -> JobRef
    where
        T: Job,
    {
        let fn_ptr: unsafe fn(*const T) = <T as Job>::execute;

        // erase types:
        JobRef {
            pointer: data as *const (),
            execute_fn: mem::transmute(fn_ptr),
        }
    }
/// Unsafe: caller asserts that `data` will remain valid until the
/// job is executed.
caller asserts that `data` will remain valid until the
job is executed.
caller asserts that ` data ` will remain valid until the job is executed .
pub unsafe fn new<T>(data: *const T) -> JobRef
    where
        T: Job,
    {
        let fn_ptr: unsafe fn(*const T) = <T as Job>::execute;
        // erase types:
        JobRef {
            pointer: data as *const (),
            execute_fn: mem::transmute(fn_ptr),
        }
    }
pub unsafe fn new < T > ( data : * const T ) -> JobRef where T : Job , { let fn_ptr : unsafe fn ( * const T ) = < T as Job > :: execute ; // erase types: JobRef { pointer : data as * const ( ) , execute_fn : mem :: transmute ( fn_ptr ) , } }
Unsafe: caller asserts that `data` will remain valid until the
job is executed.
Unsafe : caller asserts that ` data ` will remain valid until the job is executed .
data
*const T
data
*const T