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§
Dyn Compatibility§
This trait is not dyn compatible.
In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.