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 SystemParamBuilder
s.
To build a ParamSet
with a Vec
of system parameters, pass a Vec
of matching SystemParamBuilder
s.
§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,)>
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
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>
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)>
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
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>
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)>
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
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>
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)>
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
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>
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)>
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
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>
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)>
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
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>
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)>
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
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>
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)>
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
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>
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>>
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 ⓘ
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>
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> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
Source§impl<T> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
Source§fn into_any(self: Box<T>) -> Box<dyn Any>
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>
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)
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)
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.