Trait v9::kernel::KernelFn[][src]

pub unsafe trait KernelFn<Dump, Ret>: EachResource<Dump, Ret> {
    unsafe fn run(
        &mut self,
        universe: &Universe,
        args: Rez,
        cleanup: &mut dyn FnMut()
    ) -> Ret; }

Implemented for certain closures.

If your closure isn’t a Kernel, ensure that:

  1. All arguments are Extract. (You can test this by writing fn assert<T: Extract>() {} assert::<T>();)
  2. You don’t have an unreasonable number of arguments. (If necessary, you can group them up via decl_context!.)
  3. The return value is appropriate. Kernel itself has no restrictions on the return type, however:
    • kmap requires the return value be ().
    • kmap_return and run_return requires Any, which means it must be 'static.

Required methods

unsafe fn run(
    &mut self,
    universe: &Universe,
    args: Rez,
    cleanup: &mut dyn FnMut()
) -> Ret
[src]

Loading content...

Implementors

impl<A00, Ret, X> KernelFn<(A00,), Ret> for X where
    X: FnMut(A00) -> Ret,
    A00: Extract
[src]

impl<A01, A00, Ret, X> KernelFn<(A01, A00), Ret> for X where
    X: FnMut(A01, A00) -> Ret,
    A01: Extract,
    A00: Extract
[src]

impl<A02, A01, A00, Ret, X> KernelFn<(A02, A01, A00), Ret> for X where
    X: FnMut(A02, A01, A00) -> Ret,
    A02: Extract,
    A01: Extract,
    A00: Extract
[src]

impl<A03, A02, A01, A00, Ret, X> KernelFn<(A03, A02, A01, A00), Ret> for X where
    X: FnMut(A03, A02, A01, A00) -> Ret,
    A03: Extract,
    A02: Extract,
    A01: Extract,
    A00: Extract
[src]

impl<A04, A03, A02, A01, A00, Ret, X> KernelFn<(A04, A03, A02, A01, A00), Ret> for X where
    X: FnMut(A04, A03, A02, A01, A00) -> Ret,
    A04: Extract,
    A03: Extract,
    A02: Extract,
    A01: Extract,
    A00: Extract
[src]

impl<A05, A04, A03, A02, A01, A00, Ret, X> KernelFn<(A05, A04, A03, A02, A01, A00), Ret> for X where
    X: FnMut(A05, A04, A03, A02, A01, A00) -> Ret,
    A05: Extract,
    A04: Extract,
    A03: Extract,
    A02: Extract,
    A01: Extract,
    A00: Extract
[src]

impl<A06, A05, A04, A03, A02, A01, A00, Ret, X> KernelFn<(A06, A05, A04, A03, A02, A01, A00), Ret> for X where
    X: FnMut(A06, A05, A04, A03, A02, A01, A00) -> Ret,
    A06: Extract,
    A05: Extract,
    A04: Extract,
    A03: Extract,
    A02: Extract,
    A01: Extract,
    A00: Extract
[src]

impl<A07, A06, A05, A04, A03, A02, A01, A00, Ret, X> KernelFn<(A07, A06, A05, A04, A03, A02, A01, A00), Ret> for X where
    X: FnMut(A07, A06, A05, A04, A03, A02, A01, A00) -> Ret,
    A07: Extract,
    A06: Extract,
    A05: Extract,
    A04: Extract,
    A03: Extract,
    A02: Extract,
    A01: Extract,
    A00: Extract
[src]

impl<A08, A07, A06, A05, A04, A03, A02, A01, A00, Ret, X> KernelFn<(A08, A07, A06, A05, A04, A03, A02, A01, A00), Ret> for X where
    X: FnMut(A08, A07, A06, A05, A04, A03, A02, A01, A00) -> Ret,
    A08: Extract,
    A07: Extract,
    A06: Extract,
    A05: Extract,
    A04: Extract,
    A03: Extract,
    A02: Extract,
    A01: Extract,
    A00: Extract
[src]

