pub trait SystemParamFunction<Marker>: Send + Sync + 'static {
    type In;
    type Out;
    type Param: SystemParam;

    // Required method
    fn run(
        &mut self,
        input: Self::In,
        param_value: <Self::Param as SystemParam>::Item<'_, '_>
    ) -> Self::Out;
}
Expand description

A trait implemented for all functions that can be used as Systems.

This trait can be useful for making your own systems which accept other systems, sometimes called higher order systems.

This should be used in combination with ParamSet when calling other systems within your system. Using ParamSet in this case avoids SystemParam collisions.

Example

To create something like PipeSystem, but in entirely safe code.

use std::num::ParseIntError;

use bevy_ecs::prelude::*;

/// Pipe creates a new system which calls `a`, then calls `b` with the output of `a`
pub fn pipe<A, B, AMarker, BMarker>(
    mut a: A,
    mut b: B,
) -> impl FnMut(In<A::In>, ParamSet<(A::Param, B::Param)>) -> B::Out
where
    // We need A and B to be systems, add those bounds
    A: SystemParamFunction<AMarker>,
    B: SystemParamFunction<BMarker, In = A::Out>,
{
    // The type of `params` is inferred based on the return of this function above
    move |In(a_in), mut params| {
        let shared = a.run(a_in, params.p0());
        b.run(shared, params.p1())
    }
}

// Usage example for `pipe`:
fn main() {
    let mut world = World::default();
    world.insert_resource(Message("42".to_string()));

    // pipe the `parse_message_system`'s output into the `filter_system`s input
    let mut piped_system = IntoSystem::into_system(pipe(parse_message, filter));
    piped_system.initialize(&mut world);
    assert_eq!(piped_system.run((), &mut world), Some(42));
}

#[derive(Resource)]
struct Message(String);

fn parse_message(message: Res<Message>) -> Result<usize, ParseIntError> {
    message.0.parse::<usize>()
}

fn filter(In(result): In<Result<usize, ParseIntError>>) -> Option<usize> {
    result.ok().filter(|&n| n < 100)
}

Required Associated Types§

source

type In

The input type to this system. See System::In.

source

type Out

The return type of this system. See System::Out.

source

type Param: SystemParam

The SystemParam/s used by this system to access the World.

Required Methods§

source

fn run( &mut self, input: Self::In, param_value: <Self::Param as SystemParam>::Item<'_, '_> ) -> Self::Out

Executes this system once. See System::run or System::run_unsafe.

Implementors§

source§

impl<Input, Out, Func> SystemParamFunction<fn(_: In<Input>) -> Out> for Func
where Func: Send + Sync + 'static, &'a mut Func: for<'a> FnMut(In<Input>) -> Out + for<'a> FnMut(In<Input>), Out: 'static,

§

type In = Input

§

type Out = Out

§

type Param = ()

source§

impl<Input, Out, Func, F0> SystemParamFunction<fn(_: In<Input>, _: F0) -> Out> for Func
where Func: Send + Sync + 'static, F0: SystemParam, &'a mut Func: for<'a> FnMut(In<Input>, F0) -> Out + for<'a> FnMut(In<Input>, <F0 as SystemParam>::Item<'_, '_>), Out: 'static,

§

type In = Input

§

type Out = Out

§

type Param = (F0,)

source§

impl<Input, Out, Func, F0, F1> SystemParamFunction<fn(_: In<Input>, _: F0, _: F1) -> Out> for Func
where Func: Send + Sync + 'static, F0: SystemParam, F1: SystemParam, &'a mut Func: for<'a> FnMut(In<Input>, F0, F1) -> Out + for<'a> FnMut(In<Input>, <F0 as SystemParam>::Item<'_, '_>, <F1 as SystemParam>::Item<'_, '_>), Out: 'static,

§

type In = Input

§

type Out = Out

§

type Param = (F0, F1)

source§

impl<Input, Out, Func, F0, F1, F2> SystemParamFunction<fn(_: In<Input>, _: F0, _: F1, _: F2) -> Out> for Func
where Func: Send + Sync + 'static, F0: SystemParam, F1: SystemParam, F2: SystemParam, &'a mut Func: for<'a> FnMut(In<Input>, F0, F1, F2) -> Out + for<'a> FnMut(In<Input>, <F0 as SystemParam>::Item<'_, '_>, <F1 as SystemParam>::Item<'_, '_>, <F2 as SystemParam>::Item<'_, '_>), Out: 'static,

§

type In = Input

§

type Out = Out

§

type Param = (F0, F1, F2)

source§

impl<Input, Out, Func, F0, F1, F2, F3> SystemParamFunction<fn(_: In<Input>, _: F0, _: F1, _: F2, _: F3) -> Out> for Func
where Func: Send + Sync + 'static, F0: SystemParam, F1: SystemParam, F2: SystemParam, F3: SystemParam, &'a mut Func: for<'a> FnMut(In<Input>, F0, F1, F2, F3) -> Out + for<'a> FnMut(In<Input>, <F0 as SystemParam>::Item<'_, '_>, <F1 as SystemParam>::Item<'_, '_>, <F2 as SystemParam>::Item<'_, '_>, <F3 as SystemParam>::Item<'_, '_>), Out: 'static,

