pub trait Adapt<S: System>:
Send
+ Sync
+ 'static {
type In: SystemInput;
type Out;
// Required method
fn adapt(
&mut self,
input: <Self::In as SystemInput>::Inner<'_>,
run_system: impl FnOnce(SystemIn<'_, S>) -> S::Out,
) -> Self::Out;
}
Expand description
Customizes the behavior of an AdapterSystem
§Examples
use bevy_ecs::system::{Adapt, AdapterSystem};
// A system adapter that inverts the result of a system.
// NOTE: Instead of manually implementing this, you can just use `bevy_ecs::schedule::common_conditions::not`.
pub type NotSystem<S> = AdapterSystem<NotMarker, S>;
// This struct is used to customize the behavior of our adapter.
pub struct NotMarker;
impl<S> Adapt<S> for NotMarker
where
S: System,
S::Out: std::ops::Not,
{
type In = S::In;
type Out = <S::Out as std::ops::Not>::Output;
fn adapt(
&mut self,
input: <Self::In as SystemInput>::Inner<'_>,
run_system: impl FnOnce(SystemIn<'_, S>) -> S::Out,
) -> Self::Out {
!run_system(input)
}
}
Required Associated Types§
sourcetype In: SystemInput
type In: SystemInput
The input type for an AdapterSystem
.
sourcetype Out
type Out
The output type for an AdapterSystem
.
Required Methods§
sourcefn adapt(
&mut self,
input: <Self::In as SystemInput>::Inner<'_>,
run_system: impl FnOnce(SystemIn<'_, S>) -> S::Out,
) -> Self::Out
fn adapt( &mut self, input: <Self::In as SystemInput>::Inner<'_>, run_system: impl FnOnce(SystemIn<'_, S>) -> S::Out, ) -> Self::Out
When used in an AdapterSystem
, this function customizes how the system
is run and how its inputs/outputs are adapted.
Object Safety§
This trait is not object safe.