pub trait Adapt<S: System>: Send + Sync + 'static {
type In;
type Out;
// Required method
fn adapt(
&mut self,
input: Self::In,
run_system: impl FnOnce(S::In) -> 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,
run_system: impl FnOnce(S::In) -> S::Out,
) -> Self::Out {
!run_system(input)
}
}
Required Associated Types§
sourcetype In
type In
The input type for an AdapterSystem
.
sourcetype Out
type Out
The output type for an AdapterSystem
.
Required Methods§
Object Safety§
This trait is not object safe.