§

type In = Input

§

type Out = Out

§

type Param = (F0, F1, F2, F3)

source§

impl<Input, Out, Func, F0, F1, F2, F3, F4> SystemParamFunction<fn(_: In<Input>, _: F0, _: F1, _: F2, _: F3, _: F4) -> Out> for Func
where Func: Send + Sync + 'static, F0: SystemParam, F1: SystemParam, F2: SystemParam, F3: SystemParam, F4: SystemParam, &'a mut Func: for<'a> FnMut(In<Input>, F0, F1, F2, F3, F4) -> Out + for<'a> FnMut(In<Input>, <F0 as SystemParam>::Item<'_, '_>, <F1 as SystemParam>::Item<'_, '_>, <F2 as SystemParam>::Item<'_, '_>, <F3 as SystemParam>::Item<'_, '_>, <F4 as SystemParam>::Item<'_, '_>), Out: 'static,

§

type In = Input

§

type Out = Out

§

type Param = (F0, F1, F2, F3, F4)

source§

impl<Input, Out, Func, F0, F1, F2, F3, F4, F5> SystemParamFunction<fn(_: In<Input>, _: F0, _: F1, _: F2, _: F3, _: F4, _: F5) -> Out> for Func
where Func: Send + Sync + 'static, F0: SystemParam, F1: SystemParam, F2: SystemParam, F3: SystemParam, F4: SystemParam, F5: SystemParam, &'a mut Func: for<'a> FnMut(In<Input>, F0, F1, F2, F3, F4, F5) -> Out + for<'a> FnMut(In<Input>, <F0 as SystemParam>::Item<'_, '_>, <F1 as SystemParam>::Item<'_, '_>, <F2 as SystemParam>::Item<'_, '_>, <F3 as SystemParam>::Item<'_, '_>, <F4 as SystemParam>::Item<'_, '_>, <F5 as SystemParam>::Item<'_, '_>), Out: 'static,

§

type In = Input

§

type Out = Out

§

type Param = (F0, F1, F2, F3, F4, F5)

source§

impl<Input, Out, Func, F0, F1, F2, F3, F4, F5, F6> SystemParamFunction<fn(_: In<Input>, _: F0, _: F1, _: F2, _: F3, _: F4, _: F5, _: F6) -> Out> for Func
where Func: Send + Sync + 'static, F0: SystemParam, F1: SystemParam, F2: SystemParam, F3: SystemParam, F4: SystemParam, F5: SystemParam, F6: SystemParam, &'a mut Func: for<'a> FnMut(In<Input>, F0, F1, F2, F3, F4, F5, F6) -> Out + for<'a> FnMut(In<Input>, <F0 as SystemParam>::Item<'_, '_>, <F1 as SystemParam>::Item<'_, '_>, <F2 as SystemParam>::Item<'_, '_>, <F3 as SystemParam>::Item<'_, '_>, <F4 as SystemParam>::Item<'_, '_>, <F5 as SystemParam>::Item<'_, '_>, <F6 as SystemParam>::Item<'_, '_>), Out: 'static,

§

type In = Input

§

type Out = Out

§

type Param = (F0, F1, F2, F3, F4, F5, F6)

source§

impl<Input, Out, Func, F0, F1, F2, F3, F4, F5, F6, F7> SystemParamFunction<fn(_: In<Input>, _: F0, _: F1, _: F2, _: F3, _: F4, _: F5, _: F6, _: F7) -> Out> for Func
where Func: Send + Sync + 'static, F0: SystemParam, F1: SystemParam, F2: SystemParam, F3: SystemParam, F4: SystemParam, F5: SystemParam, F6: SystemParam, F7: SystemParam, &'a mut Func: for<'a> FnMut(In<Input>, F0, F1, F2, F3, F4, F5, F6, F7) -> Out + for<'a> FnMut(In<Input>, <F0 as SystemParam>::Item<'_, '_>, <F1 as SystemParam>::Item<'_, '_>, <F2 as SystemParam>::Item<'_, '_>, <F3 as SystemParam>::Item<'_, '_>, <F4 as SystemParam>::Item<'_, '_>, <F5 as SystemParam>::Item<'_, '_>, <F6 as SystemParam>::Item<'_, '_>, <F7 as SystemParam>::Item<'_, '_>), Out: 'static,

§

type In = Input

§

type Out = Out

§

type Param = (F0, F1, F2, F3, F4, F5, F6, F7)

source§

