pub trait Adapt<S>: Send + Sync + 'staticwhere
S: System,{
type In;
type Out;
// Required method
fn adapt(
&mut self,
input: Self::In,
run_system: impl FnOnce(<S as System>::In) -> <S as System>::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.