pub enum SimEvent {
Show 26 variants
OrderArrival {
order_id: OrderId,
},
TaskAssignment {
task_id: TaskId,
robot_id: RobotId,
},
RobotDepartNode {
robot_id: RobotId,
from_node: NodeId,
to_node: NodeId,
edge_id: EdgeId,
},
RobotArriveNode {
robot_id: RobotId,
node_id: NodeId,
from_node: NodeId,
},
StationServiceStart {
robot_id: RobotId,
station_id: StationId,
task_id: TaskId,
},
StationServiceEnd {
robot_id: RobotId,
station_id: StationId,
task_id: TaskId,
},
InventoryUpdate {
sku_id: SkuId,
bin_id: BinId,
delta: i32,
task_id: TaskId,
},
RobotWaitStart {
robot_id: RobotId,
at_node: NodeId,
waiting_for_edge: EdgeId,
},
RobotWaitEnd {
robot_id: RobotId,
at_node: NodeId,
},
RobotPickup {
robot_id: RobotId,
task_id: TaskId,
node_id: NodeId,
},
DispatchTasks,
InboundArrival {
shipment_id: ShipmentId,
station_id: StationId,
},
PutawayTaskCreated {
task_id: TaskId,
shipment_id: ShipmentId,
},
OutboundReady {
order_id: OrderId,
},
ShipmentDeparture {
shipment_id: ShipmentId,
station_id: StationId,
},
ReplenishmentTrigger {
sku_id: SkuId,
bin_id: BinId,
current_qty: u32,
threshold: u32,
},
RobotChargingStart {
robot_id: RobotId,
station_id: ChargingStationId,
},
RobotChargingEnd {
robot_id: RobotId,
station_id: ChargingStationId,
energy_charged_wh: f64,
},
RobotLowBattery {
robot_id: RobotId,
soc: f64,
},
MetricsSampleTick,
DeadlockDetected {
robots: Vec<RobotId>,
},
DeadlockResolved {
robots: Vec<RobotId>,
resolver_robot: RobotId,
},
RobotFailure {
robot_id: RobotId,
interrupted_task: Option<TaskId>,
},
RobotMaintenanceDue {
robot_id: RobotId,
operating_hours: f64,
},
MaintenanceStart {
robot_id: RobotId,
station_id: MaintenanceStationId,
is_repair: bool,
},
MaintenanceEnd {
robot_id: RobotId,
station_id: MaintenanceStationId,
is_repair: bool,
duration_s: f64,
},
}Expand description
All possible simulation events
Variants§
OrderArrival
New order arrives in the system
TaskAssignment
Task is assigned to a robot
RobotDepartNode
Robot departs from a node to traverse an edge
RobotArriveNode
Robot arrives at a node after traversing an edge
StationServiceStart
Robot begins service at a station
StationServiceEnd
Robot completes service at a station
InventoryUpdate
Inventory is updated (pick decrements, putaway increments)
RobotWaitStart
Robot starts waiting for an edge to become available
RobotWaitEnd
Robot wait ends, can attempt to proceed
RobotPickup
Robot pickup at bin location
DispatchTasks
Try to dispatch pending tasks to available robots
InboundArrival
Shipment arrives at inbound station
PutawayTaskCreated
Putaway task created from inbound shipment
OutboundReady
Order is ready for outbound (all picks complete)
ShipmentDeparture
Shipment departs from outbound station
ReplenishmentTrigger
Replenishment triggered due to low inventory
RobotChargingStart
Robot starts charging at a station
RobotChargingEnd
Robot completes charging
RobotLowBattery
Robot battery drops below threshold
MetricsSampleTick
Periodic metrics sampling tick
DeadlockDetected
Deadlock detected between robots
DeadlockResolved
Deadlock resolution action taken
Fields
RobotFailure
Robot has failed and needs repair
Fields
RobotMaintenanceDue
Robot scheduled maintenance is due
MaintenanceStart
Robot starts maintenance or repair at a station
Fields
station_id: MaintenanceStationIdMaintenanceEnd
Robot completes maintenance or repair
Implementations§
Source§impl SimEvent
impl SimEvent
Sourcepub fn event_type_name(&self) -> &'static str
pub fn event_type_name(&self) -> &'static str
Get a string name for the event type
Sourcepub fn shipment_id(&self) -> Option<ShipmentId>
pub fn shipment_id(&self) -> Option<ShipmentId>
Get the shipment ID associated with this event, if any
Sourcepub fn charging_station_id(&self) -> Option<ChargingStationId>
pub fn charging_station_id(&self) -> Option<ChargingStationId>
Get the charging station ID associated with this event, if any
Sourcepub fn maintenance_station_id(&self) -> Option<MaintenanceStationId>
pub fn maintenance_station_id(&self) -> Option<MaintenanceStationId>
Get the maintenance station ID associated with this event, if any
Trait Implementations§
Source§impl Archive for SimEventwhere
OrderId: Archive,
TaskId: Archive,
RobotId: Archive,
NodeId: Archive,
EdgeId: Archive,
StationId: Archive,
SkuId: Archive,
BinId: Archive,
i32: Archive,
ShipmentId: Archive,
u32: Archive,
ChargingStationId: Archive,
f64: Archive,
Vec<RobotId>: Archive,
Option<TaskId>: Archive,
MaintenanceStationId: Archive,
bool: Archive,
impl Archive for SimEventwhere
OrderId: Archive,
TaskId: Archive,
RobotId: Archive,
NodeId: Archive,
EdgeId: Archive,
StationId: Archive,
SkuId: Archive,
BinId: Archive,
i32: Archive,
ShipmentId: Archive,
u32: Archive,
ChargingStationId: Archive,
f64: Archive,
Vec<RobotId>: Archive,
Option<TaskId>: Archive,
MaintenanceStationId: Archive,
bool: Archive,
Source§type Archived = ArchivedSimEvent
type Archived = ArchivedSimEvent
Source§type Resolver = SimEventResolver
type Resolver = SimEventResolver
Source§fn resolve(
&self,
resolver: <Self as Archive>::Resolver,
out: Place<<Self as Archive>::Archived>,
)
fn resolve( &self, resolver: <Self as Archive>::Resolver, out: Place<<Self as Archive>::Archived>, )
Source§const COPY_OPTIMIZATION: CopyOptimization<Self> = _
const COPY_OPTIMIZATION: CopyOptimization<Self> = _
serialize. Read moreSource§impl<__D: Fallible + ?Sized> Deserialize<SimEvent, __D> for Archived<SimEvent>where
OrderId: Archive,
<OrderId as Archive>::Archived: Deserialize<OrderId, __D>,
TaskId: Archive,
<TaskId as Archive>::Archived: Deserialize<TaskId, __D>,
RobotId: Archive,
<RobotId as Archive>::Archived: Deserialize<RobotId, __D>,
NodeId: Archive,
<NodeId as Archive>::Archived: Deserialize<NodeId, __D>,
EdgeId: Archive,
<EdgeId as Archive>::Archived: Deserialize<EdgeId, __D>,
StationId: Archive,
<StationId as Archive>::Archived: Deserialize<StationId, __D>,
SkuId: Archive,
<SkuId as Archive>::Archived: Deserialize<SkuId, __D>,
BinId: Archive,
<BinId as Archive>::Archived: Deserialize<BinId, __D>,
i32: Archive,
<i32 as Archive>::Archived: Deserialize<i32, __D>,
ShipmentId: Archive,
<ShipmentId as Archive>::Archived: Deserialize<ShipmentId, __D>,
u32: Archive,
<u32 as Archive>::Archived: Deserialize<u32, __D>,
ChargingStationId: Archive,
<ChargingStationId as Archive>::Archived: Deserialize<ChargingStationId, __D>,
f64: Archive,
<f64 as Archive>::Archived: Deserialize<f64, __D>,
Vec<RobotId>: Archive,
<Vec<RobotId> as Archive>::Archived: Deserialize<Vec<RobotId>, __D>,
Option<TaskId>: Archive,
<Option<TaskId> as Archive>::Archived: Deserialize<Option<TaskId>, __D>,
MaintenanceStationId: Archive,
<MaintenanceStationId as Archive>::Archived: Deserialize<MaintenanceStationId, __D>,
bool: Archive,
<bool as Archive>::Archived: Deserialize<bool, __D>,
impl<__D: Fallible + ?Sized> Deserialize<SimEvent, __D> for Archived<SimEvent>where
OrderId: Archive,
<OrderId as Archive>::Archived: Deserialize<OrderId, __D>,
TaskId: Archive,
<TaskId as Archive>::Archived: Deserialize<TaskId, __D>,
RobotId: Archive,
<RobotId as Archive>::Archived: Deserialize<RobotId, __D>,
NodeId: Archive,
<NodeId as Archive>::Archived: Deserialize<NodeId, __D>,
EdgeId: Archive,
<EdgeId as Archive>::Archived: Deserialize<EdgeId, __D>,
StationId: Archive,
<StationId as Archive>::Archived: Deserialize<StationId, __D>,
SkuId: Archive,
<SkuId as Archive>::Archived: Deserialize<SkuId, __D>,
BinId: Archive,
<BinId as Archive>::Archived: Deserialize<BinId, __D>,
i32: Archive,
<i32 as Archive>::Archived: Deserialize<i32, __D>,
ShipmentId: Archive,
<ShipmentId as Archive>::Archived: Deserialize<ShipmentId, __D>,
u32: Archive,
<u32 as Archive>::Archived: Deserialize<u32, __D>,
ChargingStationId: Archive,
<ChargingStationId as Archive>::Archived: Deserialize<ChargingStationId, __D>,
f64: Archive,
<f64 as Archive>::Archived: Deserialize<f64, __D>,
Vec<RobotId>: Archive,
<Vec<RobotId> as Archive>::Archived: Deserialize<Vec<RobotId>, __D>,
Option<TaskId>: Archive,
<Option<TaskId> as Archive>::Archived: Deserialize<Option<TaskId>, __D>,
MaintenanceStationId: Archive,
<MaintenanceStationId as Archive>::Archived: Deserialize<MaintenanceStationId, __D>,
bool: Archive,
<bool as Archive>::Archived: Deserialize<bool, __D>,
Source§impl<__S: Fallible + ?Sized> Serialize<__S> for SimEventwhere
OrderId: Serialize<__S>,
TaskId: Serialize<__S>,
RobotId: Serialize<__S>,
NodeId: Serialize<__S>,
EdgeId: Serialize<__S>,
StationId: Serialize<__S>,
SkuId: Serialize<__S>,
BinId: Serialize<__S>,
i32: Serialize<__S>,
ShipmentId: Serialize<__S>,
u32: Serialize<__S>,
ChargingStationId: Serialize<__S>,
f64: Serialize<__S>,
Vec<RobotId>: Serialize<__S>,
Option<TaskId>: Serialize<__S>,
MaintenanceStationId: Serialize<__S>,
bool: Serialize<__S>,
impl<__S: Fallible + ?Sized> Serialize<__S> for SimEventwhere
OrderId: Serialize<__S>,
TaskId: Serialize<__S>,
RobotId: Serialize<__S>,
NodeId: Serialize<__S>,
EdgeId: Serialize<__S>,
StationId: Serialize<__S>,
SkuId: Serialize<__S>,
BinId: Serialize<__S>,
i32: Serialize<__S>,
ShipmentId: Serialize<__S>,
u32: Serialize<__S>,
ChargingStationId: Serialize<__S>,
f64: Serialize<__S>,
Vec<RobotId>: Serialize<__S>,
Option<TaskId>: Serialize<__S>,
MaintenanceStationId: Serialize<__S>,
bool: Serialize<__S>,
Auto Trait Implementations§
impl Freeze for SimEvent
impl RefUnwindSafe for SimEvent
impl Send for SimEvent
impl Sync for SimEvent
impl Unpin for SimEvent
impl UnwindSafe for SimEvent
Blanket Implementations§
Source§impl<T> ArchivePointee for T
impl<T> ArchivePointee for T
Source§type ArchivedMetadata = ()
type ArchivedMetadata = ()
Source§fn pointer_metadata(
_: &<T as ArchivePointee>::ArchivedMetadata,
) -> <T as Pointee>::Metadata
fn pointer_metadata( _: &<T as ArchivePointee>::ArchivedMetadata, ) -> <T as Pointee>::Metadata
Source§impl<T> ArchiveUnsized for Twhere
T: Archive,
impl<T> ArchiveUnsized for Twhere
T: Archive,
Source§type Archived = <T as Archive>::Archived
type Archived = <T as Archive>::Archived
Archive, it may be
unsized. Read moreSource§fn archived_metadata(
&self,
) -> <<T as ArchiveUnsized>::Archived as ArchivePointee>::ArchivedMetadata
fn archived_metadata( &self, ) -> <<T as ArchiveUnsized>::Archived as ArchivePointee>::ArchivedMetadata
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,
Source§impl<T> LayoutRaw for T
impl<T> LayoutRaw for T
Source§fn layout_raw(_: <T as Pointee>::Metadata) -> Result<Layout, LayoutError>
fn layout_raw(_: <T as Pointee>::Metadata) -> Result<Layout, LayoutError>
Source§impl<T, N1, N2> Niching<NichedOption<T, N1>> for N2
impl<T, N1, N2> Niching<NichedOption<T, N1>> for N2
Source§unsafe fn is_niched(niched: *const NichedOption<T, N1>) -> bool
unsafe fn is_niched(niched: *const NichedOption<T, N1>) -> bool
Source§fn resolve_niched(out: Place<NichedOption<T, N1>>)
fn resolve_niched(out: Place<NichedOption<T, N1>>)
out indicating that a T is niched.