impl<Input, Out, Func, F0, F1, F2, F3, F4, F5, F6, F7, F8> SystemParamFunction<fn(_: In<Input>, _: F0, _: F1, _: F2, _: F3, _: F4, _: F5, _: F6, _: F7, _: F8) -> Out> for Func
where Func: Send + Sync + 'static, F0: SystemParam, F1: SystemParam, F2: SystemParam, F3: SystemParam, F4: SystemParam, F5: SystemParam, F6: SystemParam, F7: SystemParam, F8: SystemParam, &'a mut Func: for<'a> FnMut(In<Input>, F0, F1, F2, F3, F4, F5, F6, F7, F8) -> Out + for<'a> FnMut(In<Input>, <F0 as SystemParam>::Item<'_, '_>, <F1 as SystemParam>::Item<'_, '_>, <F2 as SystemParam>::Item<'_, '_>, <F3 as SystemParam>::Item<'_, '_>, <F4 as SystemParam>::Item<'_, '_>, <F5 as SystemParam>::Item<'_, '_>, <F6 as SystemParam>::Item<'_, '_>, <F7 as SystemParam>::Item<'_, '_>, <F8 as SystemParam>::Item<'_, '_>), Out: 'static,

source§

impl<Input, Out, Func, F0, F1, F2, F3, F4, F5, F6, F7, F8, F9> SystemParamFunction<fn(_: In<Input>, _: F0, _: F1, _: F2, _: F3, _: F4, _: F5, _: F6, _: F7, _: F8, _: F9) -> Out> for Func
where Func: Send + Sync + 'static, F0: SystemParam, F1: SystemParam, F2: SystemParam, F3: SystemParam, F4: SystemParam, F5: SystemParam, F6: SystemParam, F7: SystemParam, F8: SystemParam, F9: SystemParam, &'a mut Func: for<'a> FnMut(In<Input>, F0, F1, F2, F3, F4, F5, F6, F7, F8, F9) -> Out + for<'a> FnMut(In<Input>, <F0 as SystemParam>::Item<'_, '_>, <F1 as SystemParam>::Item<'_, '_>, <F2 as SystemParam>::Item<'_, '_>, <F3 as SystemParam>::Item<'_, '_>, <F4 as SystemParam>::Item<'_, '_>, <F5 as SystemParam>::Item<'_, '_>, <F6 as SystemParam>::Item<'_, '_>, <F7 as SystemParam>::Item<'_, '_>, <F8 as SystemParam>::Item<'_, '_>, <F9 as SystemParam>::Item<'_, '_>), Out: 'static,

source§

impl<Input, Out, Func, F0, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10> SystemParamFunction<fn(_: In<Input>, _: F0, _: F1, _: F2, _: F3, _: F4, _: F5, _: F6, _: F7, _: F8, _: F9, _: F10) -> Out> for Func
where Func: Send + Sync + 'static, F0: SystemParam, F1: SystemParam, F2: SystemParam, F3: SystemParam, F4: SystemParam, F5: SystemParam, F6: SystemParam, F7: SystemParam, F8: SystemParam, F9: SystemParam, F10: SystemParam, &'a mut Func: for<'a> FnMut(In<Input>, F0, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10) -> Out + for<'a> FnMut(In<Input>, <F0 as SystemParam>::Item<'_, '_>, <F1 as SystemParam>::Item<'_, '_>, <F2 as SystemParam>::Item<'_, '_>, <F3 as SystemParam>::Item<'_, '_>, <F4 as SystemParam>::Item<'_, '_>, <F5 as SystemParam>::Item<'_, '_>, <F6 as SystemParam>::Item<'_, '_>, <F7 as SystemParam>::Item<'_, '_>, <F8 as SystemParam>::Item<'_, '_>, <F9 as SystemParam>::Item<'_, '_>, <F10 as SystemParam>::Item<'_, '_>), Out: 'static,

source§

impl<Input, Out, Func, F0, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11> SystemParamFunction<fn(_: In<Input>, _: F0, _: F1, _: F2, _: F3, _: F4, _: F5, _: F6, _: F7, _: F8, _: F9, _: F10, _: F11) -> Out> for Func
where Func: Send + Sync + 'static, F0: SystemParam, F1: SystemParam, F2: SystemParam, F3: SystemParam, F4: SystemParam, F5: SystemParam, F6: SystemParam, F7: SystemParam, F8: SystemParam, F9: SystemParam, F10: SystemParam, F11: SystemParam, &'a mut Func: for<'a> FnMut(In<Input>, F0, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11) -> Out + for<'a> FnMut(In<Input>, <F0 as SystemParam>::Item<'_, '_>, <F1 as SystemParam>::Item<'_, '_>, <F2 as SystemParam>::Item<'_, '_>, <F3 as SystemParam>::Item<'_, '_>, <F4 as SystemParam>::Item<'_, '_>, <F5 as SystemParam>::Item<'_, '_>, <F6 as SystemParam>::Item<'_, '_>, <F7 as SystemParam>::Item<'_, '_>, <F8 as SystemParam>::Item<'_, '_>, <F9 as SystemParam>::Item<'_, '_>, <F10 as SystemParam>::Item<'_, '_>, <F11 as SystemParam>::Item<'_, '_>), Out: 'static,

