Hierarchical statechart codegen for Rust with: - during: activities for state-scoped concurrent I/O - field-list borrowing (split-borrow inside the run loop) - embassy-first async with tokio support - STATE_CHART const for tooling/inspection - examples: microwave, microwave_tui, embassy_full, during_radio
29 lines
441 B
Rust
29 lines
441 B
Rust
//! t10.1: a single `during:` listing the same field twice is a compile error.
|
|
use hsmc::statechart;
|
|
|
|
#[derive(Debug, Clone)]
|
|
pub enum Ev { Halt }
|
|
|
|
pub struct Ctx {
|
|
pub a: u32,
|
|
}
|
|
|
|
statechart! {
|
|
M {
|
|
context: Ctx;
|
|
events: Ev;
|
|
default(S);
|
|
terminate(Halt);
|
|
|
|
state S {
|
|
during: tick(a, a);
|
|
}
|
|
}
|
|
}
|
|
|
|
async fn tick(_: &mut u32, _: &mut u32) -> Ev { Ev::Halt }
|
|
|
|
impl MActions for MActionContext<'_> {}
|
|
|
|
fn main() {}
|