pub struct Chain { /* private fields */ }Implementations§
Source§impl Chain
impl Chain
Sourcepub fn new(commands: impl IntoIterator<Item = LocalCommand>) -> Self
pub fn new(commands: impl IntoIterator<Item = LocalCommand>) -> Self
Examples found in repository?
examples/simple_chain.rs (lines 17-21)
14fn setup(mut commands: Commands) {
15 // Create a chain of commands
16 #[cfg(not(windows))]
17 let chain = Chain::new(vec![
18 LocalCommand::new("sh").args(["-c", "echo 'First command' && sleep 1"]),
19 LocalCommand::new("sh").args(["-c", "echo 'Second command' && sleep 1"]),
20 LocalCommand::new("sh").args(["-c", "echo 'Third command' && sleep 1"]),
21 ]);
22 #[cfg(windows)]
23 let chain = Chain::new(vec![
24 LocalCommand::new("powershell").args(["echo 'First command' && sleep 1"]),
25 LocalCommand::new("powershell").args(["echo 'Second command' && sleep 1"]),
26 LocalCommand::new("powershell").args(["echo 'Third command' && sleep 1"]),
27 ]);
28
29 // Spawn an entity with the Chain component
30 let id = commands.spawn(chain).id();
31 println!("Spawned the chain as entity {id:?}");
32}More examples
examples/chain_failure_delay_retries.rs (lines 20-24)
17fn setup(mut commands: Commands) {
18 // Spawn an entity with the relevant components
19 #[cfg(not(windows))]
20 let chain = Chain::new(vec![
21 LocalCommand::new("sh").args(["-c", "echo 'First command'"]),
22 LocalCommand::new("sh").args(["-c", "exit 1"]), // Failure
23 LocalCommand::new("sh").args(["-c", "echo 'Third command'"]),
24 ]);
25 #[cfg(windows)]
26 let chain = Chain::new(vec![
27 LocalCommand::new("powershell").args(["echo 'First command'"]),
28 LocalCommand::new("powershell").args(["exit 1"]), // Failure
29 LocalCommand::new("powershell").args(["echo 'Third command'"]),
30 ]);
31 let id = commands
32 .spawn((
33 chain,
34 Retry::Attempts(2),
35 Delay::Fixed(Duration::from_secs(2)),
36 ))
37 .id();
38 println!("Spawned the chain as entity {id:?}");
39}examples/chain_retries_delay_cleanup.rs (lines 20-24)
17fn setup(mut commands: Commands) {
18 // Spawn a entity with all addons
19 #[cfg(not(windows))]
20 let chain = Chain::new(vec![
21 LocalCommand::new("sh").args(["-c", "echo 'First command'"]),
22 LocalCommand::new("sh").args(["-c", "echo 'Second command'"]),
23 LocalCommand::new("sh").args(["-c", "echo 'Third command'"]),
24 ]);
25 #[cfg(windows)]
26 let chain = Chain::new(vec![
27 LocalCommand::new("powershell").args(["echo 'First command'"]),
28 LocalCommand::new("powershell").args(["echo 'Second command'"]),
29 LocalCommand::new("powershell").args(["echo 'Third command'"]),
30 ]);
31 let id = commands
32 .spawn((
33 chain,
34 Retry::Attempts(2),
35 Delay::Fixed(Duration::from_secs(3)),
36 Cleanup::RemoveComponents,
37 ))
38 .id();
39 println!("Spawned as entity {id:?}");
40}examples/chain_failure.rs (lines 17-23)
14fn setup(mut commands: Commands) {
15 // Create a chain of commands
16 #[cfg(not(windows))]
17 let chain = Chain::new(vec![
18 LocalCommand::new("sh").args(["-c", "echo 'First command' && sleep 1"]),
19 LocalCommand::new("commanddoesnotexist").args(["this should fail"]), // Failure
20 LocalCommand::new("sh").args(["-c", "echo 'Third command' && sleep 1"]),
21 // Same result with a failed running command
22 //LocalCommand::new("sh").args(["-c", "exit 1"]), // Failure
23 ]);
24 #[cfg(windows)]
25 let chain = Chain::new(vec![
26 LocalCommand::new("powershell").args(["echo 'First command' && sleep 1"]),
27 LocalCommand::new("commanddoesnotexist").args(["this should fail"]), // Failure
28 LocalCommand::new("powershell").args(["echo 'Third command' && sleep 1"]),
29 // Same result with a failed running command
30 //LocalCommand::new("powershell").args(["exit 1"]), // Failure
31 ]);
32
33 // Spawn an entity with the Chain component
34 let id = commands.spawn(chain).id();
35 println!("Spawned the chain as entity {id:?}");
36}Trait Implementations§
Source§impl Component for Chain
impl Component for Chain
Source§const STORAGE_TYPE: StorageType = ::bevy::ecs::component::StorageType::Table
const STORAGE_TYPE: StorageType = ::bevy::ecs::component::StorageType::Table
A constant indicating the storage type used for this component.
Source§type Mutability = Mutable
type Mutability = Mutable
A marker type to assist Bevy with determining if this component is
mutable, or immutable. Mutable components will have
Component<Mutability = Mutable>,
while immutable components will instead have Component<Mutability = Immutable>. Read moreSource§fn register_required_components(
_requiree: ComponentId,
required_components: &mut RequiredComponentsRegistrator<'_, '_>,
)
fn register_required_components( _requiree: ComponentId, required_components: &mut RequiredComponentsRegistrator<'_, '_>, )
Registers required components. Read more
Source§fn clone_behavior() -> ComponentCloneBehavior
fn clone_behavior() -> ComponentCloneBehavior
Called when registering this component, allowing to override clone function (or disable cloning altogether) for this component. Read more
Source§fn on_add() -> Option<for<'w> fn(DeferredWorld<'w>, HookContext)>
fn on_add() -> Option<for<'w> fn(DeferredWorld<'w>, HookContext)>
Source§fn on_insert() -> Option<for<'w> fn(DeferredWorld<'w>, HookContext)>
fn on_insert() -> Option<for<'w> fn(DeferredWorld<'w>, HookContext)>
Source§fn on_replace() -> Option<for<'w> fn(DeferredWorld<'w>, HookContext)>
fn on_replace() -> Option<for<'w> fn(DeferredWorld<'w>, HookContext)>
Source§fn on_remove() -> Option<for<'w> fn(DeferredWorld<'w>, HookContext)>
fn on_remove() -> Option<for<'w> fn(DeferredWorld<'w>, HookContext)>
Source§fn on_despawn() -> Option<for<'w> fn(DeferredWorld<'w>, HookContext)>
fn on_despawn() -> Option<for<'w> fn(DeferredWorld<'w>, HookContext)>
Source§fn map_entities<E>(_this: &mut Self, _mapper: &mut E)where
E: EntityMapper,
fn map_entities<E>(_this: &mut Self, _mapper: &mut E)where
E: EntityMapper,
Maps the entities on this component using the given
EntityMapper. This is used to remap entities in contexts like scenes and entity cloning.
When deriving Component, this is populated by annotating fields containing entities with #[entities] Read moreAuto Trait Implementations§
impl Freeze for Chain
impl !RefUnwindSafe for Chain
impl Send for Chain
impl Sync for Chain
impl Unpin for Chain
impl !UnwindSafe for Chain
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<C> Bundle for Cwhere
C: Component,
impl<C> Bundle for Cwhere
C: Component,
fn component_ids( components: &mut ComponentsRegistrator<'_>, ids: &mut impl FnMut(ComponentId), )
Source§fn get_component_ids(
components: &Components,
ids: &mut impl FnMut(Option<ComponentId>),
)
fn get_component_ids( components: &Components, ids: &mut impl FnMut(Option<ComponentId>), )
Source§impl<C> BundleFromComponents for Cwhere
C: Component,
impl<C> BundleFromComponents for Cwhere
C: Component,
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>
Converts
Box<dyn Trait> (where Trait: Downcast) to Box<dyn Any>, which can then be
downcast into Box<dyn 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>
Converts
Rc<Trait> (where Trait: Downcast) to Rc<Any>, which 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)
Converts
&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)
Converts
&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> DowncastSend for T
impl<T> DowncastSend for T
Source§impl<C> DynamicBundle for Cwhere
C: Component,
impl<C> DynamicBundle for Cwhere
C: Component,
Source§unsafe fn get_components(
ptr: MovingPtr<'_, C>,
func: &mut impl FnMut(StorageType, OwningPtr<'_>),
) -> <C as DynamicBundle>::Effect
unsafe fn get_components( ptr: MovingPtr<'_, C>, func: &mut impl FnMut(StorageType, OwningPtr<'_>), ) -> <C as DynamicBundle>::Effect
Moves the components out of the bundle. Read more
Source§unsafe fn apply_effect(
_ptr: MovingPtr<'_, MaybeUninit<C>>,
_entity: &mut EntityWorldMut<'_>,
)
unsafe fn apply_effect( _ptr: MovingPtr<'_, MaybeUninit<C>>, _entity: &mut EntityWorldMut<'_>, )
Applies the after-effects of spawning this bundle. Read more
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§impl<T> IntoResult<T> for T
impl<T> IntoResult<T> for T
Source§fn into_result(self) -> Result<T, RunSystemError>
fn into_result(self) -> Result<T, RunSystemError>
Converts this type into the system output type.