source§

impl<Input, Out, Func, F0, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, F12> SystemParamFunction<fn(_: In<Input>, _: F0, _: F1, _: F2, _: F3, _: F4, _: F5, _: F6, _: F7, _: F8, _: F9, _: F10, _: F11, _: F12) -> Out> for Func
where Func: Send + Sync + 'static, F0: SystemParam, F1: SystemParam, F2: SystemParam, F3: SystemParam, F4: SystemParam, F5: SystemParam, F6: SystemParam, F7: SystemParam, F8: SystemParam, F9: SystemParam, F10: SystemParam, F11: SystemParam, F12: SystemParam, &'a mut Func: for<'a> FnMut(In<Input>, F0, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, F12) -> Out + for<'a> FnMut(In<Input>, <F0 as SystemParam>::Item<'_, '_>, <F1 as SystemParam>::Item<'_, '_>, <F2 as SystemParam>::Item<'_, '_>, <F3 as SystemParam>::Item<'_, '_>, <F4 as SystemParam>::Item<'_, '_>, <F5 as SystemParam>::Item<'_, '_>, <F6 as SystemParam>::Item<'_, '_>, <F7 as SystemParam>::Item<'_, '_>, <F8 as SystemParam>::Item<'_, '_>, <F9 as SystemParam>::Item<'_, '_>, <F10 as SystemParam>::Item<'_, '_>, <F11 as SystemParam>::Item<'_, '_>, <F12 as SystemParam>::Item<'_, '_>), Out: 'static,

source§

impl<Input, Out, Func, F0, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, F12, F13> SystemParamFunction<fn(_: In<Input>, _: F0, _: F1, _: F2, _: F3, _: F4, _: F5, _: F6, _: F7, _: F8, _: F9, _: F10, _: F11, _: F12, _: F13) -> Out> for Func
where Func: Send + Sync + 'static, F0: SystemParam, F1: SystemParam, F2: SystemParam, F3: SystemParam, F4: SystemParam, F5: SystemParam, F6: SystemParam, F7: SystemParam, F8: SystemParam, F9: SystemParam, F10: SystemParam, F11: SystemParam, F12: SystemParam, F13: SystemParam, &'a mut Func: for<'a> FnMut(In<Input>, F0, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, F12, F13) -> Out + for<'a> FnMut(In<Input>, <F0 as SystemParam>::Item<'_, '_>, <F1 as SystemParam>::Item<'_, '_>, <F2 as SystemParam>::Item<'_, '_>, <F3 as SystemParam>::Item<'_, '_>, <F4 as SystemParam>::Item<'_, '_>, <F5 as SystemParam>::Item<'_, '_>, <F6 as SystemParam>::Item<'_, '_>, <F7 as SystemParam>::Item<'_, '_>, <F8 as SystemParam>::Item<'_, '_>, <F9 as SystemParam>::Item<'_, '_>, <F10 as SystemParam>::Item<'_, '_>, <F11 as SystemParam>::Item<'_, '_>, <F12 as SystemParam>::Item<'_, '_>, <F13 as SystemParam>::Item<'_, '_>), Out: 'static,

source§

impl<Input, Out, Func, F0, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, F12, F13, F14> SystemParamFunction<fn(_: In<Input>, _: F0, _: F1, _: F2, _: F3, _: F4, _: F5, _: F6, _: F7, _: F8, _: F9, _: F10, _: F11, _: F12, _: F13, _: F14) -> Out> for Func
where Func: Send + Sync + 'static, F0: SystemParam, F1: SystemParam, F2: SystemParam, F3: SystemParam, F4: SystemParam, F5: SystemParam, F6: SystemParam, F7: SystemParam, F8: SystemParam, F9: SystemParam, F10: SystemParam, F11: SystemParam, F12: SystemParam, F13: SystemParam, F14: SystemParam, &'a mut Func: for<'a> FnMut(In<Input>, F0, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, F12, F13, F14) -> Out + for<'a> FnMut(In<Input>, <F0 as SystemParam>::Item<'_, '_>, <F1 as SystemParam>::Item<'_, '_>, <F2 as SystemParam>::Item<'_, '_>, <F3 as SystemParam>::Item<'_, '_>, <F4 as SystemParam>::Item<'_, '_>, <F5 as SystemParam>::Item<'_, '_>, <F6 as SystemParam>::Item<'_, '_>, <F7 as SystemParam>::Item<'_, '_>, <F8 as SystemParam>::Item<'_, '_>, <F9 as SystemParam>::Item<'_, '_>, <F10 as SystemParam>::Item<'_, '_>, <F11 as SystemParam>::Item<'_, '_>, <F12 as SystemParam>::Item<'_, '_>, <F13 as SystemParam>::Item<'_, '_>, <F14 as SystemParam>::Item<'_, '_>), Out: 'static,

