Lines Matching refs:T
334 pub fn try_spawn<T: 'static + Send + FnOnce()>( in try_spawn()
337 func: T, in try_spawn() argument
353 struct ClosureWork<T> {
355 work: Work<ClosureWork<T>>,
356 func: Option<T>,
359 impl<T> ClosureWork<T> {
360 fn project(self: Pin<&mut Self>) -> &mut Option<T> { in project() argument
366 impl<T: FnOnce()> WorkItem for ClosureWork<T> {
486 pub struct Work<T: ?Sized, const ID: u64 = 0> {
489 _inner: PhantomData<T>,
495 unsafe impl<T: ?Sized, const ID: u64> Send for Work<T, ID> {}
499 unsafe impl<T: ?Sized, const ID: u64> Sync for Work<T, ID> {}
501 impl<T: ?Sized, const ID: u64> Work<T, ID> {
506 T: WorkItem<ID>, in new()
515 Some(T::Pointer::run), in new()
572 pub unsafe trait HasWork<T, const ID: u64 = 0> {
578 unsafe fn raw_get_work(ptr: *mut Self) -> *mut Work<T, ID>; in raw_get_work() argument
585 unsafe fn work_container_of(ptr: *mut Work<T, ID>) -> *mut Self; in work_container_of() argument
638 impl{T} HasWork<Self> for ClosureWork<T> { self.work }
654 pub struct DelayedWork<T: ?Sized, const ID: u64 = 0> {
657 _inner: PhantomData<T>,
663 unsafe impl<T: ?Sized, const ID: u64> Send for DelayedWork<T, ID> {}
667 unsafe impl<T: ?Sized, const ID: u64> Sync for DelayedWork<T, ID> {}
669 impl<T: ?Sized, const ID: u64> DelayedWork<T, ID> {
679 T: WorkItem<ID>, in new()
688 Some(T::Pointer::run), in new()
719 pub unsafe fn raw_as_work(ptr: *const Self) -> *mut Work<T, ID> { in raw_as_work() argument
736 pub unsafe trait HasDelayedWork<T, const ID: u64 = 0>: HasWork<T, ID> {}
822 unsafe impl<T, const ID: u64> WorkItemPointer<ID> for Arc<T>
824 T: WorkItem<ID, Pointer = Self>,
825 T: HasWork<T, ID>,
829 let ptr = ptr.cast::<Work<T, ID>>(); in run()
831 let ptr = unsafe { T::work_container_of(ptr) }; in run()
835 T::run(arc) in run()
846 unsafe impl<T, const ID: u64> RawWorkItem<ID> for Arc<T>
848 T: WorkItem<ID, Pointer = Self>,
849 T: HasWork<T, ID>,
861 let work_ptr = unsafe { T::raw_get_work(ptr) }; in __enqueue()
877 unsafe impl<T, const ID: u64> RawDelayedWorkItem<ID> for Arc<T>
879 T: WorkItem<ID, Pointer = Self>,
880 T: HasDelayedWork<T, ID>,
885 unsafe impl<T, const ID: u64> WorkItemPointer<ID> for Pin<KBox<T>>
887 T: WorkItem<ID, Pointer = Self>,
888 T: HasWork<T, ID>,
892 let ptr = ptr.cast::<Work<T, ID>>(); in run()
894 let ptr = unsafe { T::work_container_of(ptr) }; in run()
900 T::run(pinned) in run()
905 unsafe impl<T, const ID: u64> RawWorkItem<ID> for Pin<KBox<T>>
907 T: WorkItem<ID, Pointer = Self>,
908 T: HasWork<T, ID>,
922 let work_ptr = unsafe { T::raw_get_work(ptr) }; in __enqueue()
937 unsafe impl<T, const ID: u64> RawDelayedWorkItem<ID> for Pin<KBox<T>>
939 T: WorkItem<ID, Pointer = Self>,
940 T: HasDelayedWork<T, ID>,