pub trait ConflictAvoider<State, Target, Guidance, Key, Environment> {
type AvoidanceAction;
type AvoidanceError;
type AvoidanceActionIter<'a>: IntoIterator<Item = Result<(Self::AvoidanceAction, State), Self::AvoidanceError>>
+ 'a
where
Self: 'a,
Self::AvoidanceAction: 'a,
Self::AvoidanceError: 'a,
State: 'a,
Target: 'a,
Guidance: 'a,
Key: 'a,
Environment: 'a;
fn avoid_conflicts<'a>(
&'a self,
from_state: &State,
to_target: &Target,
with_guidance: &Guidance,
for_keys: (Option<&Key>, Option<&Key>),
in_environment: &Environment,
) -> Self::AvoidanceActionIter<'a>
where
Self: 'a,
Self::AvoidanceAction: 'a,
Self::AvoidanceError: 'a,
State: 'a,
Target: 'a,
Guidance: 'a,
Environment: 'a,
Key: 'a;
}