source§

impl<Input, Out, Func, F0, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, F12, F13, F14, F15> SystemParamFunction<fn(_: In<Input>, _: F0, _: F1, _: F2, _: F3, _: F4, _: F5, _: F6, _: F7, _: F8, _: F9, _: F10, _: F11, _: F12, _: F13, _: F14, _: F15) -> Out> for Func
where Func: Send + Sync + 'static, F0: SystemParam, F1: SystemParam, F2: SystemParam, F3: SystemParam, F4: SystemParam, F5: SystemParam, F6: SystemParam, F7: SystemParam, F8: SystemParam, F9: SystemParam, F10: SystemParam, F11: SystemParam, F12: SystemParam, F13: SystemParam, F14: SystemParam, F15: SystemParam, &'a mut Func: for<'a> FnMut(In<Input>, F0, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, F12, F13, F14, F15) -> Out + for<'a> FnMut(In<Input>, <F0 as SystemParam>::Item<'_, '_>, <F1 as SystemParam>::Item<'_, '_>, <F2 as SystemParam>::Item<'_, '_>, <F3 as SystemParam>::Item<'_, '_>, <F4 as SystemParam>::Item<'_, '_>, <F5 as SystemParam>::Item<'_, '_>, <F6 as SystemParam>::Item<'_, '_>, <F7 as SystemParam>::Item<'_, '_>, <F8 as SystemParam>::Item<'_, '_>, <F9 as SystemParam>::Item<'_, '_>, <F10 as SystemParam>::Item<'_, '_>, <F11 as SystemParam>::Item<'_, '_>, <F12 as SystemParam>::Item<'_, '_>, <F13 as SystemParam>::Item<'_, '_>, <F14 as SystemParam>::Item<'_, '_>, <F15 as SystemParam>::Item<'_, '_>), Out: 'static,

source§

impl<Out, Func> SystemParamFunction<fn() -> Out> for Func
where Func: Send + Sync + 'static, &'a mut Func: for<'a> FnMut() -> Out + for<'a> FnMut(), Out: 'static,

§

type In = ()

§

type Out = Out

§

type Param = ()

source§

impl<Out, Func, F0> SystemParamFunction<fn(_: F0) -> Out> for Func
where Func: Send + Sync + 'static, F0: SystemParam, &'a mut Func: for<'a> FnMut(F0) -> Out + for<'a> FnMut(<F0 as SystemParam>::Item<'_, '_>), Out: 'static,

§

type In = ()

§

type Out = Out

§

type Param = (F0,)

source§

impl<Out, Func, F0, F1> SystemParamFunction<fn(_: F0, _: F1) -> Out> for Func
where Func: Send + Sync + 'static, F0: SystemParam, F1: SystemParam, &'a mut Func: for<'a> FnMut(F0, F1) -> Out + for<'a> FnMut(<F0 as SystemParam>::Item<'_, '_>, <F1 as SystemParam>::Item<'_, '_>), Out: 'static,

§

type In = ()

§

type Out = Out

§

type Param = (F0, F1)

source§

impl<Out, Func, F0, F1, F2> SystemParamFunction<fn(_: F0, _: F1, _: F2) -> Out> for Func
where Func: Send + Sync + 'static, F0: SystemParam, F1: SystemParam, F2: SystemParam, &'a mut Func: for<'a> FnMut(F0, F1, F2) -> Out + for<'a> FnMut(<F0 as SystemParam>::Item<'_, '_>, <F1 as SystemParam>::Item<'_, '_>, <F2 as SystemParam>::Item<'_, '_>), Out: 'static,

§

type In = ()

§

type Out = Out

§

type Param = (F0, F1, F2)

source§

impl<Out, Func, F0, F1, F2, F3> SystemParamFunction<fn(_: F0, _: F1, _: F2, _: F3) -> Out> for Func
where Func: Send + Sync + 'static, F0: SystemParam, F1: SystemParam, F2: SystemParam, F3: SystemParam, &'a mut Func: for<'a> FnMut(F0, F1, F2, F3) -> Out + for<'a> FnMut(<F0 as SystemParam>::Item<'_, '_>, <F1 as SystemParam>::Item<'_, '_>, <F2 as SystemParam>::Item<'_, '_>, <F3 as SystemParam>::Item<'_, '_>), Out: 'static,

§

type In = ()

§

type Out = Out

§

type Param = (F0, F1, F2, F3)

source§

impl<Out, Func, F0, F1, F2, F3, F4> SystemParamFunction<fn(_: F0, _: F1, _: F2, _: F3, _: F4) -> Out> for Func
where Func: Send + Sync + 'static, F0: SystemParam, F1: SystemParam, F2: SystemParam, F3: SystemParam, F4: SystemParam, &'a mut Func: for<'a> FnMut(F0, F1, F2, F3, F4) -> Out + for<'a> FnMut(<F0 as SystemParam>::Item<'_, '_>, <F1 as SystemParam>::Item<'_, '_>, <F2 as SystemParam>::Item<'_, '_>, <F3 as SystemParam>::Item<'_, '_>, <F4 as SystemParam>::Item<'_, '_>), Out: 'static,

