bevy_ecs::system

Struct ParamSetBuilder

Source
pub struct ParamSetBuilder<T>(pub T);
Expand description

A SystemParamBuilder for a ParamSet.

To build a ParamSet with a tuple of system parameters, pass a tuple of matching SystemParamBuilders. To build a ParamSet with a Vec of system parameters, pass a Vec of matching SystemParamBuilders.

§Examples

let system = (ParamSetBuilder((
    QueryParamBuilder::new(|builder| {
        builder.with::<Enemy>();
    }),
    QueryParamBuilder::new(|builder| {
        builder.with::<Ally>();
    }),
    ParamBuilder,
)),)
    .build_state(&mut world)
    .build_system(buildable_system_with_tuple);

fn buildable_system_with_tuple(
    mut set: ParamSet<(Query<&mut Health>, Query<&mut Health>, &World)>,
) {
    // The first parameter is built from the first builder,
    // so this will iterate over enemies.
    for mut health in set.p0().iter_mut() {}
    // And the second parameter is built from the second builder,
    // so this will iterate over allies.
    for mut health in set.p1().iter_mut() {}
    // Parameters that don't need special building can use `ParamBuilder`.
    let entities = set.p2().entities();
}

let system = (ParamSetBuilder(vec![
    QueryParamBuilder::new_box(|builder| {
        builder.with::<Enemy>();
    }),
    QueryParamBuilder::new_box(|builder| {
        builder.with::<Ally>();
    }),
]),)
    .build_state(&mut world)
    .build_system(buildable_system_with_vec);

fn buildable_system_with_vec(mut set: ParamSet<Vec<Query<&mut Health>>>) {
    // As with tuples, the first parameter is built from the first builder,
    // so this will iterate over enemies.
    for mut health in set.get_mut(0).iter_mut() {}
    // And the second parameter is built from the second builder,
    // so this will iterate over allies.
    for mut health in set.get_mut(1).iter_mut() {}
    // You can iterate over the parameters either by index,
    // or using the `for_each` method.
    set.for_each(|mut query| for mut health in query.iter_mut() {});
}

Tuple Fields§

§0: T

Trait Implementations§

Source§

impl<'w, 's, P0: SystemParam, B0: SystemParamBuilder<P0>> SystemParamBuilder<ParamSet<'w, 's, (P0,)>> for ParamSetBuilder<(B0,)>

Source§

fn build( self, _world: &mut World, _system_meta: &mut SystemMeta, ) -> <(P0,) as SystemParam>::State

Registers any World access used by this SystemParam and creates a new instance of this param’s State.
Source§

fn build_state(self, world: &mut World) -> SystemState<P>

Create a SystemState from a SystemParamBuilder. To create a system, call SystemState::build_system on the result.
Source§

impl<'w, 's, P0: SystemParam, P1: SystemParam, B0: SystemParamBuilder<P0>, B1: SystemParamBuilder<P1>> SystemParamBuilder<ParamSet<'w, 's, (P0, P1)>> for ParamSetBuilder<(B0, B1)>

Source§

fn build( self, _world: &mut World, _system_meta: &mut SystemMeta, ) -> <(P0, P1) as SystemParam>::State

Registers any World access used by this SystemParam and creates a new instance of this param’s State.
Source§

fn build_state(self, world: &mut World) -> SystemState<P>

Create a SystemState from a SystemParamBuilder. To create a system, call SystemState::build_system on the result.
Source§

impl<'w, 's, P0: SystemParam, P1: SystemParam, P2: SystemParam, B0: SystemParamBuilder<P0>, B1: SystemParamBuilder<P1>, B2: SystemParamBuilder<P2>> SystemParamBuilder<ParamSet<'w, 's, (P0, P1, P2)>> for ParamSetBuilder<(B0, B1, B2)>

Source§

fn build( self, _world: &mut World, _system_meta: &mut SystemMeta, ) -> <(P0, P1, P2) as SystemParam>::State

