Lines Matching refs:T
212 pub fn try_spawn<T: 'static + Send + FnOnce()>( in try_spawn()
215 func: T, in try_spawn() argument
231 struct ClosureWork<T> {
233 work: Work<ClosureWork<T>>,
234 func: Option<T>,
237 impl<T> ClosureWork<T> {
238 fn project(self: Pin<&mut Self>) -> &mut Option<T> { in project() argument
244 impl<T: FnOnce()> WorkItem for ClosureWork<T> {
354 pub struct Work<T: ?Sized, const ID: u64 = 0> {
357 _inner: PhantomData<T>,
363 unsafe impl<T: ?Sized, const ID: u64> Send for Work<T, ID> {}
367 unsafe impl<T: ?Sized, const ID: u64> Sync for Work<T, ID> {}
369 impl<T: ?Sized, const ID: u64> Work<T, ID> {
374 T: WorkItem<ID>, in new()
383 Some(T::Pointer::run), in new()
437 pub unsafe trait HasWork<T, const ID: u64 = 0> {
458 unsafe fn raw_get_work(ptr: *mut Self) -> *mut Work<T, ID> { in raw_get_work() argument
460 unsafe { (ptr as *mut u8).add(Self::OFFSET) as *mut Work<T, ID> } in raw_get_work()
469 unsafe fn work_container_of(ptr: *mut Work<T, ID>) -> *mut Self in work_container_of() argument
522 impl{T} HasWork<Self> for ClosureWork<T> { self.work }
534 unsafe impl<T, const ID: u64> WorkItemPointer<ID> for Arc<T>
536 T: WorkItem<ID, Pointer = Self>,
537 T: HasWork<T, ID>,
541 let ptr = ptr as *mut Work<T, ID>; in run()
543 let ptr = unsafe { T::work_container_of(ptr) }; in run()
547 T::run(arc) in run()
558 unsafe impl<T, const ID: u64> RawWorkItem<ID> for Arc<T>
560 T: WorkItem<ID, Pointer = Self>,
561 T: HasWork<T, ID>,
573 let work_ptr = unsafe { T::raw_get_work(ptr) }; in __enqueue()
587 unsafe impl<T, const ID: u64> WorkItemPointer<ID> for Pin<KBox<T>>
589 T: WorkItem<ID, Pointer = Self>,
590 T: HasWork<T, ID>,
594 let ptr = ptr as *mut Work<T, ID>; in run()
596 let ptr = unsafe { T::work_container_of(ptr) }; in run()
602 T::run(pinned) in run()
607 unsafe impl<T, const ID: u64> RawWorkItem<ID> for Pin<KBox<T>>
609 T: WorkItem<ID, Pointer = Self>,
610 T: HasWork<T, ID>,
624 let work_ptr = unsafe { T::raw_get_work(ptr) }; in __enqueue()