§

type In = ()

§

type Out = Out

§

type Param = (F0, F1, F2, F3, F4)

source§

impl<Out, Func, F0, F1, F2, F3, F4, F5> SystemParamFunction<fn(_: F0, _: F1, _: F2, _: F3, _: F4, _: F5) -> Out> for Func
where Func: Send + Sync + 'static, F0: SystemParam, F1: SystemParam, F2: SystemParam, F3: SystemParam, F4: SystemParam, F5: SystemParam, &'a mut Func: for<'a> FnMut(F0, F1, F2, F3, F4, F5) -> Out + for<'a> FnMut(<F0 as SystemParam>::Item<'_, '_>, <F1 as SystemParam>::Item<'_, '_>, <F2 as SystemParam>::Item<'_, '_>, <F3 as SystemParam>::Item<'_, '_>, <F4 as SystemParam>::Item<'_, '_>, <F5 as SystemParam>::Item<'_, '_>), Out: 'static,

source§

impl<Out, Func, F0, F1, F2, F3, F4, F5, F6> SystemParamFunction<fn(_: F0, _: F1, _: F2, _: F3, _: F4, _: F5, _: F6) -> Out> for Func
where Func: Send + Sync + 'static, F0: SystemParam, F1: SystemParam, F2: SystemParam, F3: SystemParam, F4: SystemParam, F5: SystemParam, F6: SystemParam, &'a mut Func: for<'a> FnMut(F0, F1, F2, F3, F4, F5, F6) -> Out + for<'a> FnMut(<F0 as SystemParam>::Item<'_, '_>, <F1 as SystemParam>::Item<'_, '_>, <F2 as SystemParam>::Item<'_, '_>, <F3 as SystemParam>::Item<'_, '_>, <F4 as SystemParam>::Item<'_, '_>, <F5 as SystemParam>::Item<'_, '_>, <F6 as SystemParam>::Item<'_, '_>), Out: 'static,

source§

impl<Out, Func, F0, F1, F2, F3, F4, F5, F6, F7> SystemParamFunction<fn(_: F0, _: F1, _: F2, _: F3, _: F4, _: F5, _: F6, _: F7) -> Out> for Func
where Func: Send + Sync + 'static, F0: SystemParam, F1: SystemParam, F2: SystemParam, F3: SystemParam, F4: SystemParam, F5: SystemParam, F6: SystemParam, F7: SystemParam, &'a mut Func: for<'a> FnMut(F0, F1, F2, F3, F4, F5, F6, F7) -> Out + for<'a> FnMut(<F0 as SystemParam>::Item<'_, '_>, <F1 as SystemParam>::Item<'_, '_>, <F2 as SystemParam>::Item<'_, '_>, <F3 as SystemParam>::Item<'_, '_>, <F4 as SystemParam>::Item<'_, '_>, <F5 as SystemParam>::Item<'_, '_>, <F6 as SystemParam>::Item<'_, '_>, <F7 as SystemParam>::Item<'_, '_>), Out: 'static,

source§

impl<Out, Func, F0, F1, F2, F3, F4, F5, F6, F7, F8> SystemParamFunction<fn(_: F0, _: F1, _: F2, _: F3, _: F4, _: F5, _: F6, _: F7, _: F8) -> Out> for Func
where Func: Send + Sync + 'static, F0: SystemParam, F1: SystemParam, F2: SystemParam, F3: SystemParam, F4: SystemParam, F5: SystemParam, F6: SystemParam, F7: SystemParam, F8: SystemParam, &'a mut Func: for<'a> FnMut(F0, F1, F2, F3, F4, F5, F6, F7, F8) -> Out + for<'a> FnMut(<F0 as SystemParam>::Item<'_, '_>, <F1 as SystemParam>::Item<'_, '_>, <F2 as SystemParam>::Item<'_, '_>, <F3 as SystemParam>::Item<'_, '_>, <F4 as SystemParam>::Item<'_, '_>, <F5 as SystemParam>::Item<'_, '_>, <F6 as SystemParam>::Item<'_, '_>, <F7 as SystemParam>::Item<'_, '_>, <F8 as SystemParam>::Item<'_, '_>), Out: 'static,

source§