Registers any World access used by this SystemParam and creates a new instance of this param’s State.
Source§

fn build_state(self, world: &mut World) -> SystemState<P>

Create a SystemState from a SystemParamBuilder. To create a system, call SystemState::build_system on the result.
Source§

impl<'w, 's, P0: SystemParam, P1: SystemParam, P2: SystemParam, P3: SystemParam, B0: SystemParamBuilder<P0>, B1: SystemParamBuilder<P1>, B2: SystemParamBuilder<P2>, B3: SystemParamBuilder<P3>> SystemParamBuilder<ParamSet<'w, 's, (P0, P1, P2, P3)>> for ParamSetBuilder<(B0, B1, B2, B3)>

Source§

fn build( self, _world: &mut World, _system_meta: &mut SystemMeta, ) -> <(P0, P1, P2, P3) as SystemParam>::State

Registers any World access used by this SystemParam and creates a new instance of this param’s State.
Source§

fn build_state(self, world: &mut World) -> SystemState<P>

Create a SystemState from a SystemParamBuilder. To create a system, call SystemState::build_system on the result.
Source§

impl<'w, 's, P0: SystemParam, P1: SystemParam, P2: SystemParam, P3: SystemParam, P4: SystemParam, B0: SystemParamBuilder<P0>, B1: SystemParamBuilder<P1>, B2: SystemParamBuilder<P2>, B3: SystemParamBuilder<P3>, B4: SystemParamBuilder<P4>> SystemParamBuilder<ParamSet<'w, 's, (P0, P1, P2, P3, P4)>> for ParamSetBuilder<(B0, B1, B2, B3, B4)>

Source§

fn build( self, _world: &mut World, _system_meta: &mut SystemMeta, ) -> <(P0, P1, P2, P3, P4) as SystemParam>::State

Registers any World access used by this SystemParam and creates a new instance of this param’s State.
Source§

fn build_state(self, world: &mut World) -> SystemState<P>

Create a SystemState from a SystemParamBuilder. To create a system, call SystemState::build_system on the result.
Source§

impl<'w, 's, P0: SystemParam, P1: SystemParam, P2: SystemParam, P3: SystemParam, P4: SystemParam, P5: SystemParam, B0: SystemParamBuilder<P0>, B1: SystemParamBuilder<P1>, B2: SystemParamBuilder<P2>, B3: SystemParamBuilder<P3>, B4: SystemParamBuilder<P4>, B5: SystemParamBuilder<P5>> SystemParamBuilder<ParamSet<'w, 's, (P0, P1, P2, P3, P4, P5)>> for ParamSetBuilder<(B0, B1, B2, B3, B4, B5)>

Source§

fn build( self, _world: &mut World, _system_meta: &mut SystemMeta, ) -> <(P0, P1, P2, P3, P4, P5) as SystemParam>::State

Registers any World access used by this SystemParam and creates a new instance of this param’s State.
Source§

fn build_state(self, world: &mut World) -> SystemState<P>

Create a SystemState from a SystemParamBuilder. To create a system, call SystemState::build_system on the result.
Source§

impl<'w, 's, P0: SystemParam, P1: SystemParam, P2: SystemParam, P3: SystemParam, P4: SystemParam, P5: SystemParam, P6: SystemParam, B0: SystemParamBuilder<P0>, B1: SystemParamBuilder<P1>, B2: SystemParamBuilder<P2>, B3: SystemParamBuilder<P3>, B4: SystemParamBuilder<P4>, B5: SystemParamBuilder<P5>, B6: SystemParamBuilder<P6>> SystemParamBuilder<ParamSet<'w, 's, (P0, P1, P2, P3, P4, P5, P6)>> for ParamSetBuilder<(B0, B1, B2, B3, B4, B5, B6)>

Source§

