pub enum MoveValidationError {
UnresolvableLane {
lane: LaneAddr,
},
LaneGroup(LaneGroupError),
DestinationOccupiedByStationaryAtom {
lane: LaneAddr,
dst: LocationAddr,
occupant: u32,
},
StaleMoverSource {
lane: LaneAddr,
src: LocationAddr,
expected: u32,
},
ContestedDestination {
dst: LocationAddr,
first: LaneAddr,
second: LaneAddr,
},
}Expand description
A lane group that cannot execute against a given AtomStateData.
Produced by AtomStateData::validate_moves. Static lane-group failures
(address validity, duplicates, consistency, membership, AOD geometry) are
delegated to ArchSpec::check_lanes and wrapped in Self::LaneGroup;
the occupancy rules are this module’s own.
Variants§
UnresolvableLane
A lane could not be resolved to (src, dst) endpoints.
LaneGroup(LaneGroupError)
Static lane-group check failure from ArchSpec::check_lanes.
DestinationOccupiedByStationaryAtom
A lane’s destination holds an atom that does not move in this group.
The AOD trap site arrives at every lane’s destination whether or not the lane carried an atom, so this is a fault for empty-source filler lanes just as for movers. An occupied destination is legal only when its occupant sits at the source of another lane in the same group (it vacates in the same simultaneous step).
Fields
dst: LocationAddrThe occupied destination.
StaleMoverSource
A validated mover’s source no longer holds the qubit it was resolved
with, i.e. the ValidatedMoves token was produced against a
different state (or against this one before it moved on).
Fields
src: LocationAddrThe source location the token recorded.
ContestedDestination
Two lanes in the group share a destination.
Unreachable through a well-formed bus (destination-unique per
ArchSpec::validate); kept as a defensive check for hand-built
lane groups.
Trait Implementations§
Source§impl Clone for MoveValidationError
impl Clone for MoveValidationError
Source§fn clone(&self) -> MoveValidationError
fn clone(&self) -> MoveValidationError
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 MoveValidationError
impl Debug for MoveValidationError
Source§impl Display for MoveValidationError
impl Display for MoveValidationError
impl Eq for MoveValidationError
Source§impl Error for MoveValidationError
impl Error for MoveValidationError
1.30.0 · Source§fn source(&self) -> Option<&(dyn Error + 'static)>
fn source(&self) -> Option<&(dyn Error + 'static)>
1.0.0 · Source§fn description(&self) -> &str
fn description(&self) -> &str
use the Display impl or to_string()
Source§impl PartialEq for MoveValidationError
impl PartialEq for MoveValidationError
Source§fn eq(&self, other: &MoveValidationError) -> bool
fn eq(&self, other: &MoveValidationError) -> bool
self and other values to be equal, and is used by ==.impl StructuralPartialEq for MoveValidationError
Auto Trait Implementations§
impl Freeze for MoveValidationError
impl RefUnwindSafe for MoveValidationError
impl Send for MoveValidationError
impl Sync for MoveValidationError
impl Unpin for MoveValidationError
impl UnsafeUnpin for MoveValidationError
impl UnwindSafe for MoveValidationError
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
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
key and return true if they are equal.§impl<'src, T> IntoMaybe<'src, T> for Twhere
T: 'src,
impl<'src, T> IntoMaybe<'src, T> for Twhere
T: 'src,
impl<T> OrderedSeq<'_, T> for Twhere
T: Clone,
§impl<'p, T> Seq<'p, T> for Twhere
T: Clone,
impl<'p, T> Seq<'p, T> for Twhere
T: Clone,
§type Iter<'a> = Once<&'a T>
where
T: 'a
type Iter<'a> = Once<&'a T> where T: 'a
§fn contains(&self, val: &T) -> boolwhere
T: PartialEq,
fn contains(&self, val: &T) -> boolwhere
T: PartialEq,
§fn to_maybe_ref<'b>(item: <T as Seq<'p, T>>::Item<'b>) -> Maybe<T, &'p T>where
'p: 'b,
fn to_maybe_ref<'b>(item: <T as Seq<'p, T>>::Item<'b>) -> Maybe<T, &'p T>where
'p: 'b,
MaybeRef].