impl<Out, Func, F0, F1, F2, F3, F4, F5, F6, F7, F8, F9> SystemParamFunction<fn(_: F0, _: F1, _: F2, _: F3, _: F4, _: F5, _: F6, _: F7, _: F8, _: F9) -> Out> for Func
where Func: Send + Sync + 'static, F0: SystemParam, F1: SystemParam, F2: SystemParam, F3: SystemParam, F4: SystemParam, F5: SystemParam, F6: SystemParam, F7: SystemParam, F8: SystemParam, F9: SystemParam, &'a mut Func: for<'a> FnMut(F0, F1, F2, F3, F4, F5, F6, F7, F8, F9) -> Out + for<'a> FnMut(<F0 as SystemParam>::Item<'_, '_>, <F1 as SystemParam>::Item<'_, '_>, <F2 as SystemParam>::Item<'_, '_>, <F3 as SystemParam>::Item<'_, '_>, <F4 as SystemParam>::Item<'_, '_>, <F5 as SystemParam>::Item<'_, '_>, <F6 as SystemParam>::Item<'_, '_>, <F7 as SystemParam>::Item<'_, '_>, <F8 as SystemParam>::Item<'_, '_>, <F9 as SystemParam>::Item<'_, '_>), Out: 'static,

source§

impl<Out, Func, F0, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10> SystemParamFunction<fn(_: F0, _: F1, _: F2, _: F3, _: F4, _: F5, _: F6, _: F7, _: F8, _: F9, _: F10) -> Out> for Func
where Func: Send + Sync + 'static, F0: SystemParam, F1: SystemParam, F2: SystemParam, F3: SystemParam, F4: SystemParam, F5: SystemParam, F6: SystemParam, F7: SystemParam, F8: SystemParam, F9: SystemParam, F10: SystemParam, &'a mut Func: for<'a> FnMut(F0, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10) -> Out + for<'a> FnMut(<F0 as SystemParam>::Item<'_, '_>, <F1 as SystemParam>::Item<'_, '_>, <F2 as SystemParam>::Item<'_, '_>, <F3 as SystemParam>::Item<'_, '_>, <F4 as SystemParam>::Item<'_, '_>, <F5 as SystemParam>::Item<'_, '_>, <F6 as SystemParam>::Item<'_, '_>, <F7 as SystemParam>::Item<'_, '_>, <F8 as SystemParam>::Item<'_, '_>, <F9 as SystemParam>::Item<'_, '_>, <F10 as SystemParam>::Item<'_, '_>), Out: 'static,

source§

impl<Out, Func, F0, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11> SystemParamFunction<fn(_: F0, _: F1, _: F2, _: F3, _: F4, _: F5, _: F6, _: F7, _: F8, _: F9, _: F10, _: F11) -> Out> for Func
where Func: Send + Sync + 'static, F0: SystemParam, F1: SystemParam, F2: SystemParam, F3: SystemParam, F4: SystemParam, F5: SystemParam, F6: SystemParam, F7: SystemParam, F8: SystemParam, F9: SystemParam, F10: SystemParam, F11: SystemParam, &'a mut Func: for<'a> FnMut(F0, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11) -> Out + for<'a> FnMut(<F0 as SystemParam>::Item<'_, '_>, <F1 as SystemParam>::Item<'_, '_>, <F2 as SystemParam>::Item<'_, '_>, <F3 as SystemParam>::Item<'_, '_>, <F4 as SystemParam>::Item<'_, '_>, <F5 as SystemParam>::Item<'_, '_>, <F6 as SystemParam>::Item<'_, '_>, <F7 as SystemParam>::Item<'_, '_>, <F8 as SystemParam>::Item<'_, '_>, <F9 as SystemParam>::Item<'_, '_>, <F10 as SystemParam>::Item<'_, '_>, <F11 as SystemParam>::Item<'_, '_>), Out: 'static,

source§

impl<Out, Func, F0, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, F12> SystemParamFunction<fn(_: F0, _: F1, _: F2, _: F3, _: F4, _: F5, _: F6, _: F7, _: F8, _: F9, _: F10, _: F11, _: F12) -> Out> for Func
where Func: Send + Sync + 'static, F0: SystemParam, F1: SystemParam, F2: SystemParam, F3: SystemParam, F4: SystemParam, F5: SystemParam, F6: SystemParam, F7: SystemParam, F8: SystemParam, F9: SystemParam, F10: SystemParam, F11: SystemParam, F12: SystemParam, &'a mut Func: for<'a> FnMut(F0, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, F12) -> Out + for<'a> FnMut(<F0 as SystemParam>::Item<'_, '_>, <F1 as SystemParam>::Item<'_, '_>, <F2 as SystemParam>::Item<'_, '_>, <F3 as SystemParam>::Item<'_, '_>, <F4 as SystemParam>::Item<'_, '_>, <F5 as SystemParam>::Item<'_, '_>, <F6 as SystemParam>::Item<'_, '_>, <F7 as SystemParam>::Item<'_, '_>, <F8 as SystemParam>::Item<'_, '_>, <F9 as SystemParam>::Item<'_, '_>, <F10 as SystemParam>::Item<'_, '_>, <F11 as SystemParam>::Item<'_, '_>, <F12 as SystemParam>::Item<'_, '_>), Out: 'static,

source§