fn build( self, _world: &mut World, _system_meta: &mut SystemMeta, ) -> <(P0, P1, P2, P3, P4, P5, P6) as SystemParam>::State

Registers any World access used by this SystemParam and creates a new instance of this param’s State.
Source§

fn build_state(self, world: &mut World) -> SystemState<P>

Create a SystemState from a SystemParamBuilder. To create a system, call SystemState::build_system on the result.
Source§

impl<'w, 's, P0: SystemParam, P1: SystemParam, P2: SystemParam, P3: SystemParam, P4: SystemParam, P5: SystemParam, P6: SystemParam, P7: SystemParam, B0: SystemParamBuilder<P0>, B1: SystemParamBuilder<P1>, B2: SystemParamBuilder<P2>, B3: SystemParamBuilder<P3>, B4: SystemParamBuilder<P4>, B5: SystemParamBuilder<P5>, B6: SystemParamBuilder<P6>, B7: SystemParamBuilder<P7>> SystemParamBuilder<ParamSet<'w, 's, (P0, P1, P2, P3, P4, P5, P6, P7)>> for ParamSetBuilder<(B0, B1, B2, B3, B4, B5, B6, B7)>

Source§

fn build( self, _world: &mut World, _system_meta: &mut SystemMeta, ) -> <(P0, P1, P2, P3, P4, P5, P6, P7) as SystemParam>::State

Registers any World access used by this SystemParam and creates a new instance of this param’s State.
Source§

fn build_state(self, world: &mut World) -> SystemState<P>

Create a SystemState from a SystemParamBuilder. To create a system, call SystemState::build_system on the result.
Source§

impl<'w, 's, P: SystemParam, B: SystemParamBuilder<P>> SystemParamBuilder<ParamSet<'w, 's, Vec<P>>> for ParamSetBuilder<Vec<B>>

Source§

fn build( self, world: &mut World, system_meta: &mut SystemMeta, ) -> <Vec<P> as SystemParam>::State

Registers any World access used by this SystemParam and creates a new instance of this param’s State.
Source§

fn build_state(self, world: &mut World) -> SystemState<P>

Create a SystemState from a SystemParamBuilder. To create a system, call SystemState::build_system on the result.

Auto Trait Implementations§

§

impl<T> Freeze for ParamSetBuilder<T>
where T: Freeze,

§

impl<T> RefUnwindSafe for ParamSetBuilder<T>
where T: RefUnwindSafe,

§

impl<T> Send for ParamSetBuilder<T>
where T: Send,

§

impl<T> Sync for ParamSetBuilder<T>
where T: Sync,

§

impl<T> Unpin for ParamSetBuilder<T>
where T: Unpin,

§

impl<T> UnwindSafe for ParamSetBuilder<T>
where T: UnwindSafe,

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> Downcast for T
where T: Any,

Source§

fn into_any(self: Box<T>) -> Box<dyn Any>

Convert Box<dyn Trait> (where Trait: Downcast) to Box<dyn Any>. Box<dyn Any> can then be further downcast into Box<ConcreteType> where ConcreteType implements Trait.
Source§

fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>

Convert Rc<Trait> (where Trait: Downcast) to Rc<Any>. Rc<Any> can then be further downcast into Rc<ConcreteType> where ConcreteType implements Trait.
Source§

fn as_any(&self) -> &(dyn Any + 'static)

Convert &Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot generate &Any’s vtable from &Trait’s.
Source§

fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)

Convert &mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot generate &mut Any’s vtable from &mut Trait’s.
Source§

impl<T> DowncastSync for T
where T: Any + Send + Sync,

Source§

fn into_any_arc(self: Arc<T>) -> Arc<dyn Any + Sync + Send>

Convert Arc<Trait> (where Trait: Downcast) to Arc<Any>. Arc<Any> can then be further downcast into Arc<ConcreteType> where ConcreteType implements Trait.
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

fn vzip(self) -> V

Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

impl<T> ConditionalSend for T
where T: Send,