[INFO] cloning repository https://github.com/Yatekii/reactor [INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/Yatekii/reactor" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FYatekii%2Freactor", kill_on_drop: false }` [INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FYatekii%2Freactor'... [INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }` [INFO] [stdout] 69903568cf5f360161f1b23e37d929e54a4885c0 [INFO] checking Yatekii/reactor against try#45d8b6e68beee1c9c1ce92ae258a7e02f8f13aa4 for pr-83744 [INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FYatekii%2Freactor" "/workspace/builds/worker-0/source", kill_on_drop: false }` [INFO] [stderr] Cloning into '/workspace/builds/worker-0/source'... [INFO] [stderr] done. [INFO] validating manifest of git repo https://github.com/Yatekii/reactor on toolchain 45d8b6e68beee1c9c1ce92ae258a7e02f8f13aa4 [INFO] running `Command { std: "/workspace/cargo-home/bin/cargo" "+45d8b6e68beee1c9c1ce92ae258a7e02f8f13aa4" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }` [INFO] started tweaking git repo https://github.com/Yatekii/reactor [INFO] finished tweaking git repo https://github.com/Yatekii/reactor [INFO] tweaked toml for git repo https://github.com/Yatekii/reactor written to /workspace/builds/worker-0/source/Cargo.toml [INFO] crate git repo https://github.com/Yatekii/reactor already has a lockfile, it will not be regenerated [INFO] running `Command { std: "/workspace/cargo-home/bin/cargo" "+45d8b6e68beee1c9c1ce92ae258a7e02f8f13aa4" "fetch" "--locked" "--manifest-path" "Cargo.toml", kill_on_drop: false }` [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-0/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-0/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:20528e8c29e4536546f0102ce88568b16ea7538393a33fcca951030f7af10457" "/opt/rustwide/cargo-home/bin/cargo" "+45d8b6e68beee1c9c1ce92ae258a7e02f8f13aa4" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }` [INFO] [stdout] 23503cdce96c00d3eedd9cc7da94349e89359c3ade5e2b03fb5c67a0ff6620d9 [INFO] [stderr] WARNING: Your kernel does not support swap limit capabilities or the cgroup is not mounted. Memory limited without swap. [INFO] running `Command { std: "docker" "start" "-a" "23503cdce96c00d3eedd9cc7da94349e89359c3ade5e2b03fb5c67a0ff6620d9", kill_on_drop: false }` [INFO] running `Command { std: "docker" "inspect" "23503cdce96c00d3eedd9cc7da94349e89359c3ade5e2b03fb5c67a0ff6620d9", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "23503cdce96c00d3eedd9cc7da94349e89359c3ade5e2b03fb5c67a0ff6620d9", kill_on_drop: false }` [INFO] [stdout] 23503cdce96c00d3eedd9cc7da94349e89359c3ade5e2b03fb5c67a0ff6620d9 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-0/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-0/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:20528e8c29e4536546f0102ce88568b16ea7538393a33fcca951030f7af10457" "/opt/rustwide/cargo-home/bin/cargo" "+45d8b6e68beee1c9c1ce92ae258a7e02f8f13aa4" "check" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }` [INFO] [stdout] 01a961db4e1be0561dfa68fb4164f355743ae4f26ca330aa5ad4c40eda3dfe04 [INFO] [stderr] WARNING: Your kernel does not support swap limit capabilities or the cgroup is not mounted. Memory limited without swap. [INFO] running `Command { std: "docker" "start" "-a" "01a961db4e1be0561dfa68fb4164f355743ae4f26ca330aa5ad4c40eda3dfe04", kill_on_drop: false }` [INFO] [stderr] Blocking waiting for file lock on package cache [INFO] [stderr] Compiling proc-macro2 v0.4.27 [INFO] [stderr] Compiling syn v0.15.30 [INFO] [stderr] Checking unicode-xid v0.1.0 [INFO] [stderr] Checking reactor v0.1.0 (/opt/rustwide/workdir/reactor) [INFO] [stderr] Checking quote v0.6.11 [INFO] [stderr] Checking reactor-derive v0.1.0 (/opt/rustwide/workdir/reactor-derive) [INFO] [stdout] warning: unnecessary parentheses around type [INFO] [stdout] --> reactor-derive/src/lib.rs:70:109 [INFO] [stdout] | [INFO] [stdout] 70 | let t = sub_state.sub_states.iter().map(|sub_state| assemble_from_sub_state(root, sub_state)).collect::<(Vec<_>)>(); [INFO] [stdout] | ^^^^^^^^ help: remove these parentheses [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_parens)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary parentheses around type [INFO] [stdout] --> reactor-derive/src/lib.rs:70:109 [INFO] [stdout] | [INFO] [stdout] 70 | let t = sub_state.sub_states.iter().map(|sub_state| assemble_from_sub_state(root, sub_state)).collect::<(Vec<_>)>(); [INFO] [stdout] | ^^^^^^^^ help: remove these parentheses [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_parens)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: 1 warning emitted [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: 1 warning emitted [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary parentheses around type [INFO] [stdout] --> reactor-derive/src/lib.rs:70:109 [INFO] [stdout] | [INFO] [stdout] 70 | let t = sub_state.sub_states.iter().map(|sub_state| assemble_from_sub_state(root, sub_state)).collect::<(Vec<_>)>(); [INFO] [stdout] | ^^^^^^^^ help: remove these parentheses [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_parens)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: 1 warning emitted [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] Checking example v0.1.0 (/opt/rustwide/workdir/example) [INFO] [stdout] SubState { [INFO] [stdout] ident: Ident { [INFO] [stdout] ident: "Outer2", [INFO] [stdout] span: #0 bytes(175..181), [INFO] [stdout] }, [INFO] [stdout] sub_states: [ [INFO] [stdout] SubState { [INFO] [stdout] ident: Ident { [INFO] [stdout] ident: "Bla", [INFO] [stdout] span: #0 bytes(197..200), [INFO] [stdout] }, [INFO] [stdout] sub_states: [ [INFO] [stdout] SubState { [INFO] [stdout] ident: Ident { [INFO] [stdout] ident: "A1", [INFO] [stdout] span: #0 bytes(215..217), [INFO] [stdout] }, [INFO] [stdout] sub_states: [], [INFO] [stdout] }, [INFO] [stdout] SubState { [INFO] [stdout] ident: Ident { [INFO] [stdout] ident: "B1", [INFO] [stdout] span: #0 bytes(219..221), [INFO] [stdout] }, [INFO] [stdout] sub_states: [], [INFO] [stdout] }, [INFO] [stdout] ], [INFO] [stdout] }, [INFO] [stdout] SubState { [INFO] [stdout] ident: Ident { [INFO] [stdout] ident: "Blo", [INFO] [stdout] span: #0 bytes(247..250), [INFO] [stdout] }, [INFO] [stdout] sub_states: [ [INFO] [stdout] SubState { [INFO] [stdout] ident: Ident { [INFO] [stdout] ident: "D1", [INFO] [stdout] span: #0 bytes(265..267), [INFO] [stdout] }, [INFO] [stdout] sub_states: [], [INFO] [stdout] }, [INFO] [stdout] SubState { [INFO] [stdout] ident: Ident { [INFO] [stdout] ident: "E1", [INFO] [stdout] span: #0 bytes(269..271), [INFO] [stdout] }, [INFO] [stdout] sub_states: [], [INFO] [stdout] }, [INFO] [stdout] ], [INFO] [stdout] }, [INFO] [stdout] SubState { [INFO] [stdout] ident: Ident { [INFO] [stdout] ident: "C1", [INFO] [stdout] span: #0 bytes(292..294), [INFO] [stdout] }, [INFO] [stdout] sub_states: [], [INFO] [stdout] }, [INFO] [stdout] ], [INFO] [stdout] } [INFO] [stdout] SubState { [INFO] [stdout] ident: Ident { [INFO] [stdout] ident: "Outer2", [INFO] [stdout] span: #0 bytes(175..181), [INFO] [stdout] }, [INFO] [stdout] sub_states: [ [INFO] [stdout] SubState { [INFO] [stdout] ident: Ident { [INFO] [stdout] ident: "Bla", [INFO] [stdout] span: #0 bytes(197..200), [INFO] [stdout] }, [INFO] [stdout] sub_states: [ [INFO] [stdout] SubState { [INFO] [stdout] ident: Ident { [INFO] [stdout] ident: "A1", [INFO] [stdout] span: #0 bytes(215..217), [INFO] [stdout] }, [INFO] [stdout] sub_states: [], [INFO] [stdout] }, [INFO] [stdout] SubState { [INFO] [stdout] ident: Ident { [INFO] [stdout] ident: "B1", [INFO] [stdout] span: #0 bytes(219..221), [INFO] [stdout] }, [INFO] [stdout] sub_states: [], [INFO] [stdout] }, [INFO] [stdout] ], [INFO] [stdout] }, [INFO] [stdout] SubState { [INFO] [stdout] ident: Ident { [INFO] [stdout] ident: "Blo", [INFO] [stdout] span: #0 bytes(247..250), [INFO] [stdout] }, [INFO] [stdout] sub_states: [ [INFO] [stdout] SubState { [INFO] [stdout] ident: Ident { [INFO] [stdout] ident: "D1", [INFO] [stdout] span: #0 bytes(265..267), [INFO] [stdout] }, [INFO] [stdout] sub_states: [], [INFO] [stdout] }, [INFO] [stdout] SubState { [INFO] [stdout] ident: Ident { [INFO] [stdout] ident: "E1", [INFO] [stdout] span: #0 bytes(269..271), [INFO] [stdout] }, [INFO] [stdout] sub_states: [], [INFO] [stdout] }, [INFO] [stdout] ], [INFO] [stdout] }, [INFO] [stdout] SubState { [INFO] [stdout] ident: Ident { [INFO] [stdout] ident: "C1", [INFO] [stdout] span: #0 bytes(292..294), [INFO] [stdout] }, [INFO] [stdout] sub_states: [], [INFO] [stdout] }, [INFO] [stdout] ], [INFO] [stdout] } [INFO] [stdout] #[derive(Copy, Clone, Debug)] enum Outer2 { Bla(Bla), Blo(Blo), C1(C1) } impl [INFO] [stdout] State < Event > for Outer2 where Outer2 : reactor :: base :: Actor < Event > [INFO] [stdout] { [INFO] [stdout] type State = Outer2 ; const INITIAL_STATE : Self = Outer2 :: C1(C1 { }) ; [INFO] [stdout] fn get_levels(& self, levels : & mut [core :: any :: TypeId], ptr : usize) [INFO] [stdout] { [INFO] [stdout] match self [INFO] [stdout] { [INFO] [stdout] Outer2 :: Bla(b) => [INFO] [stdout] { [INFO] [stdout] levels [ptr] = core :: any :: TypeId :: of :: < Outer2 > () ; [INFO] [stdout] b . get_levels(levels, ptr + 1) ; [INFO] [stdout] }, Outer2 :: Blo(b) => [INFO] [stdout] { [INFO] [stdout] levels [ptr] = core :: any :: TypeId :: of :: < Outer2 > () ; [INFO] [stdout] b . get_levels(levels, ptr + 1) ; [INFO] [stdout] }, Outer2 :: C1(b) => [INFO] [stdout] { [INFO] [stdout] levels [ptr] = core :: any :: TypeId :: of :: < Outer2 > () ; [INFO] [stdout] b . get_levels(levels, ptr + 1) ; [INFO] [stdout] }, [INFO] [stdout] } [INFO] [stdout] } fn super_enter(& self, level : i32) [INFO] [stdout] { [INFO] [stdout] if level > 0 [INFO] [stdout] { [INFO] [stdout] match self [INFO] [stdout] { [INFO] [stdout] Outer2 :: Bla(b) => { b . super_enter(level - 1) }, Outer2 :: [INFO] [stdout] Blo(b) => { b . super_enter(level - 1) }, Outer2 :: C1(b) => [INFO] [stdout] { b . super_enter(level - 1) }, [INFO] [stdout] } [INFO] [stdout] } else [INFO] [stdout] { [INFO] [stdout] self . enter() ; match self [INFO] [stdout] { [INFO] [stdout] Outer2 :: Bla(b) => { b . super_enter(level - 1) }, Outer2 :: [INFO] [stdout] Blo(b) => { b . super_enter(level - 1) }, Outer2 :: C1(b) => [INFO] [stdout] { b . super_enter(level - 1) }, [INFO] [stdout] } [INFO] [stdout] } [INFO] [stdout] } fn super_handle(& self, event : Event) -> EventResult << Self as State < [INFO] [stdout] Event >> :: State > [INFO] [stdout] { [INFO] [stdout] match self [INFO] [stdout] { [INFO] [stdout] Outer2 :: Bla(b) => [INFO] [stdout] { [INFO] [stdout] match b . super_handle(event . clone()) [INFO] [stdout] { [INFO] [stdout] EventResult :: Handled => EventResult :: Handled, [INFO] [stdout] EventResult :: Transition(t) => EventResult :: [INFO] [stdout] Transition(t), EventResult :: NotHandled => self . [INFO] [stdout] handle(event), [INFO] [stdout] } [INFO] [stdout] }, Outer2 :: Blo(b) => [INFO] [stdout] { [INFO] [stdout] match b . super_handle(event . clone()) [INFO] [stdout] { [INFO] [stdout] EventResult :: Handled => EventResult :: Handled, [INFO] [stdout] EventResult :: Transition(t) => EventResult :: [INFO] [stdout] Transition(t), EventResult :: NotHandled => self . [INFO] [stdout] handle(event), [INFO] [stdout] } [INFO] [stdout] }, Outer2 :: C1(b) => [INFO] [stdout] { [INFO] [stdout] match b . super_handle(event . clone()) [INFO] [stdout] { [INFO] [stdout] EventResult :: Handled => EventResult :: Handled, [INFO] [stdout] EventResult :: Transition(t) => EventResult :: [INFO] [stdout] Transition(t), EventResult :: NotHandled => self . [INFO] [stdout] handle(event), [INFO] [stdout] } [INFO] [stdout] }, [INFO] [stdout] } [INFO] [stdout] } fn super_exit(& self, level : i32) [INFO] [stdout] { [INFO] [stdout] if level > 0 [INFO] [stdout] { [INFO] [stdout] match self [INFO] [stdout] { [INFO] [stdout] Outer2 :: Bla(b) => { b . super_exit(level - 1) }, Outer2 :: [INFO] [stdout] Blo(b) => { b . super_exit(level - 1) }, Outer2 :: C1(b) => [INFO] [stdout] { b . super_exit(level - 1) }, [INFO] [stdout] } [INFO] [stdout] } else [INFO] [stdout] { [INFO] [stdout] match self [INFO] [stdout] { [INFO] [stdout] Outer2 :: Bla(b) => { b . super_exit(level - 1) }, Outer2 :: [INFO] [stdout] Blo(b) => { b . super_exit(level - 1) }, Outer2 :: C1(b) => [INFO] [stdout] { b . super_exit(level - 1) }, [INFO] [stdout] } self . exit() ; [INFO] [stdout] } [INFO] [stdout] } [INFO] [stdout] } #[derive(Copy, Clone, Debug)] enum Bla { A1(A1), B1(B1) } impl State < Event [INFO] [stdout] > for Bla where Bla : reactor :: base :: Actor < Event > [INFO] [stdout] { [INFO] [stdout] type State = Outer2 ; const INITIAL_STATE : Self = Bla :: B1(B1 { }) ; fn [INFO] [stdout] get_levels(& self, levels : & mut [core :: any :: TypeId], ptr : usize) [INFO] [stdout] { [INFO] [stdout] match self [INFO] [stdout] { [INFO] [stdout] Bla :: A1(b) => [INFO] [stdout] { [INFO] [stdout] levels [ptr] = core :: any :: TypeId :: of :: < Bla > () ; b . [INFO] [stdout] get_levels(levels, ptr + 1) ; [INFO] [stdout] }, Bla :: B1(b) => [INFO] [stdout] { [INFO] [stdout] levels [ptr] = core :: any :: TypeId :: of :: < Bla > () ; b . [INFO] [stdout] get_levels(levels, ptr + 1) ; [INFO] [stdout] }, [INFO] [stdout] } [INFO] [stdout] } fn super_enter(& self, level : i32) [INFO] [stdout] { [INFO] [stdout] if level > 0 [INFO] [stdout] { [INFO] [stdout] match self [INFO] [stdout] { [INFO] [stdout] Bla :: A1(b) => { b . super_enter(level - 1) }, Bla :: B1(b) [INFO] [stdout] => { b . super_enter(level - 1) }, [INFO] [stdout] } [INFO] [stdout] } else [INFO] [stdout] { [INFO] [stdout] self . enter() ; match self [INFO] [stdout] { [INFO] [stdout] Bla :: A1(b) => { b . super_enter(level - 1) }, Bla :: B1(b) [INFO] [stdout] => { b . super_enter(level - 1) }, [INFO] [stdout] } [INFO] [stdout] } [INFO] [stdout] } fn super_handle(& self, event : Event) -> EventResult << Self as State < [INFO] [stdout] Event >> :: State > [INFO] [stdout] { [INFO] [stdout] match self [INFO] [stdout] { [INFO] [stdout] Bla :: A1(b) => [INFO] [stdout] { [INFO] [stdout] match b . super_handle(event . clone()) [INFO] [stdout] { [INFO] [stdout] EventResult :: Handled => EventResult :: Handled, [INFO] [stdout] EventResult :: Transition(t) => EventResult :: [INFO] [stdout] Transition(t), EventResult :: NotHandled => self . [INFO] [stdout] handle(event), [INFO] [stdout] } [INFO] [stdout] }, Bla :: B1(b) => [INFO] [stdout] { [INFO] [stdout] match b . super_handle(event . clone()) [INFO] [stdout] { [INFO] [stdout] EventResult :: Handled => EventResult :: Handled, [INFO] [stdout] EventResult :: Transition(t) => EventResult :: [INFO] [stdout] Transition(t), EventResult :: NotHandled => self . [INFO] [stdout] handle(event), [INFO] [stdout] } [INFO] [stdout] }, [INFO] [stdout] } [INFO] [stdout] } fn super_exit(& self, level : i32) [INFO] [stdout] { [INFO] [stdout] if level > 0 [INFO] [stdout] { [INFO] [stdout] match self [INFO] [stdout] { [INFO] [stdout] Bla :: A1(b) => { b . super_exit(level - 1) }, Bla :: B1(b) => [INFO] [stdout] { b . super_exit(level - 1) }, [INFO] [stdout] } [INFO] [stdout] } else [INFO] [stdout] { [INFO] [stdout] match self [INFO] [stdout] { [INFO] [stdout] Bla :: A1(b) => { b . super_exit(level - 1) }, Bla :: B1(b) => [INFO] [stdout] { b . super_exit(level - 1) }, [INFO] [stdout] } self . exit() ; [INFO] [stdout] } [INFO] [stdout] } [INFO] [stdout] } #[derive(Copy, Clone, Debug)] struct A1() ; impl State < Event > for A1 [INFO] [stdout] where A1 : reactor :: base :: Actor < Event > [INFO] [stdout] { [INFO] [stdout] type State = Outer2 ; const INITIAL_STATE : Self = A1 { } ; fn [INFO] [stdout] get_levels(& self, levels : & mut [core :: any :: TypeId], ptr : usize) [INFO] [stdout] { levels [ptr] = core :: any :: TypeId :: of :: < A1 > () ; } fn [INFO] [stdout] super_enter(& self, level : i32) { self . enter() } fn [INFO] [stdout] super_handle(& self, event : Event) -> EventResult << Self as State < [INFO] [stdout] Event >> :: State > { self . handle(event) } fn [INFO] [stdout] super_exit(& self, level : i32) { self . exit() } [INFO] [stdout] } #[derive(Copy, Clone, Debug)] struct B1() ; impl State < Event > for B1 [INFO] [stdout] where B1 : reactor :: base :: Actor < Event > [INFO] [stdout] { [INFO] [stdout] type State = Outer2 ; const INITIAL_STATE : Self = B1 { } ; fn [INFO] [stdout] get_levels(& self, levels : & mut [core :: any :: TypeId], ptr : usize) [INFO] [stdout] { levels [ptr] = core :: any :: TypeId :: of :: < B1 > () ; } fn [INFO] [stdout] super_enter(& self, level : i32) { self . enter() } fn [INFO] [stdout] super_handle(& self, event : Event) -> EventResult << Self as State < [INFO] [stdout] Event >> :: State > { self . handle(event) } fn [INFO] [stdout] super_exit(& self, level : i32) { self . exit() } [INFO] [stdout] } #[derive(Copy, Clone, Debug)] enum Blo { D1(D1), E1(E1) } impl State < Event [INFO] [stdout] > for Blo where Blo : reactor :: base :: Actor < Event > [INFO] [stdout] { [INFO] [stdout] type State = Outer2 ; const INITIAL_STATE : Self = Blo :: E1(E1 { }) ; fn [INFO] [stdout] get_levels(& self, levels : & mut [core :: any :: TypeId], ptr : usize) [INFO] [stdout] { [INFO] [stdout] match self [INFO] [stdout] { [INFO] [stdout] Blo :: D1(b) => [INFO] [stdout] { [INFO] [stdout] levels [ptr] = core :: any :: TypeId :: of :: < Blo > () ; b . [INFO] [stdout] get_levels(levels, ptr + 1) ; [INFO] [stdout] }, Blo :: E1(b) => [INFO] [stdout] { [INFO] [stdout] levels [ptr] = core :: any :: TypeId :: of :: < Blo > () ; b . [INFO] [stdout] get_levels(levels, ptr + 1) ; [INFO] [stdout] }, [INFO] [stdout] } [INFO] [stdout] } fn super_enter(& self, level : i32) [INFO] [stdout] { [INFO] [stdout] if level > 0 [INFO] [stdout] { [INFO] [stdout] match self [INFO] [stdout] { [INFO] [stdout] Blo :: D1(b) => { b . super_enter(level - 1) }, Blo :: E1(b) [INFO] [stdout] => { b . super_enter(level - 1) }, [INFO] [stdout] } [INFO] [stdout] } else [INFO] [stdout] { [INFO] [stdout] self . enter() ; match self [INFO] [stdout] { [INFO] [stdout] Blo :: D1(b) => { b . super_enter(level - 1) }, Blo :: E1(b) [INFO] [stdout] => { b . super_enter(level - 1) }, [INFO] [stdout] } [INFO] [stdout] } [INFO] [stdout] } fn super_handle(& self, event : Event) -> EventResult << Self as State < [INFO] [stdout] Event >> :: State > [INFO] [stdout] { [INFO] [stdout] match self [INFO] [stdout] { [INFO] [stdout] Blo :: D1(b) => [INFO] [stdout] { [INFO] [stdout] match b . super_handle(event . clone()) [INFO] [stdout] { [INFO] [stdout] EventResult :: Handled => EventResult :: Handled, [INFO] [stdout] EventResult :: Transition(t) => EventResult :: [INFO] [stdout] Transition(t), EventResult :: NotHandled => self . [INFO] [stdout] handle(event), [INFO] [stdout] } [INFO] [stdout] }, Blo :: E1(b) => [INFO] [stdout] { [INFO] [stdout] match b . super_handle(event . clone()) [INFO] [stdout] { [INFO] [stdout] EventResult :: Handled => EventResult :: Handled, [INFO] [stdout] EventResult :: Transition(t) => EventResult :: [INFO] [stdout] Transition(t), EventResult :: NotHandled => self . [INFO] [stdout] handle(event), [INFO] [stdout] } [INFO] [stdout] }, [INFO] [stdout] } [INFO] [stdout] } fn super_exit(& self, level : i32) [INFO] [stdout] { [INFO] [stdout] if level > 0 [INFO] [stdout] { [INFO] [stdout] match self [INFO] [stdout] { [INFO] [stdout] Blo :: D1(b) => { b . super_exit(level - 1) }, Blo :: E1(b) => [INFO] [stdout] { b . super_exit(level - 1) }, [INFO] [stdout] } [INFO] [stdout] } else [INFO] [stdout] { [INFO] [stdout] match self [INFO] [stdout] { [INFO] [stdout] Blo :: D1(b) => { b . super_exit(level - 1) }, Blo :: E1(b) => [INFO] [stdout] { b . super_exit(level - 1) }, [INFO] [stdout] } self . exit() ; [INFO] [stdout] } [INFO] [stdout] } [INFO] [stdout] } #[derive(Copy, Clone, Debug)] struct D1() ; impl State < Event > for D1 [INFO] [stdout] where D1 : reactor :: base :: Actor < Event > [INFO] [stdout] { [INFO] [stdout] type State = Outer2 ; const INITIAL_STATE : Self = D1 { } ; fn [INFO] [stdout] get_levels(& self, levels : & mut [core :: any :: TypeId], ptr : usize) [INFO] [stdout] { levels [ptr] = core :: any :: TypeId :: of :: < D1 > () ; } fn [INFO] [stdout] super_enter(& self, level : i32) { self . enter() } fn [INFO] [stdout] super_handle(& self, event : Event) -> EventResult << Self as State < [INFO] [stdout] Event >> :: State > { self . handle(event) } fn [INFO] [stdout] super_exit(& self, level : i32) { self . exit() } [INFO] [stdout] } #[derive(Copy, Clone, Debug)] struct E1() ; impl State < Event > for E1 [INFO] [stdout] where E1 : reactor :: base :: Actor < Event > [INFO] [stdout] { [INFO] [stdout] type State = Outer2 ; const INITIAL_STATE : Self = E1 { } ; fn [INFO] [stdout] get_levels(& self, levels : & mut [core :: any :: TypeId], ptr : usize) [INFO] [stdout] { levels [ptr] = core :: any :: TypeId :: of :: < E1 > () ; } fn [INFO] [stdout] super_enter(& self, level : i32) { self . enter() } fn [INFO] [stdout] super_handle(& self, event : Event) -> EventResult << Self as State < [INFO] [stdout] Event >> :: State > { self . handle(event) } fn [INFO] [stdout] super_exit(& self, level : i32) { self . exit() } [INFO] [stdout] } #[derive(Copy, Clone, Debug)] struct C1() ; impl State < Event > for C1 [INFO] [stdout] where C1 : reactor :: base :: Actor < Event > [INFO] [stdout] { [INFO] [stdout] type State = Outer2 ; const INITIAL_STATE : Self = C1 { } ; fn [INFO] [stdout] get_levels(& self, levels : & mut [core :: any :: TypeId], ptr : usize) [INFO] [stdout] { levels [ptr] = core :: any :: TypeId :: of :: < C1 > () ; } fn [INFO] [stdout] super_enter(& self, level : i32) { self . enter() } fn [INFO] [stdout] super_handle(& self, event : Event) -> EventResult << Self as State < [INFO] [stdout] Event >> :: State > { self . handle(event) } fn [INFO] [stdout] super_exit(& self, level : i32) { self . exit() } [INFO] [stdout] } #[derive(Debug)] pub struct Reactor { state : Outer2, } const [INFO] [stdout] REACTOR_MAX_LEVELS : usize = 3usize ; impl React < Event > for Reactor [INFO] [stdout] { [INFO] [stdout] fn new() -> Self [INFO] [stdout] { [INFO] [stdout] let reactor = Self { state : Outer2 :: INITIAL_STATE, } ; reactor . [INFO] [stdout] state . super_enter(0) ; reactor [INFO] [stdout] } fn react(& mut self, event : Event) [INFO] [stdout] { [INFO] [stdout] match self . state . super_handle(event) [INFO] [stdout] { [INFO] [stdout] EventResult :: Transition(new_state) => [INFO] [stdout] { [INFO] [stdout] let levels_new = & mut [INFO] [stdout] [core :: any :: TypeId :: of :: < bool > () ; [INFO] [stdout] REACTOR_MAX_LEVELS] ; let levels_old = & mut [INFO] [stdout] [core :: any :: TypeId :: of :: < bool > () ; [INFO] [stdout] REACTOR_MAX_LEVELS] ; new_state . get_levels(levels_new, 0) ; [INFO] [stdout] self . state . get_levels(levels_old, 0) ; let mut i = 0 ; [INFO] [stdout] while i < REACTOR_MAX_LEVELS [INFO] [stdout] { if levels_new [i] != levels_old [i] { break ; } i += 1 ; } [INFO] [stdout] println ! ("Moving {:?} -> {:?}", self, new_state) ; self . [INFO] [stdout] state . super_exit(i as i32) ; self . state = new_state ; self [INFO] [stdout] . state . super_enter(i as i32) ; [INFO] [stdout] } _ => { }, [INFO] [stdout] } [INFO] [stdout] } [INFO] [stdout] } [INFO] [stdout] #[derive(Copy, Clone, Debug)] enum Outer2 { Bla(Bla), Blo(Blo), C1(C1) } impl [INFO] [stdout] State < Event > for Outer2 where Outer2 : reactor :: base :: Actor < Event > [INFO] [stdout] { [INFO] [stdout] type State = Outer2 ; const INITIAL_STATE : Self = Outer2 :: C1(C1 { }) ; [INFO] [stdout] fn get_levels(& self, levels : & mut [core :: any :: TypeId], ptr : usize) [INFO] [stdout] { [INFO] [stdout] match self [INFO] [stdout] { [INFO] [stdout] Outer2 :: Bla(b) => [INFO] [stdout] { [INFO] [stdout] levels [ptr] = core :: any :: TypeId :: of :: < Outer2 > () ; [INFO] [stdout] b . get_levels(levels, ptr + 1) ; [INFO] [stdout] }, Outer2 :: Blo(b) => [INFO] [stdout] { [INFO] [stdout] levels [ptr] = core :: any :: TypeId :: of :: < Outer2 > () ; [INFO] [stdout] b . get_levels(levels, ptr + 1) ; [INFO] [stdout] }, Outer2 :: C1(b) => [INFO] [stdout] { [INFO] [stdout] levels [ptr] = core :: any :: TypeId :: of :: < Outer2 > () ; [INFO] [stdout] b . get_levels(levels, ptr + 1) ; [INFO] [stdout] }, [INFO] [stdout] } [INFO] [stdout] } fn super_enter(& self, level : i32) [INFO] [stdout] { [INFO] [stdout] if level > 0 [INFO] [stdout] { [INFO] [stdout] match self [INFO] [stdout] { [INFO] [stdout] Outer2 :: Bla(b) => { b . super_enter(level - 1) }, Outer2 :: [INFO] [stdout] Blo(b) => { b . super_enter(level - 1) }, Outer2 :: C1(b) => [INFO] [stdout] { b . super_enter(level - 1) }, [INFO] [stdout] } [INFO] [stdout] } else [INFO] [stdout] { [INFO] [stdout] self . enter() ; match self [INFO] [stdout] { [INFO] [stdout] Outer2 :: Bla(b) => { b . super_enter(level - 1) }, Outer2 :: [INFO] [stdout] Blo(b) => { b . super_enter(level - 1) }, Outer2 :: C1(b) => [INFO] [stdout] { b . super_enter(level - 1) }, [INFO] [stdout] } [INFO] [stdout] } [INFO] [stdout] } fn super_handle(& self, event : Event) -> EventResult << Self as State < [INFO] [stdout] Event >> :: State > [INFO] [stdout] { [INFO] [stdout] match self [INFO] [stdout] { [INFO] [stdout] Outer2 :: Bla(b) => [INFO] [stdout] { [INFO] [stdout] match b . super_handle(event . clone()) [INFO] [stdout] { [INFO] [stdout] EventResult :: Handled => EventResult :: Handled, [INFO] [stdout] EventResult :: Transition(t) => EventResult :: [INFO] [stdout] Transition(t), EventResult :: NotHandled => self . [INFO] [stdout] handle(event), [INFO] [stdout] } [INFO] [stdout] }, Outer2 :: Blo(b) => [INFO] [stdout] { [INFO] [stdout] match b . super_handle(event . clone()) [INFO] [stdout] { [INFO] [stdout] EventResult :: Handled => EventResult :: Handled, [INFO] [stdout] EventResult :: Transition(t) => EventResult :: [INFO] [stdout] Transition(t), EventResult :: NotHandled => self . [INFO] [stdout] handle(event), [INFO] [stdout] } [INFO] [stdout] }, Outer2 :: C1(b) => [INFO] [stdout] { [INFO] [stdout] match b . super_handle(event . clone()) [INFO] [stdout] { [INFO] [stdout] EventResult :: Handled => EventResult :: Handled, [INFO] [stdout] EventResult :: Transition(t) => EventResult :: [INFO] [stdout] Transition(t), EventResult :: NotHandled => self . [INFO] [stdout] handle(event), [INFO] [stdout] } [INFO] [stdout] }, [INFO] [stdout] } [INFO] [stdout] } fn super_exit(& self, level : i32) [INFO] [stdout] { [INFO] [stdout] if level > 0 [INFO] [stdout] { [INFO] [stdout] match self [INFO] [stdout] { [INFO] [stdout] Outer2 :: Bla(b) => { b . super_exit(level - 1) }, Outer2 :: [INFO] [stdout] Blo(b) => { b . super_exit(level - 1) }, Outer2 :: C1(b) => [INFO] [stdout] { b . super_exit(level - 1) }, [INFO] [stdout] } [INFO] [stdout] } else [INFO] [stdout] { [INFO] [stdout] match self [INFO] [stdout] { [INFO] [stdout] Outer2 :: Bla(b) => { b . super_exit(level - 1) }, Outer2 :: [INFO] [stdout] Blo(b) => { b . super_exit(level - 1) }, Outer2 :: C1(b) => [INFO] [stdout] { b . super_exit(level - 1) }, [INFO] [stdout] } self . exit() ; [INFO] [stdout] } [INFO] [stdout] } [INFO] [stdout] } #[derive(Copy, Clone, Debug)] enum Bla { A1(A1), B1(B1) } impl State < Event [INFO] [stdout] > for Bla where Bla : reactor :: base :: Actor < Event > [INFO] [stdout] { [INFO] [stdout] type State = Outer2 ; const INITIAL_STATE : Self = Bla :: B1(B1 { }) ; fn [INFO] [stdout] get_levels(& self, levels : & mut [core :: any :: TypeId], ptr : usize) [INFO] [stdout] { [INFO] [stdout] match self [INFO] [stdout] { [INFO] [stdout] Bla :: A1(b) => [INFO] [stdout] { [INFO] [stdout] levels [ptr] = core :: any :: TypeId :: of :: < Bla > () ; b . [INFO] [stdout] get_levels(levels, ptr + 1) ; [INFO] [stdout] }, Bla :: B1(b) => [INFO] [stdout] { [INFO] [stdout] levels [ptr] = core :: any :: TypeId :: of :: < Bla > () ; b . [INFO] [stdout] get_levels(levels, ptr + 1) ; [INFO] [stdout] }, [INFO] [stdout] } [INFO] [stdout] } fn super_enter(& self, level : i32) [INFO] [stdout] { [INFO] [stdout] if level > 0 [INFO] [stdout] { [INFO] [stdout] match self [INFO] [stdout] { [INFO] [stdout] Bla :: A1(b) => { b . super_enter(level - 1) }, Bla :: B1(b) [INFO] [stdout] => { b . super_enter(level - 1) }, [INFO] [stdout] } [INFO] [stdout] } else [INFO] [stdout] { [INFO] [stdout] self . enter() ; match self [INFO] [stdout] { [INFO] [stdout] Bla :: A1(b) => { b . super_enter(level - 1) }, Bla :: B1(b) [INFO] [stdout] => { b . super_enter(level - 1) }, [INFO] [stdout] } [INFO] [stdout] } [INFO] [stdout] } fn super_handle(& self, event : Event) -> EventResult << Self as State < [INFO] [stdout] Event >> :: State > [INFO] [stdout] { [INFO] [stdout] match self [INFO] [stdout] { [INFO] [stdout] Bla :: A1(b) => [INFO] [stdout] { [INFO] [stdout] match b . super_handle(event . clone()) [INFO] [stdout] { [INFO] [stdout] EventResult :: Handled => EventResult :: Handled, [INFO] [stdout] EventResult :: Transition(t) => EventResult :: [INFO] [stdout] Transition(t), EventResult :: NotHandled => self . [INFO] [stdout] handle(event), [INFO] [stdout] } [INFO] [stdout] }, Bla :: B1(b) => [INFO] [stdout] { [INFO] [stdout] match b . super_handle(event . clone()) [INFO] [stdout] { [INFO] [stdout] EventResult :: Handled => EventResult :: Handled, [INFO] [stdout] EventResult :: Transition(t) => EventResult :: [INFO] [stdout] Transition(t), EventResult :: NotHandled => self . [INFO] [stdout] handle(event), [INFO] [stdout] } [INFO] [stdout] }, [INFO] [stdout] } [INFO] [stdout] } fn super_exit(& self, level : i32) [INFO] [stdout] { [INFO] [stdout] if level > 0 [INFO] [stdout] { [INFO] [stdout] match self [INFO] [stdout] { [INFO] [stdout] Bla :: A1(b) => { b . super_exit(level - 1) }, Bla :: B1(b) => [INFO] [stdout] { b . super_exit(level - 1) }, [INFO] [stdout] } [INFO] [stdout] } else [INFO] [stdout] { [INFO] [stdout] match self [INFO] [stdout] { [INFO] [stdout] Bla :: A1(b) => { b . super_exit(level - 1) }, Bla :: B1(b) => [INFO] [stdout] { b . super_exit(level - 1) }, [INFO] [stdout] } self . exit() ; [INFO] [stdout] } [INFO] [stdout] } [INFO] [stdout] } #[derive(Copy, Clone, Debug)] struct A1() ; impl State < Event > for A1 [INFO] [stdout] where A1 : reactor :: base :: Actor < Event > [INFO] [stdout] { [INFO] [stdout] type State = Outer2 ; const INITIAL_STATE : Self = A1 { } ; fn [INFO] [stdout] get_levels(& self, levels : & mut [core :: any :: TypeId], ptr : usize) [INFO] [stdout] { levels [ptr] = core :: any :: TypeId :: of :: < A1 > () ; } fn [INFO] [stdout] super_enter(& self, level : i32) { self . enter() } fn [INFO] [stdout] super_handle(& self, event : Event) -> EventResult << Self as State < [INFO] [stdout] Event >> :: State > { self . handle(event) } fn [INFO] [stdout] super_exit(& self, level : i32) { self . exit() } [INFO] [stdout] } #[derive(Copy, Clone, Debug)] struct B1() ; impl State < Event > for B1 [INFO] [stdout] where B1 : reactor :: base :: Actor < Event > [INFO] [stdout] { [INFO] [stdout] type State = Outer2 ; const INITIAL_STATE : Self = B1 { } ; fn [INFO] [stdout] get_levels(& self, levels : & mut [core :: any :: TypeId], ptr : usize) [INFO] [stdout] { levels [ptr] = core :: any :: TypeId :: of :: < B1 > () ; } fn [INFO] [stdout] super_enter(& self, level : i32) { self . enter() } fn [INFO] [stdout] super_handle(& self, event : Event) -> EventResult << Self as State < [INFO] [stdout] Event >> :: State > { self . handle(event) } fn [INFO] [stdout] super_exit(& self, level : i32) { self . exit() } [INFO] [stdout] } #[derive(Copy, Clone, Debug)] enum Blo { D1(D1), E1(E1) } impl State < Event [INFO] [stdout] > for Blo where Blo : reactor :: base :: Actor < Event > [INFO] [stdout] { [INFO] [stdout] type State = Outer2 ; const INITIAL_STATE : Self = Blo :: E1(E1 { }) ; fn [INFO] [stdout] get_levels(& self, levels : & mut [core :: any :: TypeId], ptr : usize) [INFO] [stdout] { [INFO] [stdout] match self [INFO] [stdout] { [INFO] [stdout] Blo :: D1(b) => [INFO] [stdout] { [INFO] [stdout] levels [ptr] = core :: any :: TypeId :: of :: < Blo > () ; b . [INFO] [stdout] get_levels(levels, ptr + 1) ; [INFO] [stdout] }, Blo :: E1(b) => [INFO] [stdout] { [INFO] [stdout] levels [ptr] = core :: any :: TypeId :: of :: < Blo > () ; b . [INFO] [stdout] get_levels(levels, ptr + 1) ; [INFO] [stdout] }, [INFO] [stdout] } [INFO] [stdout] } fn super_enter(& self, level : i32) [INFO] [stdout] { [INFO] [stdout] if level > 0 [INFO] [stdout] { [INFO] [stdout] match self [INFO] [stdout] { [INFO] [stdout] Blo :: D1(b) => { b . super_enter(level - 1) }, Blo :: E1(b) [INFO] [stdout] => { b . super_enter(level - 1) }, [INFO] [stdout] } [INFO] [stdout] } else [INFO] [stdout] { [INFO] [stdout] self . enter() ; match self [INFO] [stdout] { [INFO] [stdout] Blo :: D1(b) => { b . super_enter(level - 1) }, Blo :: E1(b) [INFO] [stdout] => { b . super_enter(level - 1) }, [INFO] [stdout] } [INFO] [stdout] } [INFO] [stdout] } fn super_handle(& self, event : Event) -> EventResult << Self as State < [INFO] [stdout] Event >> :: State > [INFO] [stdout] { [INFO] [stdout] match self [INFO] [stdout] { [INFO] [stdout] Blo :: D1(b) => [INFO] [stdout] { [INFO] [stdout] match b . super_handle(event . clone()) [INFO] [stdout] { [INFO] [stdout] EventResult :: Handled => EventResult :: Handled, [INFO] [stdout] EventResult :: Transition(t) => EventResult :: [INFO] [stdout] Transition(t), EventResult :: NotHandled => self . [INFO] [stdout] handle(event), [INFO] [stdout] } [INFO] [stdout] }, Blo :: E1(b) => [INFO] [stdout] { [INFO] [stdout] match b . super_handle(event . clone()) [INFO] [stdout] { [INFO] [stdout] EventResult :: Handled => EventResult :: Handled, [INFO] [stdout] EventResult :: Transition(t) => EventResult :: [INFO] [stdout] Transition(t), EventResult :: NotHandled => self . [INFO] [stdout] handle(event), [INFO] [stdout] } [INFO] [stdout] }, [INFO] [stdout] } [INFO] [stdout] } fn super_exit(& self, level : i32) [INFO] [stdout] { [INFO] [stdout] if level > 0 [INFO] [stdout] { [INFO] [stdout] match self [INFO] [stdout] { [INFO] [stdout] Blo :: D1(b) => { b . super_exit(level - 1) }, Blo :: E1(b) => [INFO] [stdout] { b . super_exit(level - 1) }, [INFO] [stdout] } [INFO] [stdout] } else [INFO] [stdout] { [INFO] [stdout] match self [INFO] [stdout] { [INFO] [stdout] Blo :: D1(b) => { b . super_exit(level - 1) }, Blo :: E1(b) => [INFO] [stdout] { b . super_exit(level - 1) }, [INFO] [stdout] } self . exit() ; [INFO] [stdout] } [INFO] [stdout] } [INFO] [stdout] } #[derive(Copy, Clone, Debug)] struct D1() ; impl State < Event > for D1 [INFO] [stdout] where D1 : reactor :: base :: Actor < Event > [INFO] [stdout] { [INFO] [stdout] type State = Outer2 ; const INITIAL_STATE : Self = D1 { } ; fn [INFO] [stdout] get_levels(& self, levels : & mut [core :: any :: TypeId], ptr : usize) [INFO] [stdout] { levels [ptr] = core :: any :: TypeId :: of :: < D1 > () ; } fn [INFO] [stdout] super_enter(& self, level : i32) { self . enter() } fn [INFO] [stdout] super_handle(& self, event : Event) -> EventResult << Self as State < [INFO] [stdout] Event >> :: State > { self . handle(event) } fn [INFO] [stdout] super_exit(& self, level : i32) { self . exit() } [INFO] [stdout] } #[derive(Copy, Clone, Debug)] struct E1() ; impl State < Event > for E1 [INFO] [stdout] where E1 : reactor :: base :: Actor < Event > [INFO] [stdout] { [INFO] [stdout] type State = Outer2 ; const INITIAL_STATE : Self = E1 { } ; fn [INFO] [stdout] get_levels(& self, levels : & mut [core :: any :: TypeId], ptr : usize) [INFO] [stdout] { levels [ptr] = core :: any :: TypeId :: of :: < E1 > () ; } fn [INFO] [stdout] super_enter(& self, level : i32) { self . enter() } fn [INFO] [stdout] super_handle(& self, event : Event) -> EventResult << Self as State < [INFO] [stdout] Event >> :: State > { self . handle(event) } fn [INFO] [stdout] super_exit(& self, level : i32) { self . exit() } [INFO] [stdout] } #[derive(Copy, Clone, Debug)] struct C1() ; impl State < Event > for C1 [INFO] [stdout] where C1 : reactor :: base :: Actor < Event > [INFO] [stdout] { [INFO] [stdout] type State = Outer2 ; const INITIAL_STATE : Self = C1 { } ; fn [INFO] [stdout] get_levels(& self, levels : & mut [core :: any :: TypeId], ptr : usize) [INFO] [stdout] { levels [ptr] = core :: any :: TypeId :: of :: < C1 > () ; } fn [INFO] [stdout] super_enter(& self, level : i32) { self . enter() } fn [INFO] [stdout] super_handle(& self, event : Event) -> EventResult << Self as State < [INFO] [stdout] Event >> :: State > { self . handle(event) } fn [INFO] [stdout] super_exit(& self, level : i32) { self . exit() } [INFO] [stdout] } #[derive(Debug)] pub struct Reactor { state : Outer2, } const [INFO] [stdout] REACTOR_MAX_LEVELS : usize = 3usize ; impl React < Event > for Reactor [INFO] [stdout] { [INFO] [stdout] fn new() -> Self [INFO] [stdout] { [INFO] [stdout] let reactor = Self { state : Outer2 :: INITIAL_STATE, } ; reactor . [INFO] [stdout] state . super_enter(0) ; reactor [INFO] [stdout] } fn react(& mut self, event : Event) [INFO] [stdout] { [INFO] [stdout] match self . state . super_handle(event) [INFO] [stdout] { [INFO] [stdout] EventResult :: Transition(new_state) => [INFO] [stdout] { [INFO] [stdout] let levels_new = & mut [INFO] [stdout] [core :: any :: TypeId :: of :: < bool > () ; [INFO] [stdout] REACTOR_MAX_LEVELS] ; let levels_old = & mut [INFO] [stdout] [core :: any :: TypeId :: of :: < bool > () ; [INFO] [stdout] REACTOR_MAX_LEVELS] ; new_state . get_levels(levels_new, 0) ; [INFO] [stdout] self . state . get_levels(levels_old, 0) ; let mut i = 0 ; [INFO] [stdout] while i < REACTOR_MAX_LEVELS [INFO] [stdout] { if levels_new [i] != levels_old [i] { break ; } i += 1 ; } [INFO] [stdout] println ! ("Moving {:?} -> {:?}", self, new_state) ; self . [INFO] [stdout] state . super_exit(i as i32) ; self . state = new_state ; self [INFO] [stdout] . state . super_enter(i as i32) ; [INFO] [stdout] } _ => { }, [INFO] [stdout] } [INFO] [stdout] } [INFO] [stdout] } [INFO] [stderr] Finished dev [unoptimized + debuginfo] target(s) in 22.69s [INFO] running `Command { std: "docker" "inspect" "01a961db4e1be0561dfa68fb4164f355743ae4f26ca330aa5ad4c40eda3dfe04", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "01a961db4e1be0561dfa68fb4164f355743ae4f26ca330aa5ad4c40eda3dfe04", kill_on_drop: false }` [INFO] [stdout] 01a961db4e1be0561dfa68fb4164f355743ae4f26ca330aa5ad4c40eda3dfe04