impl<Out, Func, F0, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, F12, F13> SystemParamFunction<fn(_: F0, _: F1, _: F2, _: F3, _: F4, _: F5, _: F6, _: F7, _: F8, _: F9, _: F10, _: F11, _: F12, _: F13) -> Out> for Func
where Func: Send + Sync + 'static, F0: SystemParam, F1: SystemParam, F2: SystemParam, F3: SystemParam, F4: SystemParam, F5: SystemParam, F6: SystemParam, F7: SystemParam, F8: SystemParam, F9: SystemParam, F10: SystemParam, F11: SystemParam, F12: SystemParam, F13: SystemParam, &'a mut Func: for<'a> FnMut(F0, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, F12, F13) -> Out + for<'a> FnMut(<F0 as SystemParam>::Item<'_, '_>, <F1 as SystemParam>::Item<'_, '_>, <F2 as SystemParam>::Item<'_, '_>, <F3 as SystemParam>::Item<'_, '_>, <F4 as SystemParam>::Item<'_, '_>, <F5 as SystemParam>::Item<'_, '_>, <F6 as SystemParam>::Item<'_, '_>, <F7 as SystemParam>::Item<'_, '_>, <F8 as SystemParam>::Item<'_, '_>, <F9 as SystemParam>::Item<'_, '_>, <F10 as SystemParam>::Item<'_, '_>, <F11 as SystemParam>::Item<'_, '_>, <F12 as SystemParam>::Item<'_, '_>, <F13 as SystemParam>::Item<'_, '_>), Out: 'static,

source§

impl<Out, Func, F0, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, F12, F13, F14> SystemParamFunction<fn(_: F0, _: F1, _: F2, _: F3, _: F4, _: F5, _: F6, _: F7, _: F8, _: F9, _: F10, _: F11, _: F12, _: F13, _: F14) -> Out> for Func
where Func: Send + Sync + 'static, F0: SystemParam, F1: SystemParam, F2: SystemParam, F3: SystemParam, F4: SystemParam, F5: SystemParam, F6: SystemParam, F7: SystemParam, F8: SystemParam, F9: SystemParam, F10: SystemParam, F11: SystemParam, F12: SystemParam, F13: SystemParam, F14: SystemParam, &'a mut Func: for<'a> FnMut(F0, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, F12, F13, F14) -> Out + for<'a> FnMut(<F0 as SystemParam>::Item<'_, '_>, <F1 as SystemParam>::Item<'_, '_>, <F2 as SystemParam>::Item<'_, '_>, <F3 as SystemParam>::Item<'_, '_>, <F4 as SystemParam>::Item<'_, '_>, <F5 as SystemParam>::Item<'_, '_>, <F6 as SystemParam>::Item<'_, '_>, <F7 as SystemParam>::Item<'_, '_>, <F8 as SystemParam>::Item<'_, '_>, <F9 as SystemParam>::Item<'_, '_>, <F10 as SystemParam>::Item<'_, '_>, <F11 as SystemParam>::Item<'_, '_>, <F12 as SystemParam>::Item<'_, '_>, <F13 as SystemParam>::Item<'_, '_>, <F14 as SystemParam>::Item<'_, '_>), Out: 'static,

source§

impl<Out, Func, F0, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, F12, F13, F14, F15> SystemParamFunction<fn(_: F0, _: F1, _: F2, _: F3, _: F4, _: F5, _: F6, _: F7, _: F8, _: F9, _: F10, _: F11, _: F12, _: F13, _: F14, _: F15) -> Out> for Func
where Func: Send + Sync + 'static, F0: SystemParam, F1: SystemParam, F2: SystemParam, F3: SystemParam, F4: SystemParam, F5: SystemParam, F6: SystemParam, F7: SystemParam, F8: SystemParam, F9: SystemParam, F10: SystemParam, F11: SystemParam, F12: SystemParam, F13: SystemParam, F14: SystemParam, F15: SystemParam, &'a mut Func: for<'a> FnMut(F0, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, F12, F13, F14, F15) -> Out + for<'a> FnMut(<F0 as SystemParam>::Item<'_, '_>, <F1 as SystemParam>::Item<'_, '_>, <F2 as SystemParam>::Item<'_, '_>, <F3 as SystemParam>::Item<'_, '_>, <F4 as SystemParam>::Item<'_, '_>, <F5 as SystemParam>::Item<'_, '_>, <F6 as SystemParam>::Item<'_, '_>, <F7 as SystemParam>::Item<'_, '_>, <F8 as SystemParam>::Item<'_, '_>, <F9 as SystemParam>::Item<'_, '_>, <F10 as SystemParam>::Item<'_, '_>, <F11 as SystemParam>::Item<'_, '_>, <F12 as SystemParam>::Item<'_, '_>, <F13 as SystemParam>::Item<'_, '_>, <F14 as SystemParam>::Item<'_, '_>, <F15 as SystemParam>::Item<'_, '_>), Out: 'static,