[INFO] cloning repository https://github.com/ls3205/ratatui-recipe [INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/ls3205/ratatui-recipe" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fls3205%2Fratatui-recipe", kill_on_drop: false }` [INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fls3205%2Fratatui-recipe'... [INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }` [INFO] [stdout] 162cde20b33906fd4fa4e8a86f9e072949ffbe36 [INFO] checking ls3205/ratatui-recipe against try#579169d0e78824dc60934e5eb74cd3841f2b33e8 for pr-149328 [INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fls3205%2Fratatui-recipe" "/workspace/builds/worker-3-tc2/source", kill_on_drop: false }` [INFO] [stderr] Cloning into '/workspace/builds/worker-3-tc2/source'... [INFO] [stderr] done. [INFO] started tweaking git repo https://github.com/ls3205/ratatui-recipe [INFO] finished tweaking git repo https://github.com/ls3205/ratatui-recipe [INFO] tweaked toml for git repo https://github.com/ls3205/ratatui-recipe written to /workspace/builds/worker-3-tc2/source/Cargo.toml [INFO] validating manifest of git repo https://github.com/ls3205/ratatui-recipe on toolchain 579169d0e78824dc60934e5eb74cd3841f2b33e8 [INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+579169d0e78824dc60934e5eb74cd3841f2b33e8" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }` [INFO] crate git repo https://github.com/ls3205/ratatui-recipe already has a lockfile, it will not be regenerated [INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+579169d0e78824dc60934e5eb74cd3841f2b33e8" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }` [INFO] [stderr] Blocking waiting for file lock on package cache [ERROR] error running command: no output for 300 seconds [INFO] checking ls3205/ratatui-recipe against try#579169d0e78824dc60934e5eb74cd3841f2b33e8 for pr-149328 [INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fls3205%2Fratatui-recipe" "/workspace/builds/worker-3-tc2/source", kill_on_drop: false }` [INFO] [stderr] Cloning into '/workspace/builds/worker-3-tc2/source'... [INFO] [stderr] done. [INFO] started tweaking git repo https://github.com/ls3205/ratatui-recipe [INFO] finished tweaking git repo https://github.com/ls3205/ratatui-recipe [INFO] tweaked toml for git repo https://github.com/ls3205/ratatui-recipe written to /workspace/builds/worker-3-tc2/source/Cargo.toml [INFO] validating manifest of git repo https://github.com/ls3205/ratatui-recipe on toolchain 579169d0e78824dc60934e5eb74cd3841f2b33e8 [INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+579169d0e78824dc60934e5eb74cd3841f2b33e8" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }` [INFO] crate git repo https://github.com/ls3205/ratatui-recipe already has a lockfile, it will not be regenerated [INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+579169d0e78824dc60934e5eb74cd3841f2b33e8" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }` [INFO] [stderr] Blocking waiting for file lock on package cache [INFO] [stderr] Updating crates.io index [INFO] [stderr] Blocking waiting for file lock on package cache [INFO] [stderr] Downloading crates ... [INFO] [stderr] Downloaded ratatui-recipe-macros v0.0.1 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc2/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:61361fe0aef631f17e9d025a70c5a647956f8c671dd02950a60ad3f5cc5526d7" "/opt/rustwide/cargo-home/bin/cargo" "+579169d0e78824dc60934e5eb74cd3841f2b33e8" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }` [INFO] [stdout] 2433ce5beffd108c3937f710d4a2d561c728abca84dcad9e80f7974f1cf62585 [INFO] running `Command { std: "docker" "start" "-a" "2433ce5beffd108c3937f710d4a2d561c728abca84dcad9e80f7974f1cf62585", kill_on_drop: false }` [INFO] running `Command { std: "docker" "inspect" "2433ce5beffd108c3937f710d4a2d561c728abca84dcad9e80f7974f1cf62585", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "2433ce5beffd108c3937f710d4a2d561c728abca84dcad9e80f7974f1cf62585", kill_on_drop: false }` [INFO] [stdout] 2433ce5beffd108c3937f710d4a2d561c728abca84dcad9e80f7974f1cf62585 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc2/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" "RUSTDOCFLAGS=--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:61361fe0aef631f17e9d025a70c5a647956f8c671dd02950a60ad3f5cc5526d7" "/opt/rustwide/cargo-home/bin/cargo" "+579169d0e78824dc60934e5eb74cd3841f2b33e8" "check" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }` [INFO] [stdout] 23eb6aed6631ed32c0966e3c617d7976a8200b57fdc64fb7b2f9d2dc48b8346b [INFO] running `Command { std: "docker" "start" "-a" "23eb6aed6631ed32c0966e3c617d7976a8200b57fdc64fb7b2f9d2dc48b8346b", kill_on_drop: false }` [INFO] [stderr] Checking foldhash v0.2.0 [INFO] [stderr] Compiling thiserror v2.0.18 [INFO] [stderr] Checking itertools v0.14.0 [INFO] [stderr] Compiling instability v0.3.11 [INFO] [stderr] Compiling convert_case v0.10.0 [INFO] [stderr] Compiling rustix v1.1.3 [INFO] [stderr] Compiling syn v2.0.114 [INFO] [stderr] Checking mio v1.1.1 [INFO] [stderr] Checking num_threads v0.1.7 [INFO] [stderr] Checking num-conv v0.2.0 [INFO] [stderr] Checking compact_str v0.9.0 [INFO] [stderr] Checking time-core v0.1.8 [INFO] [stderr] Checking line-clipping v0.3.5 [INFO] [stderr] Checking signal-hook v0.3.18 [INFO] [stderr] Checking unicode-ident v1.0.22 [INFO] [stderr] Checking hashbrown v0.16.1 [INFO] [stderr] Checking time v0.3.47 [INFO] [stderr] Checking proc-macro2 v1.0.106 [INFO] [stderr] Checking quote v1.0.44 [INFO] [stderr] Checking signal-hook-mio v0.2.5 [INFO] [stderr] Checking lru v0.16.3 [INFO] [stderr] Checking unicode-truncate v2.0.1 [INFO] [stderr] Checking ratatui-recipe-macros v0.0.2 (/opt/rustwide/workdir/crates/ratatui-recipe-macros) [INFO] [stderr] Compiling darling_core v0.23.0 [INFO] [stderr] Compiling thiserror-impl v2.0.18 [INFO] [stderr] Compiling strum_macros v0.27.2 [INFO] [stderr] Compiling derive_more-impl v2.1.1 [INFO] [stderr] Compiling tokio-macros v2.6.0 [INFO] [stderr] Compiling ratatui-recipe-macros v0.0.1 [INFO] [stderr] Checking derive_more v2.1.1 [INFO] [stderr] Checking crossterm v0.29.0 [INFO] [stderr] Checking tokio v1.49.0 [INFO] [stderr] Checking kasuari v0.4.11 [INFO] [stderr] Compiling darling_macro v0.23.0 [INFO] [stderr] Compiling darling v0.23.0 [INFO] [stderr] Checking strum v0.27.2 [INFO] [stderr] Checking ratatui-core v0.1.0 [INFO] [stderr] Checking ratatui-widgets v0.3.0 [INFO] [stderr] Checking ratatui-crossterm v0.1.0 [INFO] [stderr] Checking ratatui-macros v0.7.0 [INFO] [stderr] Checking ratatui v0.30.0 [INFO] [stderr] Checking ratatui-recipe v0.0.2 (/opt/rustwide/workdir/crates/ratatui-recipe) [INFO] [stdout] warning: unused variable: `event` [INFO] [stdout] --> crates/ratatui-recipe/src/page.rs:21:34 [INFO] [stdout] | [INFO] [stdout] 21 | async fn on_event(&mut self, event: Event, router: Router) {} [INFO] [stdout] | ^^^^^ help: if this is intentional, prefix it with an underscore: `_event` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `router` [INFO] [stdout] --> crates/ratatui-recipe/src/page.rs:21:48 [INFO] [stdout] | [INFO] [stdout] 21 | async fn on_event(&mut self, event: Event, router: Router) {} [INFO] [stdout] | ^^^^^^ help: if this is intentional, prefix it with an underscore: `_router` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `router` [INFO] [stdout] --> crates/ratatui-recipe/src/page.rs:22:34 [INFO] [stdout] | [INFO] [stdout] 22 | async fn on_enter(&mut self, router: Router) {} [INFO] [stdout] | ^^^^^^ help: if this is intentional, prefix it with an underscore: `_router` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `router` [INFO] [stdout] --> crates/ratatui-recipe/src/page.rs:23:33 [INFO] [stdout] | [INFO] [stdout] 23 | async fn on_exit(&mut self, router: Router) {} [INFO] [stdout] | ^^^^^^ help: if this is intentional, prefix it with an underscore: `_router` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `router` [INFO] [stdout] --> crates/ratatui-recipe/src/page.rs:24:34 [INFO] [stdout] | [INFO] [stdout] 24 | async fn on_pause(&mut self, router: Router) {} [INFO] [stdout] | ^^^^^^ help: if this is intentional, prefix it with an underscore: `_router` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `router` [INFO] [stdout] --> crates/ratatui-recipe/src/page.rs:25:35 [INFO] [stdout] | [INFO] [stdout] 25 | async fn on_resume(&mut self, router: Router) {} [INFO] [stdout] | ^^^^^^ help: if this is intentional, prefix it with an underscore: `_router` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `router` [INFO] [stdout] --> crates/ratatui-recipe/src/page.rs:26:30 [INFO] [stdout] | [INFO] [stdout] 26 | async fn task(&mut self, router: Router) { [INFO] [stdout] | ^^^^^^ help: if this is intentional, prefix it with an underscore: `_router` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `event` [INFO] [stdout] --> crates/ratatui-recipe/src/page.rs:33:34 [INFO] [stdout] | [INFO] [stdout] 33 | async fn on_event(&mut self, event: Event, router: Router, state: &mut State) {} [INFO] [stdout] | ^^^^^ help: if this is intentional, prefix it with an underscore: `_event` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `router` [INFO] [stdout] --> crates/ratatui-recipe/src/page.rs:33:48 [INFO] [stdout] | [INFO] [stdout] 33 | async fn on_event(&mut self, event: Event, router: Router, state: &mut State) {} [INFO] [stdout] | ^^^^^^ help: if this is intentional, prefix it with an underscore: `_router` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `state` [INFO] [stdout] --> crates/ratatui-recipe/src/page.rs:33:68 [INFO] [stdout] | [INFO] [stdout] 33 | async fn on_event(&mut self, event: Event, router: Router, state: &mut State) {} [INFO] [stdout] | ^^^^^ help: if this is intentional, prefix it with an underscore: `_state` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `router` [INFO] [stdout] --> crates/ratatui-recipe/src/page.rs:34:34 [INFO] [stdout] | [INFO] [stdout] 34 | async fn on_enter(&mut self, router: Router, state: &mut State) {} [INFO] [stdout] | ^^^^^^ help: if this is intentional, prefix it with an underscore: `_router` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `state` [INFO] [stdout] --> crates/ratatui-recipe/src/page.rs:34:54 [INFO] [stdout] | [INFO] [stdout] 34 | async fn on_enter(&mut self, router: Router, state: &mut State) {} [INFO] [stdout] | ^^^^^ help: if this is intentional, prefix it with an underscore: `_state` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `router` [INFO] [stdout] --> crates/ratatui-recipe/src/page.rs:35:33 [INFO] [stdout] | [INFO] [stdout] 35 | async fn on_exit(&mut self, router: Router, state: &mut State) {} [INFO] [stdout] | ^^^^^^ help: if this is intentional, prefix it with an underscore: `_router` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `state` [INFO] [stdout] --> crates/ratatui-recipe/src/page.rs:35:53 [INFO] [stdout] | [INFO] [stdout] 35 | async fn on_exit(&mut self, router: Router, state: &mut State) {} [INFO] [stdout] | ^^^^^ help: if this is intentional, prefix it with an underscore: `_state` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `router` [INFO] [stdout] --> crates/ratatui-recipe/src/page.rs:36:34 [INFO] [stdout] | [INFO] [stdout] 36 | async fn on_pause(&mut self, router: Router, state: &mut State) {} [INFO] [stdout] | ^^^^^^ help: if this is intentional, prefix it with an underscore: `_router` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `state` [INFO] [stdout] --> crates/ratatui-recipe/src/page.rs:36:54 [INFO] [stdout] | [INFO] [stdout] 36 | async fn on_pause(&mut self, router: Router, state: &mut State) {} [INFO] [stdout] | ^^^^^ help: if this is intentional, prefix it with an underscore: `_state` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `router` [INFO] [stdout] --> crates/ratatui-recipe/src/page.rs:37:35 [INFO] [stdout] | [INFO] [stdout] 37 | async fn on_resume(&mut self, router: Router, state: &mut State) {} [INFO] [stdout] | ^^^^^^ help: if this is intentional, prefix it with an underscore: `_router` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `state` [INFO] [stdout] --> crates/ratatui-recipe/src/page.rs:37:55 [INFO] [stdout] | [INFO] [stdout] 37 | async fn on_resume(&mut self, router: Router, state: &mut State) {} [INFO] [stdout] | ^^^^^ help: if this is intentional, prefix it with an underscore: `_state` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `router` [INFO] [stdout] --> crates/ratatui-recipe/src/page.rs:38:30 [INFO] [stdout] | [INFO] [stdout] 38 | async fn task(&mut self, router: Router, state: &mut State) { [INFO] [stdout] | ^^^^^^ help: if this is intentional, prefix it with an underscore: `_router` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `state` [INFO] [stdout] --> crates/ratatui-recipe/src/page.rs:38:50 [INFO] [stdout] | [INFO] [stdout] 38 | async fn task(&mut self, router: Router, state: &mut State) { [INFO] [stdout] | ^^^^^ help: if this is intentional, prefix it with an underscore: `_state` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of `async fn` in public traits is discouraged as auto trait bounds cannot be specified [INFO] [stdout] --> crates/ratatui-recipe/src/page.rs:11:5 [INFO] [stdout] | [INFO] [stdout] 11 | async fn on_event(&mut self, event: Event, router: Router, state: &mut S); [INFO] [stdout] | ^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: you can suppress this lint if you plan to use the trait only in your own code, or do not care about auto traits like `Send` on the `Future` [INFO] [stdout] = note: `#[warn(async_fn_in_trait)]` on by default [INFO] [stdout] help: you can alternatively desugar to a normal `fn` that returns `impl Future` and add any desired bounds such as `Send`, but these cannot be relaxed without a breaking API change [INFO] [stdout] | [INFO] [stdout] 11 - async fn on_event(&mut self, event: Event, router: Router, state: &mut S); [INFO] [stdout] 11 + fn on_event(&mut self, event: Event, router: Router, state: &mut S) -> impl std::future::Future + Send; [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of `async fn` in public traits is discouraged as auto trait bounds cannot be specified [INFO] [stdout] --> crates/ratatui-recipe/src/page.rs:12:5 [INFO] [stdout] | [INFO] [stdout] 12 | async fn on_enter(&mut self, router: Router, state: &mut S); [INFO] [stdout] | ^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: you can suppress this lint if you plan to use the trait only in your own code, or do not care about auto traits like `Send` on the `Future` [INFO] [stdout] help: you can alternatively desugar to a normal `fn` that returns `impl Future` and add any desired bounds such as `Send`, but these cannot be relaxed without a breaking API change [INFO] [stdout] | [INFO] [stdout] 12 - async fn on_enter(&mut self, router: Router, state: &mut S); [INFO] [stdout] 12 + fn on_enter(&mut self, router: Router, state: &mut S) -> impl std::future::Future + Send; [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of `async fn` in public traits is discouraged as auto trait bounds cannot be specified [INFO] [stdout] --> crates/ratatui-recipe/src/page.rs:13:5 [INFO] [stdout] | [INFO] [stdout] 13 | async fn on_exit(&mut self, router: Router, state: &mut S); [INFO] [stdout] | ^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: you can suppress this lint if you plan to use the trait only in your own code, or do not care about auto traits like `Send` on the `Future` [INFO] [stdout] help: you can alternatively desugar to a normal `fn` that returns `impl Future` and add any desired bounds such as `Send`, but these cannot be relaxed without a breaking API change [INFO] [stdout] | [INFO] [stdout] 13 - async fn on_exit(&mut self, router: Router, state: &mut S); [INFO] [stdout] 13 + fn on_exit(&mut self, router: Router, state: &mut S) -> impl std::future::Future + Send; [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of `async fn` in public traits is discouraged as auto trait bounds cannot be specified [INFO] [stdout] --> crates/ratatui-recipe/src/page.rs:14:5 [INFO] [stdout] | [INFO] [stdout] 14 | async fn on_pause(&mut self, router: Router, state: &mut S); [INFO] [stdout] | ^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: you can suppress this lint if you plan to use the trait only in your own code, or do not care about auto traits like `Send` on the `Future` [INFO] [stdout] help: you can alternatively desugar to a normal `fn` that returns `impl Future` and add any desired bounds such as `Send`, but these cannot be relaxed without a breaking API change [INFO] [stdout] | [INFO] [stdout] 14 - async fn on_pause(&mut self, router: Router, state: &mut S); [INFO] [stdout] 14 + fn on_pause(&mut self, router: Router, state: &mut S) -> impl std::future::Future + Send; [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of `async fn` in public traits is discouraged as auto trait bounds cannot be specified [INFO] [stdout] --> crates/ratatui-recipe/src/page.rs:15:5 [INFO] [stdout] | [INFO] [stdout] 15 | async fn on_resume(&mut self, router: Router, state: &mut S); [INFO] [stdout] | ^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: you can suppress this lint if you plan to use the trait only in your own code, or do not care about auto traits like `Send` on the `Future` [INFO] [stdout] help: you can alternatively desugar to a normal `fn` that returns `impl Future` and add any desired bounds such as `Send`, but these cannot be relaxed without a breaking API change [INFO] [stdout] | [INFO] [stdout] 15 - async fn on_resume(&mut self, router: Router, state: &mut S); [INFO] [stdout] 15 + fn on_resume(&mut self, router: Router, state: &mut S) -> impl std::future::Future + Send; [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of `async fn` in public traits is discouraged as auto trait bounds cannot be specified [INFO] [stdout] --> crates/ratatui-recipe/src/page.rs:16:5 [INFO] [stdout] | [INFO] [stdout] 16 | async fn task(&mut self, router: Router, state: &mut S); [INFO] [stdout] | ^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: you can suppress this lint if you plan to use the trait only in your own code, or do not care about auto traits like `Send` on the `Future` [INFO] [stdout] help: you can alternatively desugar to a normal `fn` that returns `impl Future` and add any desired bounds such as `Send`, but these cannot be relaxed without a breaking API change [INFO] [stdout] | [INFO] [stdout] 16 - async fn task(&mut self, router: Router, state: &mut S); [INFO] [stdout] 16 + fn task(&mut self, router: Router, state: &mut S) -> impl std::future::Future + Send; [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of `async fn` in public traits is discouraged as auto trait bounds cannot be specified [INFO] [stdout] --> crates/ratatui-recipe/src/page.rs:21:5 [INFO] [stdout] | [INFO] [stdout] 21 | async fn on_event(&mut self, event: Event, router: Router) {} [INFO] [stdout] | ^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: you can suppress this lint if you plan to use the trait only in your own code, or do not care about auto traits like `Send` on the `Future` [INFO] [stdout] help: you can alternatively desugar to a normal `fn` that returns `impl Future` and add any desired bounds such as `Send`, but these cannot be relaxed without a breaking API change [INFO] [stdout] | [INFO] [stdout] 21 - async fn on_event(&mut self, event: Event, router: Router) {} [INFO] [stdout] 21 + fn on_event(&mut self, event: Event, router: Router) -> impl std::future::Future + Send { async {} } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of `async fn` in public traits is discouraged as auto trait bounds cannot be specified [INFO] [stdout] --> crates/ratatui-recipe/src/page.rs:22:5 [INFO] [stdout] | [INFO] [stdout] 22 | async fn on_enter(&mut self, router: Router) {} [INFO] [stdout] | ^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: you can suppress this lint if you plan to use the trait only in your own code, or do not care about auto traits like `Send` on the `Future` [INFO] [stdout] help: you can alternatively desugar to a normal `fn` that returns `impl Future` and add any desired bounds such as `Send`, but these cannot be relaxed without a breaking API change [INFO] [stdout] | [INFO] [stdout] 22 - async fn on_enter(&mut self, router: Router) {} [INFO] [stdout] 22 + fn on_enter(&mut self, router: Router) -> impl std::future::Future + Send { async {} } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of `async fn` in public traits is discouraged as auto trait bounds cannot be specified [INFO] [stdout] --> crates/ratatui-recipe/src/page.rs:23:5 [INFO] [stdout] | [INFO] [stdout] 23 | async fn on_exit(&mut self, router: Router) {} [INFO] [stdout] | ^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: you can suppress this lint if you plan to use the trait only in your own code, or do not care about auto traits like `Send` on the `Future` [INFO] [stdout] help: you can alternatively desugar to a normal `fn` that returns `impl Future` and add any desired bounds such as `Send`, but these cannot be relaxed without a breaking API change [INFO] [stdout] | [INFO] [stdout] 23 - async fn on_exit(&mut self, router: Router) {} [INFO] [stdout] 23 + fn on_exit(&mut self, router: Router) -> impl std::future::Future + Send { async {} } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of `async fn` in public traits is discouraged as auto trait bounds cannot be specified [INFO] [stdout] --> crates/ratatui-recipe/src/page.rs:24:5 [INFO] [stdout] | [INFO] [stdout] 24 | async fn on_pause(&mut self, router: Router) {} [INFO] [stdout] | ^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: you can suppress this lint if you plan to use the trait only in your own code, or do not care about auto traits like `Send` on the `Future` [INFO] [stdout] help: you can alternatively desugar to a normal `fn` that returns `impl Future` and add any desired bounds such as `Send`, but these cannot be relaxed without a breaking API change [INFO] [stdout] | [INFO] [stdout] 24 - async fn on_pause(&mut self, router: Router) {} [INFO] [stdout] 24 + fn on_pause(&mut self, router: Router) -> impl std::future::Future + Send { async {} } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of `async fn` in public traits is discouraged as auto trait bounds cannot be specified [INFO] [stdout] --> crates/ratatui-recipe/src/page.rs:25:5 [INFO] [stdout] | [INFO] [stdout] 25 | async fn on_resume(&mut self, router: Router) {} [INFO] [stdout] | ^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: you can suppress this lint if you plan to use the trait only in your own code, or do not care about auto traits like `Send` on the `Future` [INFO] [stdout] help: you can alternatively desugar to a normal `fn` that returns `impl Future` and add any desired bounds such as `Send`, but these cannot be relaxed without a breaking API change [INFO] [stdout] | [INFO] [stdout] 25 - async fn on_resume(&mut self, router: Router) {} [INFO] [stdout] 25 + fn on_resume(&mut self, router: Router) -> impl std::future::Future + Send { async {} } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of `async fn` in public traits is discouraged as auto trait bounds cannot be specified [INFO] [stdout] --> crates/ratatui-recipe/src/page.rs:26:5 [INFO] [stdout] | [INFO] [stdout] 26 | async fn task(&mut self, router: Router) { [INFO] [stdout] | ^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: you can suppress this lint if you plan to use the trait only in your own code, or do not care about auto traits like `Send` on the `Future` [INFO] [stdout] help: you can alternatively desugar to a normal `fn` that returns `impl Future` and add any desired bounds such as `Send`, but these cannot be relaxed without a breaking API change [INFO] [stdout] | [INFO] [stdout] 26 ~ fn task(&mut self, router: Router) -> impl std::future::Future + Send {async { [INFO] [stdout] 27 | future::pending().await [INFO] [stdout] 28 ~ } } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of `async fn` in public traits is discouraged as auto trait bounds cannot be specified [INFO] [stdout] --> crates/ratatui-recipe/src/page.rs:33:5 [INFO] [stdout] | [INFO] [stdout] 33 | async fn on_event(&mut self, event: Event, router: Router, state: &mut State) {} [INFO] [stdout] | ^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: you can suppress this lint if you plan to use the trait only in your own code, or do not care about auto traits like `Send` on the `Future` [INFO] [stdout] help: you can alternatively desugar to a normal `fn` that returns `impl Future` and add any desired bounds such as `Send`, but these cannot be relaxed without a breaking API change [INFO] [stdout] | [INFO] [stdout] 33 - async fn on_event(&mut self, event: Event, router: Router, state: &mut State) {} [INFO] [stdout] 33 + fn on_event(&mut self, event: Event, router: Router, state: &mut State) -> impl std::future::Future + Send { async {} } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of `async fn` in public traits is discouraged as auto trait bounds cannot be specified [INFO] [stdout] --> crates/ratatui-recipe/src/page.rs:34:5 [INFO] [stdout] | [INFO] [stdout] 34 | async fn on_enter(&mut self, router: Router, state: &mut State) {} [INFO] [stdout] | ^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: you can suppress this lint if you plan to use the trait only in your own code, or do not care about auto traits like `Send` on the `Future` [INFO] [stdout] help: you can alternatively desugar to a normal `fn` that returns `impl Future` and add any desired bounds such as `Send`, but these cannot be relaxed without a breaking API change [INFO] [stdout] | [INFO] [stdout] 34 - async fn on_enter(&mut self, router: Router, state: &mut State) {} [INFO] [stdout] 34 + fn on_enter(&mut self, router: Router, state: &mut State) -> impl std::future::Future + Send { async {} } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of `async fn` in public traits is discouraged as auto trait bounds cannot be specified [INFO] [stdout] --> crates/ratatui-recipe/src/page.rs:35:5 [INFO] [stdout] | [INFO] [stdout] 35 | async fn on_exit(&mut self, router: Router, state: &mut State) {} [INFO] [stdout] | ^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: you can suppress this lint if you plan to use the trait only in your own code, or do not care about auto traits like `Send` on the `Future` [INFO] [stdout] help: you can alternatively desugar to a normal `fn` that returns `impl Future` and add any desired bounds such as `Send`, but these cannot be relaxed without a breaking API change [INFO] [stdout] | [INFO] [stdout] 35 - async fn on_exit(&mut self, router: Router, state: &mut State) {} [INFO] [stdout] 35 + fn on_exit(&mut self, router: Router, state: &mut State) -> impl std::future::Future + Send { async {} } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of `async fn` in public traits is discouraged as auto trait bounds cannot be specified [INFO] [stdout] --> crates/ratatui-recipe/src/page.rs:36:5 [INFO] [stdout] | [INFO] [stdout] 36 | async fn on_pause(&mut self, router: Router, state: &mut State) {} [INFO] [stdout] | ^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: you can suppress this lint if you plan to use the trait only in your own code, or do not care about auto traits like `Send` on the `Future` [INFO] [stdout] help: you can alternatively desugar to a normal `fn` that returns `impl Future` and add any desired bounds such as `Send`, but these cannot be relaxed without a breaking API change [INFO] [stdout] | [INFO] [stdout] 36 - async fn on_pause(&mut self, router: Router, state: &mut State) {} [INFO] [stdout] 36 + fn on_pause(&mut self, router: Router, state: &mut State) -> impl std::future::Future + Send { async {} } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of `async fn` in public traits is discouraged as auto trait bounds cannot be specified [INFO] [stdout] --> crates/ratatui-recipe/src/page.rs:37:5 [INFO] [stdout] | [INFO] [stdout] 37 | async fn on_resume(&mut self, router: Router, state: &mut State) {} [INFO] [stdout] | ^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: you can suppress this lint if you plan to use the trait only in your own code, or do not care about auto traits like `Send` on the `Future` [INFO] [stdout] help: you can alternatively desugar to a normal `fn` that returns `impl Future` and add any desired bounds such as `Send`, but these cannot be relaxed without a breaking API change [INFO] [stdout] | [INFO] [stdout] 37 - async fn on_resume(&mut self, router: Router, state: &mut State) {} [INFO] [stdout] 37 + fn on_resume(&mut self, router: Router, state: &mut State) -> impl std::future::Future + Send { async {} } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of `async fn` in public traits is discouraged as auto trait bounds cannot be specified [INFO] [stdout] --> crates/ratatui-recipe/src/page.rs:38:5 [INFO] [stdout] | [INFO] [stdout] 38 | async fn task(&mut self, router: Router, state: &mut State) { [INFO] [stdout] | ^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: you can suppress this lint if you plan to use the trait only in your own code, or do not care about auto traits like `Send` on the `Future` [INFO] [stdout] help: you can alternatively desugar to a normal `fn` that returns `impl Future` and add any desired bounds such as `Send`, but these cannot be relaxed without a breaking API change [INFO] [stdout] | [INFO] [stdout] 38 ~ fn task(&mut self, router: Router, state: &mut State) -> impl std::future::Future + Send {async { [INFO] [stdout] 39 | future::pending().await [INFO] [stdout] 40 ~ } } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `event` [INFO] [stdout] --> crates/ratatui-recipe/src/page.rs:21:34 [INFO] [stdout] | [INFO] [stdout] 21 | async fn on_event(&mut self, event: Event, router: Router) {} [INFO] [stdout] | ^^^^^ help: if this is intentional, prefix it with an underscore: `_event` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `router` [INFO] [stdout] --> crates/ratatui-recipe/src/page.rs:21:48 [INFO] [stdout] | [INFO] [stdout] 21 | async fn on_event(&mut self, event: Event, router: Router) {} [INFO] [stdout] | ^^^^^^ help: if this is intentional, prefix it with an underscore: `_router` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `router` [INFO] [stdout] --> crates/ratatui-recipe/src/page.rs:22:34 [INFO] [stdout] | [INFO] [stdout] 22 | async fn on_enter(&mut self, router: Router) {} [INFO] [stdout] | ^^^^^^ help: if this is intentional, prefix it with an underscore: `_router` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `router` [INFO] [stdout] --> crates/ratatui-recipe/src/page.rs:23:33 [INFO] [stdout] | [INFO] [stdout] 23 | async fn on_exit(&mut self, router: Router) {} [INFO] [stdout] | ^^^^^^ help: if this is intentional, prefix it with an underscore: `_router` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `router` [INFO] [stdout] --> crates/ratatui-recipe/src/page.rs:24:34 [INFO] [stdout] | [INFO] [stdout] 24 | async fn on_pause(&mut self, router: Router) {} [INFO] [stdout] | ^^^^^^ help: if this is intentional, prefix it with an underscore: `_router` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `router` [INFO] [stdout] --> crates/ratatui-recipe/src/page.rs:25:35 [INFO] [stdout] | [INFO] [stdout] 25 | async fn on_resume(&mut self, router: Router) {} [INFO] [stdout] | ^^^^^^ help: if this is intentional, prefix it with an underscore: `_router` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `router` [INFO] [stdout] --> crates/ratatui-recipe/src/page.rs:26:30 [INFO] [stdout] | [INFO] [stdout] 26 | async fn task(&mut self, router: Router) { [INFO] [stdout] | ^^^^^^ help: if this is intentional, prefix it with an underscore: `_router` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `event` [INFO] [stdout] --> crates/ratatui-recipe/src/page.rs:33:34 [INFO] [stdout] | [INFO] [stdout] 33 | async fn on_event(&mut self, event: Event, router: Router, state: &mut State) {} [INFO] [stdout] | ^^^^^ help: if this is intentional, prefix it with an underscore: `_event` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `router` [INFO] [stdout] --> crates/ratatui-recipe/src/page.rs:33:48 [INFO] [stdout] | [INFO] [stdout] 33 | async fn on_event(&mut self, event: Event, router: Router, state: &mut State) {} [INFO] [stdout] | ^^^^^^ help: if this is intentional, prefix it with an underscore: `_router` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `state` [INFO] [stdout] --> crates/ratatui-recipe/src/page.rs:33:68 [INFO] [stdout] | [INFO] [stdout] 33 | async fn on_event(&mut self, event: Event, router: Router, state: &mut State) {} [INFO] [stdout] | ^^^^^ help: if this is intentional, prefix it with an underscore: `_state` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `router` [INFO] [stdout] --> crates/ratatui-recipe/src/page.rs:34:34 [INFO] [stdout] | [INFO] [stdout] 34 | async fn on_enter(&mut self, router: Router, state: &mut State) {} [INFO] [stdout] | ^^^^^^ help: if this is intentional, prefix it with an underscore: `_router` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `state` [INFO] [stdout] --> crates/ratatui-recipe/src/page.rs:34:54 [INFO] [stdout] | [INFO] [stdout] 34 | async fn on_enter(&mut self, router: Router, state: &mut State) {} [INFO] [stdout] | ^^^^^ help: if this is intentional, prefix it with an underscore: `_state` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `router` [INFO] [stdout] --> crates/ratatui-recipe/src/page.rs:35:33 [INFO] [stdout] | [INFO] [stdout] 35 | async fn on_exit(&mut self, router: Router, state: &mut State) {} [INFO] [stdout] | ^^^^^^ help: if this is intentional, prefix it with an underscore: `_router` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `state` [INFO] [stdout] --> crates/ratatui-recipe/src/page.rs:35:53 [INFO] [stdout] | [INFO] [stdout] 35 | async fn on_exit(&mut self, router: Router, state: &mut State) {} [INFO] [stdout] | ^^^^^ help: if this is intentional, prefix it with an underscore: `_state` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `router` [INFO] [stdout] --> crates/ratatui-recipe/src/page.rs:36:34 [INFO] [stdout] | [INFO] [stdout] 36 | async fn on_pause(&mut self, router: Router, state: &mut State) {} [INFO] [stdout] | ^^^^^^ help: if this is intentional, prefix it with an underscore: `_router` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `state` [INFO] [stdout] --> crates/ratatui-recipe/src/page.rs:36:54 [INFO] [stdout] | [INFO] [stdout] 36 | async fn on_pause(&mut self, router: Router, state: &mut State) {} [INFO] [stdout] | ^^^^^ help: if this is intentional, prefix it with an underscore: `_state` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `router` [INFO] [stdout] --> crates/ratatui-recipe/src/page.rs:37:35 [INFO] [stdout] | [INFO] [stdout] 37 | async fn on_resume(&mut self, router: Router, state: &mut State) {} [INFO] [stdout] | ^^^^^^ help: if this is intentional, prefix it with an underscore: `_router` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `state` [INFO] [stdout] --> crates/ratatui-recipe/src/page.rs:37:55 [INFO] [stdout] | [INFO] [stdout] 37 | async fn on_resume(&mut self, router: Router, state: &mut State) {} [INFO] [stdout] | ^^^^^ help: if this is intentional, prefix it with an underscore: `_state` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `router` [INFO] [stdout] --> crates/ratatui-recipe/src/page.rs:38:30 [INFO] [stdout] | [INFO] [stdout] 38 | async fn task(&mut self, router: Router, state: &mut State) { [INFO] [stdout] | ^^^^^^ help: if this is intentional, prefix it with an underscore: `_router` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `state` [INFO] [stdout] --> crates/ratatui-recipe/src/page.rs:38:50 [INFO] [stdout] | [INFO] [stdout] 38 | async fn task(&mut self, router: Router, state: &mut State) { [INFO] [stdout] | ^^^^^ help: if this is intentional, prefix it with an underscore: `_state` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of `async fn` in public traits is discouraged as auto trait bounds cannot be specified [INFO] [stdout] --> crates/ratatui-recipe/src/page.rs:11:5 [INFO] [stdout] | [INFO] [stdout] 11 | async fn on_event(&mut self, event: Event, router: Router, state: &mut S); [INFO] [stdout] | ^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: you can suppress this lint if you plan to use the trait only in your own code, or do not care about auto traits like `Send` on the `Future` [INFO] [stdout] = note: `#[warn(async_fn_in_trait)]` on by default [INFO] [stdout] help: you can alternatively desugar to a normal `fn` that returns `impl Future` and add any desired bounds such as `Send`, but these cannot be relaxed without a breaking API change [INFO] [stdout] | [INFO] [stdout] 11 - async fn on_event(&mut self, event: Event, router: Router, state: &mut S); [INFO] [stdout] 11 + fn on_event(&mut self, event: Event, router: Router, state: &mut S) -> impl std::future::Future + Send; [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of `async fn` in public traits is discouraged as auto trait bounds cannot be specified [INFO] [stdout] --> crates/ratatui-recipe/src/page.rs:12:5 [INFO] [stdout] | [INFO] [stdout] 12 | async fn on_enter(&mut self, router: Router, state: &mut S); [INFO] [stdout] | ^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: you can suppress this lint if you plan to use the trait only in your own code, or do not care about auto traits like `Send` on the `Future` [INFO] [stdout] help: you can alternatively desugar to a normal `fn` that returns `impl Future` and add any desired bounds such as `Send`, but these cannot be relaxed without a breaking API change [INFO] [stdout] | [INFO] [stdout] 12 - async fn on_enter(&mut self, router: Router, state: &mut S); [INFO] [stdout] 12 + fn on_enter(&mut self, router: Router, state: &mut S) -> impl std::future::Future + Send; [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of `async fn` in public traits is discouraged as auto trait bounds cannot be specified [INFO] [stdout] --> crates/ratatui-recipe/src/page.rs:13:5 [INFO] [stdout] | [INFO] [stdout] 13 | async fn on_exit(&mut self, router: Router, state: &mut S); [INFO] [stdout] | ^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: you can suppress this lint if you plan to use the trait only in your own code, or do not care about auto traits like `Send` on the `Future` [INFO] [stdout] help: you can alternatively desugar to a normal `fn` that returns `impl Future` and add any desired bounds such as `Send`, but these cannot be relaxed without a breaking API change [INFO] [stdout] | [INFO] [stdout] 13 - async fn on_exit(&mut self, router: Router, state: &mut S); [INFO] [stdout] 13 + fn on_exit(&mut self, router: Router, state: &mut S) -> impl std::future::Future + Send; [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of `async fn` in public traits is discouraged as auto trait bounds cannot be specified [INFO] [stdout] --> crates/ratatui-recipe/src/page.rs:14:5 [INFO] [stdout] | [INFO] [stdout] 14 | async fn on_pause(&mut self, router: Router, state: &mut S); [INFO] [stdout] | ^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: you can suppress this lint if you plan to use the trait only in your own code, or do not care about auto traits like `Send` on the `Future` [INFO] [stdout] help: you can alternatively desugar to a normal `fn` that returns `impl Future` and add any desired bounds such as `Send`, but these cannot be relaxed without a breaking API change [INFO] [stdout] | [INFO] [stdout] 14 - async fn on_pause(&mut self, router: Router, state: &mut S); [INFO] [stdout] 14 + fn on_pause(&mut self, router: Router, state: &mut S) -> impl std::future::Future + Send; [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of `async fn` in public traits is discouraged as auto trait bounds cannot be specified [INFO] [stdout] --> crates/ratatui-recipe/src/page.rs:15:5 [INFO] [stdout] | [INFO] [stdout] 15 | async fn on_resume(&mut self, router: Router, state: &mut S); [INFO] [stdout] | ^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: you can suppress this lint if you plan to use the trait only in your own code, or do not care about auto traits like `Send` on the `Future` [INFO] [stdout] help: you can alternatively desugar to a normal `fn` that returns `impl Future` and add any desired bounds such as `Send`, but these cannot be relaxed without a breaking API change [INFO] [stdout] | [INFO] [stdout] 15 - async fn on_resume(&mut self, router: Router, state: &mut S); [INFO] [stdout] 15 + fn on_resume(&mut self, router: Router, state: &mut S) -> impl std::future::Future + Send; [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of `async fn` in public traits is discouraged as auto trait bounds cannot be specified [INFO] [stdout] --> crates/ratatui-recipe/src/page.rs:16:5 [INFO] [stdout] | [INFO] [stdout] 16 | async fn task(&mut self, router: Router, state: &mut S); [INFO] [stdout] | ^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: you can suppress this lint if you plan to use the trait only in your own code, or do not care about auto traits like `Send` on the `Future` [INFO] [stdout] help: you can alternatively desugar to a normal `fn` that returns `impl Future` and add any desired bounds such as `Send`, but these cannot be relaxed without a breaking API change [INFO] [stdout] | [INFO] [stdout] 16 - async fn task(&mut self, router: Router, state: &mut S); [INFO] [stdout] 16 + fn task(&mut self, router: Router, state: &mut S) -> impl std::future::Future + Send; [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of `async fn` in public traits is discouraged as auto trait bounds cannot be specified [INFO] [stdout] --> crates/ratatui-recipe/src/page.rs:21:5 [INFO] [stdout] | [INFO] [stdout] 21 | async fn on_event(&mut self, event: Event, router: Router) {} [INFO] [stdout] | ^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: you can suppress this lint if you plan to use the trait only in your own code, or do not care about auto traits like `Send` on the `Future` [INFO] [stdout] help: you can alternatively desugar to a normal `fn` that returns `impl Future` and add any desired bounds such as `Send`, but these cannot be relaxed without a breaking API change [INFO] [stdout] | [INFO] [stdout] 21 - async fn on_event(&mut self, event: Event, router: Router) {} [INFO] [stdout] 21 + fn on_event(&mut self, event: Event, router: Router) -> impl std::future::Future + Send { async {} } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of `async fn` in public traits is discouraged as auto trait bounds cannot be specified [INFO] [stdout] --> crates/ratatui-recipe/src/page.rs:22:5 [INFO] [stdout] | [INFO] [stdout] 22 | async fn on_enter(&mut self, router: Router) {} [INFO] [stdout] | ^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: you can suppress this lint if you plan to use the trait only in your own code, or do not care about auto traits like `Send` on the `Future` [INFO] [stdout] help: you can alternatively desugar to a normal `fn` that returns `impl Future` and add any desired bounds such as `Send`, but these cannot be relaxed without a breaking API change [INFO] [stdout] | [INFO] [stdout] 22 - async fn on_enter(&mut self, router: Router) {} [INFO] [stdout] 22 + fn on_enter(&mut self, router: Router) -> impl std::future::Future + Send { async {} } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of `async fn` in public traits is discouraged as auto trait bounds cannot be specified [INFO] [stdout] --> crates/ratatui-recipe/src/page.rs:23:5 [INFO] [stdout] | [INFO] [stdout] 23 | async fn on_exit(&mut self, router: Router) {} [INFO] [stdout] | ^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: you can suppress this lint if you plan to use the trait only in your own code, or do not care about auto traits like `Send` on the `Future` [INFO] [stdout] help: you can alternatively desugar to a normal `fn` that returns `impl Future` and add any desired bounds such as `Send`, but these cannot be relaxed without a breaking API change [INFO] [stdout] | [INFO] [stdout] 23 - async fn on_exit(&mut self, router: Router) {} [INFO] [stdout] 23 + fn on_exit(&mut self, router: Router) -> impl std::future::Future + Send { async {} } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of `async fn` in public traits is discouraged as auto trait bounds cannot be specified [INFO] [stdout] --> crates/ratatui-recipe/src/page.rs:24:5 [INFO] [stdout] | [INFO] [stdout] 24 | async fn on_pause(&mut self, router: Router) {} [INFO] [stdout] | ^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: you can suppress this lint if you plan to use the trait only in your own code, or do not care about auto traits like `Send` on the `Future` [INFO] [stdout] help: you can alternatively desugar to a normal `fn` that returns `impl Future` and add any desired bounds such as `Send`, but these cannot be relaxed without a breaking API change [INFO] [stdout] | [INFO] [stdout] 24 - async fn on_pause(&mut self, router: Router) {} [INFO] [stdout] 24 + fn on_pause(&mut self, router: Router) -> impl std::future::Future + Send { async {} } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of `async fn` in public traits is discouraged as auto trait bounds cannot be specified [INFO] [stdout] --> crates/ratatui-recipe/src/page.rs:25:5 [INFO] [stdout] | [INFO] [stdout] 25 | async fn on_resume(&mut self, router: Router) {} [INFO] [stdout] | ^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: you can suppress this lint if you plan to use the trait only in your own code, or do not care about auto traits like `Send` on the `Future` [INFO] [stdout] help: you can alternatively desugar to a normal `fn` that returns `impl Future` and add any desired bounds such as `Send`, but these cannot be relaxed without a breaking API change [INFO] [stdout] | [INFO] [stdout] 25 - async fn on_resume(&mut self, router: Router) {} [INFO] [stdout] 25 + fn on_resume(&mut self, router: Router) -> impl std::future::Future + Send { async {} } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of `async fn` in public traits is discouraged as auto trait bounds cannot be specified [INFO] [stdout] --> crates/ratatui-recipe/src/page.rs:26:5 [INFO] [stdout] | [INFO] [stdout] 26 | async fn task(&mut self, router: Router) { [INFO] [stdout] | ^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: you can suppress this lint if you plan to use the trait only in your own code, or do not care about auto traits like `Send` on the `Future` [INFO] [stdout] help: you can alternatively desugar to a normal `fn` that returns `impl Future` and add any desired bounds such as `Send`, but these cannot be relaxed without a breaking API change [INFO] [stdout] | [INFO] [stdout] 26 ~ fn task(&mut self, router: Router) -> impl std::future::Future + Send {async { [INFO] [stdout] 27 | future::pending().await [INFO] [stdout] 28 ~ } } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of `async fn` in public traits is discouraged as auto trait bounds cannot be specified [INFO] [stdout] --> crates/ratatui-recipe/src/page.rs:33:5 [INFO] [stdout] | [INFO] [stdout] 33 | async fn on_event(&mut self, event: Event, router: Router, state: &mut State) {} [INFO] [stdout] | ^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: you can suppress this lint if you plan to use the trait only in your own code, or do not care about auto traits like `Send` on the `Future` [INFO] [stdout] help: you can alternatively desugar to a normal `fn` that returns `impl Future` and add any desired bounds such as `Send`, but these cannot be relaxed without a breaking API change [INFO] [stdout] | [INFO] [stdout] 33 - async fn on_event(&mut self, event: Event, router: Router, state: &mut State) {} [INFO] [stdout] 33 + fn on_event(&mut self, event: Event, router: Router, state: &mut State) -> impl std::future::Future + Send { async {} } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of `async fn` in public traits is discouraged as auto trait bounds cannot be specified [INFO] [stdout] --> crates/ratatui-recipe/src/page.rs:34:5 [INFO] [stdout] | [INFO] [stdout] 34 | async fn on_enter(&mut self, router: Router, state: &mut State) {} [INFO] [stdout] | ^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: you can suppress this lint if you plan to use the trait only in your own code, or do not care about auto traits like `Send` on the `Future` [INFO] [stdout] help: you can alternatively desugar to a normal `fn` that returns `impl Future` and add any desired bounds such as `Send`, but these cannot be relaxed without a breaking API change [INFO] [stdout] | [INFO] [stdout] 34 - async fn on_enter(&mut self, router: Router, state: &mut State) {} [INFO] [stdout] 34 + fn on_enter(&mut self, router: Router, state: &mut State) -> impl std::future::Future + Send { async {} } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of `async fn` in public traits is discouraged as auto trait bounds cannot be specified [INFO] [stdout] --> crates/ratatui-recipe/src/page.rs:35:5 [INFO] [stdout] | [INFO] [stdout] 35 | async fn on_exit(&mut self, router: Router, state: &mut State) {} [INFO] [stdout] | ^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: you can suppress this lint if you plan to use the trait only in your own code, or do not care about auto traits like `Send` on the `Future` [INFO] [stdout] help: you can alternatively desugar to a normal `fn` that returns `impl Future` and add any desired bounds such as `Send`, but these cannot be relaxed without a breaking API change [INFO] [stdout] | [INFO] [stdout] 35 - async fn on_exit(&mut self, router: Router, state: &mut State) {} [INFO] [stdout] 35 + fn on_exit(&mut self, router: Router, state: &mut State) -> impl std::future::Future + Send { async {} } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of `async fn` in public traits is discouraged as auto trait bounds cannot be specified [INFO] [stdout] --> crates/ratatui-recipe/src/page.rs:36:5 [INFO] [stdout] | [INFO] [stdout] 36 | async fn on_pause(&mut self, router: Router, state: &mut State) {} [INFO] [stdout] | ^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: you can suppress this lint if you plan to use the trait only in your own code, or do not care about auto traits like `Send` on the `Future` [INFO] [stdout] help: you can alternatively desugar to a normal `fn` that returns `impl Future` and add any desired bounds such as `Send`, but these cannot be relaxed without a breaking API change [INFO] [stdout] | [INFO] [stdout] 36 - async fn on_pause(&mut self, router: Router, state: &mut State) {} [INFO] [stdout] 36 + fn on_pause(&mut self, router: Router, state: &mut State) -> impl std::future::Future + Send { async {} } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of `async fn` in public traits is discouraged as auto trait bounds cannot be specified [INFO] [stdout] --> crates/ratatui-recipe/src/page.rs:37:5 [INFO] [stdout] | [INFO] [stdout] 37 | async fn on_resume(&mut self, router: Router, state: &mut State) {} [INFO] [stdout] | ^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: you can suppress this lint if you plan to use the trait only in your own code, or do not care about auto traits like `Send` on the `Future` [INFO] [stdout] help: you can alternatively desugar to a normal `fn` that returns `impl Future` and add any desired bounds such as `Send`, but these cannot be relaxed without a breaking API change [INFO] [stdout] | [INFO] [stdout] 37 - async fn on_resume(&mut self, router: Router, state: &mut State) {} [INFO] [stdout] 37 + fn on_resume(&mut self, router: Router, state: &mut State) -> impl std::future::Future + Send { async {} } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of `async fn` in public traits is discouraged as auto trait bounds cannot be specified [INFO] [stdout] --> crates/ratatui-recipe/src/page.rs:38:5 [INFO] [stdout] | [INFO] [stdout] 38 | async fn task(&mut self, router: Router, state: &mut State) { [INFO] [stdout] | ^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: you can suppress this lint if you plan to use the trait only in your own code, or do not care about auto traits like `Send` on the `Future` [INFO] [stdout] help: you can alternatively desugar to a normal `fn` that returns `impl Future` and add any desired bounds such as `Send`, but these cannot be relaxed without a breaking API change [INFO] [stdout] | [INFO] [stdout] 38 ~ fn task(&mut self, router: Router, state: &mut State) -> impl std::future::Future + Send {async { [INFO] [stdout] 39 | future::pending().await [INFO] [stdout] 40 ~ } } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] Finished `dev` profile [unoptimized + debuginfo] target(s) in 14.62s [INFO] running `Command { std: "docker" "inspect" "23eb6aed6631ed32c0966e3c617d7976a8200b57fdc64fb7b2f9d2dc48b8346b", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "23eb6aed6631ed32c0966e3c617d7976a8200b57fdc64fb7b2f9d2dc48b8346b", kill_on_drop: false }` [INFO] [stdout] 23eb6aed6631ed32c0966e3c617d7976a8200b57fdc64fb7b2f9d2dc48b8346b