impl<A09, A08, A07, A06, A05, A04, A03, A02, A01, A00, Ret, X> KernelFn<(A09, A08, A07, A06, A05, A04, A03, A02, A01, A00), Ret> for X where
    X: FnMut(A09, A08, A07, A06, A05, A04, A03, A02, A01, A00) -> Ret,
    A09: Extract,
    A08: Extract,
    A07: Extract,
    A06: Extract,
    A05: Extract,
    A04: Extract,
    A03: Extract,
    A02: Extract,
    A01: Extract,
    A00: Extract
[src]

impl<A10, A09, A08, A07, A06, A05, A04, A03, A02, A01, A00, Ret, X> KernelFn<(A10, A09, A08, A07, A06, A05, A04, A03, A02, A01, A00), Ret> for X where
    X: FnMut(A10, A09, A08, A07, A06, A05, A04, A03, A02, A01, A00) -> Ret,
    A10: Extract,
    A09: Extract,
    A08: Extract,
    A07: Extract,
    A06: Extract,
    A05: Extract,
    A04: Extract,
    A03: Extract,
    A02: Extract,
    A01: Extract,
    A00: Extract
[src]

impl<A11, A10, A09, A08, A07, A06, A05, A04, A03, A02, A01, A00, Ret, X> KernelFn<(A11, A10, A09, A08, A07, A06, A05, A04, A03, A02, A01, A00), Ret> for X where
    X: FnMut(A11, A10, A09, A08, A07, A06, A05, A04, A03, A02, A01, A00) -> Ret,
    A11: Extract,
    A10: Extract,
    A09: Extract,
    A08: Extract,
    A07: Extract,
    A06: Extract,
    A05: Extract,
    A04: Extract,
    A03: Extract,
    A02: Extract,
    A01: Extract,
    A00: Extract
[src]

impl<A12, A11, A10, A09, A08, A07, A06, A05, A04, A03, A02, A01, A00, Ret, X> KernelFn<(A12, A11, A10, A09, A08, A07, A06, A05, A04, A03, A02, A01, A00), Ret> for X where
    X: FnMut(A12, A11, A10, A09, A08, A07, A06, A05, A04, A03, A02, A01, A00) -> Ret,
    A12: Extract,
    A11: Extract,
    A10: Extract,
    A09: Extract,
    A08: Extract,
    A07: Extract,
    A06: Extract,
    A05: Extract,
    A04: Extract,
    A03: Extract,
    A02: Extract,
    A01: Extract,
    A00: Extract
[src]

impl<A13, A12, A11, A10, A09, A08, A07, A06, A05, A04, A03, A02, A01, A00, Ret, X> KernelFn<(A13, A12, A11, A10, A09, A08, A07, A06, A05, A04, A03, A02, A01, A00), Ret> for X where
    X: FnMut(A13, A12, A11, A10, A09, A08, A07, A06, A05, A04, A03, A02, A01, A00) -> Ret,
    A13: Extract,
    A12: Extract,
    A11: Extract,
    A10: Extract,
    A09: Extract,
    A08: Extract,
    A07: Extract,
    A06: Extract,
    A05: Extract,
    A04: Extract,
    A03: Extract,
    A02: Extract,
    A01: Extract,
    A00: Extract
[src]

impl<A14, A13, A12, A11, A10, A09, A08, A07, A06, A05, A04, A03, A02, A01, A00, Ret, X> KernelFn<(A14, A13, A12, A11, A10, A09, A08, A07, A06, A05, A04, A03, A02, A01, A00), Ret> for X where
    X: FnMut(A14, A13, A12, A11, A10, A09, A08, A07, A06, A05, A04, A03, A02, A01, A00) -> Ret,
    A14: Extract,
    A13: Extract,
    A12: Extract,
    A11: Extract,
    A10: Extract,
    A09: Extract,
    A08: Extract,
    A07: Extract,
    A06: Extract,
    A05: Extract,
    A04: Extract,
    A03: Extract,
    A02: Extract,
    A01: Extract,
    A00: Extract
[src]

impl<X, Ret> KernelFn<(), Ret> for X where
    X: FnMut() -> Ret, 
[src]

Loading content...