use typestate::typestate;
#[typestate]
mod smart_bulb {
#[automaton]
struct SmartBulb {
cycles: u64
}
#[state] struct Off;
trait Off {
fn screw() -> Off;
fn unscrew(self);
fn turn_on(self) -> On; }
#[state] struct On;
trait On {
fn turn_off(self) -> Off;
fn get_color(&self);
fn set_color(self, color: (u8, u8, u8)) -> Unknown;
}
enum Unknown {
#[metadata(label = "bulb changed color successfully")]
On,
#[metadata(label = "bulb failed and turned off")]
Off
}
}
fn main() {}