#[derive(Debug, Clone, Copy, Default)]
pub struct Idle;
#[derive(Debug, Clone, Copy)]
pub struct Moving;
#[derive(Debug, Clone, Copy)]
pub struct Homing;
#[derive(Debug, Clone, Copy)]
pub struct Fault;
pub trait MotorState: private::Sealed {}
impl MotorState for Idle {}
impl MotorState for Moving {}
impl MotorState for Homing {}
impl MotorState for Fault {}
mod private {
pub trait Sealed {}
impl Sealed for super::Idle {}
impl Sealed for super::Moving {}
impl Sealed for super::Homing {}
impl Sealed for super::Fault {}
}
pub trait StateName {
fn name() -> &'static str;
}
impl StateName for Idle {
fn name() -> &'static str {
"Idle"
}
}
impl StateName for Moving {
fn name() -> &'static str {
"Moving"
}
}
impl StateName for Homing {
fn name() -> &'static str {
"Homing"
}
}
impl StateName for Fault {
fn name() -> &'static str {
"Fault"
}
}