[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 master#33fdb797f59421c7bbecaa4588ed5d7a31a9494a for pr-87190-3 [INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FYatekii%2Freactor" "/workspace/builds/worker-5/source", kill_on_drop: false }` [INFO] [stderr] Cloning into '/workspace/builds/worker-5/source'... [INFO] [stderr] done. [INFO] validating manifest of git repo https://github.com/Yatekii/reactor on toolchain 33fdb797f59421c7bbecaa4588ed5d7a31a9494a [INFO] running `Command { std: "/workspace/cargo-home/bin/cargo" "+33fdb797f59421c7bbecaa4588ed5d7a31a9494a" "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-5/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" "+33fdb797f59421c7bbecaa4588ed5d7a31a9494a" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }` [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-5/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-5/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:34b6a614d2c27851fe6cbf88fbd1137609cefab8b10d0615aaeb6fd47975d74e" "/opt/rustwide/cargo-home/bin/cargo" "+33fdb797f59421c7bbecaa4588ed5d7a31a9494a" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }` [INFO] [stderr] WARNING: Your kernel does not support swap limit capabilities or the cgroup is not mounted. Memory limited without swap. [INFO] [stdout] ebadbd9205b2bdbd710ead1206d8b5a0f7d82e58d288f63878e4a165dc7533e0 [INFO] running `Command { std: "docker" "start" "-a" "ebadbd9205b2bdbd710ead1206d8b5a0f7d82e58d288f63878e4a165dc7533e0", kill_on_drop: false }` [INFO] running `Command { std: "docker" "inspect" "ebadbd9205b2bdbd710ead1206d8b5a0f7d82e58d288f63878e4a165dc7533e0", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "ebadbd9205b2bdbd710ead1206d8b5a0f7d82e58d288f63878e4a165dc7533e0", kill_on_drop: false }` [INFO] [stdout] ebadbd9205b2bdbd710ead1206d8b5a0f7d82e58d288f63878e4a165dc7533e0 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-5/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-5/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:34b6a614d2c27851fe6cbf88fbd1137609cefab8b10d0615aaeb6fd47975d74e" "/opt/rustwide/cargo-home/bin/cargo" "+33fdb797f59421c7bbecaa4588ed5d7a31a9494a" "check" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }` [INFO] [stdout] 851348e4050e77a200b40400b7590b22a0293c98fb94e908112c1ab4f30887a5 [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" "851348e4050e77a200b40400b7590b22a0293c98fb94e908112c1ab4f30887a5", kill_on_drop: false }` [INFO] [stderr] Compiling syn v0.15.30 [INFO] [stderr] Compiling unicode-xid v0.1.0 [INFO] [stderr] Checking reactor v0.1.0 (/opt/rustwide/workdir/reactor) [INFO] [stderr] Checking proc-macro2 v0.4.27 [INFO] [stderr] Compiling 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] #[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 => [INFO] [stdout] self.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 => [INFO] [stdout] self.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 => [INFO] [stdout] self.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 > () ; [INFO] [stdout] b.get_levels(levels, ptr + 1) ; [INFO] [stdout] }, Bla :: B1(b) => [INFO] [stdout] { [INFO] [stdout] levels [ptr] = core :: any :: TypeId :: of :: < Bla > () ; [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] 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 => [INFO] [stdout] self.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 => [INFO] [stdout] self.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] SubState { [INFO] [stdout] ident: Ident { [INFO] [stdout] ident: "Outer2", [INFO] [stdout] span: #0 bytes(175..181), [INFO] [stdout] }, [INFO] [stdout] { [INFO] [stdout] Blo :: D1(b) => [INFO] [stdout] { [INFO] [stdout] levels [ptr] = core :: any :: TypeId :: of :: < Blo > () ; [INFO] [stdout] b.get_levels(levels, ptr + 1) ; [INFO] [stdout] }, Blo :: E1(b) => [INFO] [stdout] { [INFO] [stdout] levels [ptr] = core :: any :: TypeId :: of :: < Blo > () ; [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] 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 => [INFO] [stdout] self.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 => [INFO] [stdout] self.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, } ; [INFO] [stdout] reactor.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 ; while i [INFO] [stdout] < REACTOR_MAX_LEVELS [INFO] [stdout] { if levels_new [i] != levels_old [i] { break ; } i += 1 ; } [INFO] [stdout] println! ("Moving {:?} -> {:?}", self, new_state) ; [INFO] [stdout] self.state.super_exit(i as i32) ; self.state = new_state ; [INFO] [stdout] self.state.super_enter(i as i32) ; [INFO] [stdout] } _ => { }, [INFO] [stdout] } [INFO] [stdout] } [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 => [INFO] [stdout] self.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 => [INFO] [stdout] self.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 => [INFO] [stdout] self.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 > () ; [INFO] [stdout] b.get_levels(levels, ptr + 1) ; [INFO] [stdout] }, Bla :: B1(b) => [INFO] [stdout] { [INFO] [stdout] levels [ptr] = core :: any :: TypeId :: of :: < Bla > () ; [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] 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 => [INFO] [stdout] self.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 => [INFO] [stdout] self.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 > () ; [INFO] [stdout] b.get_levels(levels, ptr + 1) ; [INFO] [stdout] }, Blo :: E1(b) => [INFO] [stdout] { [INFO] [stdout] levels [ptr] = core :: any :: TypeId :: of :: < Blo > () ; [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] 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 => [INFO] [stdout] self.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 => [INFO] [stdout] self.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, } ; [INFO] [stdout] reactor.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 ; while i [INFO] [stdout] < REACTOR_MAX_LEVELS [INFO] [stdout] { if levels_new [i] != levels_old [i] { break ; } i += 1 ; } [INFO] [stdout] println! ("Moving {:?} -> {:?}", self, new_state) ; [INFO] [stdout] self.state.super_exit(i as i32) ; self.state = new_state ; [INFO] [stdout] self.state.super_enter(i as i32) ; [INFO] [stdout] } _ => { }, [INFO] [stdout] } [INFO] [stdout] } [INFO] [stdout] } [INFO] [stderr] Finished dev [unoptimized + debuginfo] target(s) in 28.51s [INFO] running `Command { std: "docker" "inspect" "851348e4050e77a200b40400b7590b22a0293c98fb94e908112c1ab4f30887a5", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "851348e4050e77a200b40400b7590b22a0293c98fb94e908112c1ab4f30887a5", kill_on_drop: false }` [INFO] [stdout] 851348e4050e77a200b40400b7590b22a0293c98fb94e908112c1ab4f30887a5