pub enum MapfConflict {
Show 14 variants
InvalidStart {
agent_id: String,
point: Point,
},
InvalidGoal {
agent_id: String,
point: Point,
},
EmptyAgentPath {
agent_id: String,
},
MissingAgentPath {
agent_id: String,
},
UnknownAgentPath {
agent_id: String,
},
DuplicateAgentPath {
agent_id: String,
},
StartMismatch {
agent_id: String,
expected: Point,
actual: Point,
},
OutOfBoundsCell {
agent_id: String,
timestep: usize,
point: Point,
},
BlockedCell {
agent_id: String,
timestep: usize,
point: Point,
},
IllegalTransition {
agent_id: String,
timestep: usize,
from: Point,
to: Point,
},
GoalNotReached {
agent_id: String,
expected: Point,
actual: Point,
},
GoalDeparted {
agent_id: String,
timestep: usize,
goal: Point,
actual: Point,
},
Vertex {
timestep: usize,
point: Point,
agent_ids: Vec<String>,
},
EdgeSwap {
timestep: usize,
from: Point,
to: Point,
agent_a: String,
agent_b: String,
},
}Expand description
Validation issue or conflict found in a MAPF plan.
Structural issues (missing paths, illegal moves) are reported alongside
multi-agent vertex and edge-swap conflicts. Any non-empty conflict list
makes MapfValidationReport::valid false.
Variants§
InvalidStart
Problem start is not walkable.
InvalidGoal
Problem goal is not walkable.
EmptyAgentPath
Agent path has zero positions.
MissingAgentPath
Problem agent has no path entry in the plan.
UnknownAgentPath
Plan path references an unknown agent id.
DuplicateAgentPath
More than one path for the same agent id.
StartMismatch
Path timestep 0 does not match the problem start.
OutOfBoundsCell
Path visits a cell outside the grid.
BlockedCell
Path visits a blocked cell.
IllegalTransition
Consecutive positions are not a legal 4-way step or wait.
GoalNotReached
Path never occupies the agent goal.
GoalDeparted
Agent left the goal after first arrival.
Vertex
Two or more agents occupy the same cell at the same timestep.
EdgeSwap
Two agents swap edges between consecutive timesteps.
Implementations§
Trait Implementations§
Source§impl Clone for MapfConflict
impl Clone for MapfConflict
Source§fn clone(&self) -> MapfConflict
fn clone(&self) -> MapfConflict
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for MapfConflict
impl Debug for MapfConflict
impl Eq for MapfConflict
Source§impl PartialEq for MapfConflict
impl PartialEq for MapfConflict
impl StructuralPartialEq for MapfConflict
Auto Trait Implementations§
impl Freeze for MapfConflict
impl RefUnwindSafe for MapfConflict
impl Send for MapfConflict
impl Sync for MapfConflict
impl Unpin for MapfConflict
impl UnsafeUnpin for MapfConflict
impl UnwindSafe for MapfConflict
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
key and return true if they are equal.Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more