[INFO] cloning repository https://github.com/open-soulmate/opensoma
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/open-soulmate/opensoma" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fopen-soulmate%2Fopensoma", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fopen-soulmate%2Fopensoma'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] a90afc967c53d1b04e85e380a3fe1cd1d01ad75c
[INFO] checking open-soulmate/opensoma against 52995a223f2919dd3e2e427231db90a257350ded for pr-129249-4
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fopen-soulmate%2Fopensoma" "/workspace/builds/worker-6-tc2/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-6-tc2/source'...
[INFO] [stderr] done.
[INFO] started tweaking git repo https://github.com/open-soulmate/opensoma
[INFO] finished tweaking git repo https://github.com/open-soulmate/opensoma
[INFO] tweaked toml for git repo https://github.com/open-soulmate/opensoma written to /workspace/builds/worker-6-tc2/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/open-soulmate/opensoma on toolchain 52995a223f2919dd3e2e427231db90a257350ded
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+52995a223f2919dd3e2e427231db90a257350ded" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate git repo https://github.com/open-soulmate/opensoma 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" "+52995a223f2919dd3e2e427231db90a257350ded" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-tc2/target:/opt/rustwide/target:rw,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" "-m" "1610612736" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:c0af3998e971868164375a7dfb646c9933ddd1a3bdb00fa2041266763dc1eeab" "sleep" "infinity", kill_on_drop: false }`
[INFO] [stdout] ecceef1b7709d50861507a2039b83d12e2425035e841bb9e2b11e44eb81e5fa6
[INFO] running `Command { std: "docker" "start" "ecceef1b7709d50861507a2039b83d12e2425035e841bb9e2b11e44eb81e5fa6", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "ecceef1b7709d50861507a2039b83d12e2425035e841bb9e2b11e44eb81e5fa6", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-w" "/opt/rustwide/workdir" "--user" "0:0" "ecceef1b7709d50861507a2039b83d12e2425035e841bb9e2b11e44eb81e5fa6" "/opt/rustwide/cargo-home/bin/cargo" "+52995a223f2919dd3e2e427231db90a257350ded" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "ecceef1b7709d50861507a2039b83d12e2425035e841bb9e2b11e44eb81e5fa6", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-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" "-w" "/opt/rustwide/workdir" "--user" "0:0" "ecceef1b7709d50861507a2039b83d12e2425035e841bb9e2b11e44eb81e5fa6" "/opt/rustwide/cargo-home/bin/cargo" "+52995a223f2919dd3e2e427231db90a257350ded" "check" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }`
[INFO] [stderr]     Checking memchr v2.8.3
[INFO] [stderr]    Compiling find-msvc-tools v0.1.10
[INFO] [stderr]     Checking futures-sink v0.3.34
[INFO] [stderr]     Checking futures-task v0.3.34
[INFO] [stderr]    Compiling either v1.17.0
[INFO] [stderr]     Checking futures-io v0.3.34
[INFO] [stderr]    Compiling syn v3.0.3
[INFO] [stderr]     Checking mio v1.2.2
[INFO] [stderr]     Checking getrandom v0.2.17
[INFO] [stderr]    Compiling libc v0.2.189
[INFO] [stderr]    Compiling darling_core v0.20.11
[INFO] [stderr]    Compiling zerocopy v0.8.56
[INFO] [stderr]     Checking instant v0.1.13
[INFO] [stderr]     Checking sync_wrapper v1.0.2
[INFO] [stderr]    Compiling rustls v0.23.43
[INFO] [stderr]    Compiling regex-syntax v0.8.11
[INFO] [stderr]     Checking futures-channel v0.3.34
[INFO] [stderr]    Compiling bytes v1.12.1
[INFO] [stderr]    Compiling linux-raw-sys v0.12.1
[INFO] [stderr]    Compiling bitflags v2.13.1
[INFO] [stderr]    Compiling serde_core v1.0.229
[INFO] [stderr]    Compiling fixedbitset v0.5.7
[INFO] [stderr]    Compiling lexical-core v0.7.6
[INFO] [stderr]    Compiling openssl v0.10.81
[INFO] [stderr]    Compiling inotify-sys v0.1.8
[INFO] [stderr]    Compiling cc v1.4.2
[INFO] [stderr]    Compiling once_cell v1.21.4
[INFO] [stderr]    Compiling itertools v0.14.0
[INFO] [stderr]     Checking aho-corasick v1.1.5
[INFO] [stderr]    Compiling rustix v1.1.4
[INFO] [stderr]     Checking serde_json v1.0.151
[INFO] [stderr]    Compiling prettyplease v0.2.37
[INFO] [stderr]     Checking rand_core v0.6.4
[INFO] [stderr]    Compiling indexmap v1.9.3
[INFO] [stderr]    Compiling petgraph v0.7.1
[INFO] [stderr]     Checking http-body-util v0.1.4
[INFO] [stderr]    Compiling openssl-macros v0.1.1
[INFO] [stderr]    Compiling nom v5.1.3
[INFO] [stderr]     Checking arrayvec v0.5.2
[INFO] [stderr]    Compiling native-tls v0.2.18
[INFO] [stderr]    Compiling multimap v0.10.1
[INFO] [stderr]    Compiling parking_lot_core v0.8.6
[INFO] [stderr]    Compiling mime_guess v2.0.5
[INFO] [stderr]    Compiling getrandom v0.4.3
[INFO] [stderr]     Checking crossbeam-deque v0.8.7
[INFO] [stderr]    Compiling regex-automata v0.4.18
[INFO] [stderr]    Compiling pin-project-internal v1.1.13
[INFO] [stderr]     Checking hashbrown v0.12.3
[INFO] [stderr]     Checking rayon-core v1.13.0
[INFO] [stderr]     Checking digest v0.10.7
[INFO] [stderr]     Checking inotify v0.10.2
[INFO] [stderr]     Checking notify-types v1.0.1
[INFO] [stderr]     Checking webpki-roots v1.0.9
[INFO] [stderr]    Compiling getset v0.1.7
[INFO] [stderr]     Checking serde_path_to_error v0.1.20
[INFO] [stderr]    Compiling async-stream-impl v0.3.6
[INFO] [stderr]    Compiling tempfile v3.27.0
[INFO] [stderr]     Checking filetime v0.2.29
[INFO] [stderr]     Checking unicase v2.9.0
[INFO] [stderr]     Checking matchit v0.7.3
[INFO] [stderr]     Checking notify v7.0.0
[INFO] [stderr]    Compiling prost-derive v0.13.5
[INFO] [stderr]    Compiling ring v0.17.14
[INFO] [stderr]    Compiling openssl-sys v0.9.117
[INFO] [stderr]     Checking rayon v1.12.0
[INFO] [stderr]     Checking charset v0.1.5
[INFO] [stderr]     Checking async-stream v0.3.6
[INFO] [stderr]     Checking pin-project v1.1.13
[INFO] [stderr]     Checking parking_lot v0.11.2
[INFO] [stderr]     Checking fxhash v0.2.1
[INFO] [stderr]     Checking rustls-pemfile v2.2.0
[INFO] [stderr]     Checking fs2 v0.4.3
[INFO] [stderr]     Checking socket2 v0.5.10
[INFO] [stderr]     Checking bufstream v0.1.4
[INFO] [stderr]     Checking quoted_printable v0.5.2
[INFO] [stderr]     Checking sled v0.34.7
[INFO] [stderr]     Checking sha2 v0.10.9
[INFO] [stderr]     Checking mailparse v0.15.0
[INFO] [stderr]     Checking notify-debouncer-mini v0.5.0
[INFO] [stderr]     Checking hmac v0.12.1
[INFO] [stderr]     Checking quick-xml v0.36.2
[INFO] [stderr]    Compiling darling_macro v0.20.11
[INFO] [stderr]    Compiling darling v0.20.11
[INFO] [stderr]    Compiling derive_builder_core v0.20.2
[INFO] [stderr]    Compiling regex v1.13.1
[INFO] [stderr]    Compiling prost v0.13.5
[INFO] [stderr]    Compiling derive_builder_macro v0.20.2
[INFO] [stderr]    Compiling prost-types v0.13.5
[INFO] [stderr]     Checking matchers v0.2.0
[INFO] [stderr]     Checking derive_builder v0.20.2
[INFO] [stderr]    Compiling serde_derive v1.0.229
[INFO] [stderr]    Compiling tokio-macros v2.7.2
[INFO] [stderr]    Compiling futures-macro v0.3.34
[INFO] [stderr]    Compiling displaydoc v0.2.7
[INFO] [stderr]    Compiling async-trait v0.1.92
[INFO] [stderr]    Compiling thiserror-impl v2.0.20
[INFO] [stderr]     Checking ppv-lite86 v0.2.21
[INFO] [stderr]     Checking tokio v1.53.1
[INFO] [stderr]     Checking imap-proto v0.10.2
[INFO] [stderr]    Compiling prost-build v0.13.5
[INFO] [stderr]     Checking tinystr v0.8.3
[INFO] [stderr]     Checking zerotrie v0.2.4
[INFO] [stderr]     Checking icu_collections v2.2.0
[INFO] [stderr]     Checking futures-util v0.3.34
[INFO] [stderr]     Checking rand_chacha v0.3.1
[INFO] [stderr]     Checking icu_locale_core v2.2.0
[INFO] [stderr]     Checking rand v0.8.7
[INFO] [stderr]     Checking sysinfo v0.33.1
[INFO] [stderr]     Checking thiserror v2.0.20
[INFO] [stderr]    Compiling tonic-build v0.12.3
[INFO] [stderr]     Checking icu_provider v2.2.0
[INFO] [stderr]     Checking icu_properties v2.2.0
[INFO] [stderr]     Checking icu_normalizer v2.2.0
[INFO] [stderr]     Checking rustls-webpki v0.103.14
[INFO] [stderr]    Compiling opensoma v0.1.0 (/opt/rustwide/workdir)
[INFO] [stderr]     Checking serde v1.0.229
[INFO] [stderr]     Checking idna_adapter v1.2.2
[INFO] [stderr]     Checking idna v1.1.0
[INFO] [stderr]     Checking url v2.5.8
[INFO] [stderr]    Compiling neli-proc-macros v0.2.2
[INFO] [stderr]     Checking serde_urlencoded v0.7.1
[INFO] [stderr]     Checking toml_datetime v0.6.11
[INFO] [stderr]     Checking serde_spanned v0.6.9
[INFO] [stderr]     Checking chrono v0.4.45
[INFO] [stderr]     Checking tracing-serde v0.2.0
[INFO] [stderr]     Checking tracing-subscriber v0.3.23
[INFO] [stderr]     Checking toml_edit v0.22.27
[INFO] [stderr]     Checking axum-core v0.4.5
[INFO] [stderr]     Checking futures-executor v0.3.34
[INFO] [stderr]     Checking futures v0.3.34
[INFO] [stderr]     Checking neli v0.7.4
[INFO] [stderr]     Checking imap v2.4.1
[INFO] [stderr]     Checking toml v0.8.23
[INFO] [stderr]     Checking tokio-util v0.7.19
[INFO] [stderr]     Checking tower v0.5.3
[INFO] [stderr]     Checking tokio-native-tls v0.3.1
[INFO] [stderr]     Checking tokio-rustls v0.26.4
[INFO] [stderr]     Checking local-ip-address v0.6.13
[INFO] [stderr]     Checking h2 v0.4.15
[INFO] [stderr]     Checking tokio-stream v0.1.19
[INFO] [stderr]     Checking tower v0.4.13
[INFO] [stderr]     Checking tower-http v0.6.11
[INFO] [stderr]     Checking hyper v1.11.0
[INFO] [stderr]     Checking hyper-util v0.1.20
[INFO] [stderr]     Checking hyper-timeout v0.5.2
[INFO] [stderr]     Checking axum v0.7.9
[INFO] [stderr]     Checking hyper-rustls v0.27.9
[INFO] [stderr]     Checking reqwest v0.12.28
[INFO] [stderr]     Checking tonic v0.12.3
[INFO] [stdout] error: useless conversion to the same type: `anyhow::Error`
[INFO] [stdout]    --> src/connector/mod.rs:65:44
[INFO] [stdout]     |
[INFO] [stdout]  51 |   macro_rules! retry_async {
[INFO] [stdout] ...
[INFO] [stdout]  65 |                       _retry_last_err = Some(e.into());
[INFO] [stdout]     |                                              ^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]    ::: src/connector/dingtalk.rs:193:17
[INFO] [stdout]     |
[INFO] [stdout] 193 |       let token = retry_async!("dingtalk_token", 3, {
[INFO] [stdout]     |  _________________-
[INFO] [stdout] 194 | |         fetch_access_token(&http_client, &config).await
[INFO] [stdout] 195 | |     })?;
[INFO] [stdout]     | |______- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: you can instead use the fully-qualified path `<anyhow::Error as Into<anyhow::Error>::into(val) to avoid triggering this lint
[INFO] [stdout]     = note: `#[deny(self_type_conversion)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `anyhow::Error`
[INFO] [stdout]    --> src/connector/mod.rs:65:44
[INFO] [stdout]     |
[INFO] [stdout]  51 |   macro_rules! retry_async {
[INFO] [stdout] ...
[INFO] [stdout]  65 |                       _retry_last_err = Some(e.into());
[INFO] [stdout]     |                                              ^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]    ::: src/connector/discord.rs:130:16
[INFO] [stdout]     |
[INFO] [stdout] 130 |       let resp = retry_async!("discord_channels", 3, {
[INFO] [stdout]     |  ________________-
[INFO] [stdout] 131 | |         let r = client
[INFO] [stdout] 132 | |             .get(&url)
[INFO] [stdout] 133 | |             .header("Authorization", format!("Bot {}", bot_token))
[INFO] [stdout] ...   |
[INFO] [stdout] 148 | |         Ok::<Vec<DiscordChannel>, anyhow::Error>(channels)
[INFO] [stdout] 149 | |     })?;
[INFO] [stdout]     | |______- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: you can instead use the fully-qualified path `<anyhow::Error as Into<anyhow::Error>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `anyhow::Error`
[INFO] [stdout]    --> src/connector/mod.rs:65:44
[INFO] [stdout]     |
[INFO] [stdout]  51 |   macro_rules! retry_async {
[INFO] [stdout] ...
[INFO] [stdout]  65 |                       _retry_last_err = Some(e.into());
[INFO] [stdout]     |                                              ^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]    ::: src/connector/discord.rs:177:16
[INFO] [stdout]     |
[INFO] [stdout] 177 |       let resp = retry_async!("discord_messages", 3, {
[INFO] [stdout]     |  ________________-
[INFO] [stdout] 178 | |         let r = client
[INFO] [stdout] 179 | |             .get(&url)
[INFO] [stdout] 180 | |             .header("Authorization", format!("Bot {}", bot_token))
[INFO] [stdout] ...   |
[INFO] [stdout] 195 | |         Ok::<Vec<DiscordMessage>, anyhow::Error>(messages)
[INFO] [stdout] 196 | |     })?;
[INFO] [stdout]     | |______- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: you can instead use the fully-qualified path `<anyhow::Error as Into<anyhow::Error>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `anyhow::Error`
[INFO] [stdout]   --> src/connector/mod.rs:65:44
[INFO] [stdout]    |
[INFO] [stdout] 51 |   macro_rules! retry_async {
[INFO] [stdout] ...
[INFO] [stdout] 65 |                       _retry_last_err = Some(e.into());
[INFO] [stdout]    |                                              ^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]   ::: src/connector/feishu.rs:92:17
[INFO] [stdout]    |
[INFO] [stdout] 92 |       let token = retry_async!("feishu_token", 3, {
[INFO] [stdout]    |  _________________-
[INFO] [stdout] 93 | |         fetch_tenant_token(&http_client, &config).await
[INFO] [stdout] 94 | |     })?;
[INFO] [stdout]    | |______- in this macro invocation
[INFO] [stdout]    |
[INFO] [stdout]    = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]    = note: you can instead use the fully-qualified path `<anyhow::Error as Into<anyhow::Error>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `anyhow::Error`
[INFO] [stdout]    --> src/connector/mod.rs:65:44
[INFO] [stdout]     |
[INFO] [stdout]  51 |   macro_rules! retry_async {
[INFO] [stdout] ...
[INFO] [stdout]  65 |                       _retry_last_err = Some(e.into());
[INFO] [stdout]     |                                              ^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]    ::: src/connector/slack.rs:298:43
[INFO] [stdout]     |
[INFO] [stdout] 298 |           let resp: ConversationsResponse = retry_async!("slack_conversations_list", 3, {
[INFO] [stdout]     |  ___________________________________________-
[INFO] [stdout] 299 | |             let r = slack_api_get(&client, &url, bot_token).await?;
[INFO] [stdout] 300 | |             r.json::<ConversationsResponse>()
[INFO] [stdout] 301 | |                 .await
[INFO] [stdout] 302 | |                 .context("Failed to parse Slack conversations response")
[INFO] [stdout] 303 | |         })?;
[INFO] [stdout]     | |__________- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: you can instead use the fully-qualified path `<anyhow::Error as Into<anyhow::Error>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `anyhow::Error`
[INFO] [stdout]    --> src/connector/mod.rs:65:44
[INFO] [stdout]     |
[INFO] [stdout]  51 |   macro_rules! retry_async {
[INFO] [stdout] ...
[INFO] [stdout]  65 |                       _retry_last_err = Some(e.into());
[INFO] [stdout]     |                                              ^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]    ::: src/connector/slack.rs:352:33
[INFO] [stdout]     |
[INFO] [stdout] 352 |       let resp: HistoryResponse = retry_async!("slack_conversations_history", 3, {
[INFO] [stdout]     |  _________________________________-
[INFO] [stdout] 353 | |         let r = slack_api_get(client, &url, bot_token).await?;
[INFO] [stdout] 354 | |         r.json::<HistoryResponse>()
[INFO] [stdout] 355 | |             .await
[INFO] [stdout] 356 | |             .context("Failed to parse Slack history response")
[INFO] [stdout] 357 | |     })?;
[INFO] [stdout]     | |______- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: you can instead use the fully-qualified path `<anyhow::Error as Into<anyhow::Error>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `anyhow::Error`
[INFO] [stdout]    --> src/connector/mod.rs:65:44
[INFO] [stdout]     |
[INFO] [stdout]  51 |   macro_rules! retry_async {
[INFO] [stdout] ...
[INFO] [stdout]  65 |                       _retry_last_err = Some(e.into());
[INFO] [stdout]     |                                              ^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]    ::: src/connector/slack.rs:468:33
[INFO] [stdout]     |
[INFO] [stdout] 468 |       let resp: HistoryResponse = retry_async!("slack_conversations_replies", 3, {
[INFO] [stdout]     |  _________________________________-
[INFO] [stdout] 469 | |         let r = slack_api_get(client, &url, bot_token).await?;
[INFO] [stdout] 470 | |         r.json::<HistoryResponse>()
[INFO] [stdout] 471 | |             .await
[INFO] [stdout] 472 | |             .context("Failed to parse Slack replies response")
[INFO] [stdout] 473 | |     })?;
[INFO] [stdout]     | |______- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: you can instead use the fully-qualified path `<anyhow::Error as Into<anyhow::Error>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `anyhow::Error`
[INFO] [stdout]    --> src/connector/mod.rs:65:44
[INFO] [stdout]     |
[INFO] [stdout]  51 |   macro_rules! retry_async {
[INFO] [stdout] ...
[INFO] [stdout]  65 |                       _retry_last_err = Some(e.into());
[INFO] [stdout]     |                                              ^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]    ::: src/connector/teams.rs:194:16
[INFO] [stdout]     |
[INFO] [stdout] 194 |       let resp = retry_async!("teams_token", 3, {
[INFO] [stdout]     |  ________________-
[INFO] [stdout] 195 | |         let r = client
[INFO] [stdout] 196 | |             .post(&token_url)
[INFO] [stdout] 197 | |             .form(&params)
[INFO] [stdout] ...   |
[INFO] [stdout] 221 | |         Ok::<String, anyhow::Error>(token_resp.access_token)
[INFO] [stdout] 222 | |     })?;
[INFO] [stdout]     | |______- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: you can instead use the fully-qualified path `<anyhow::Error as Into<anyhow::Error>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `anyhow::Error`
[INFO] [stdout]    --> src/connector/mod.rs:65:44
[INFO] [stdout]     |
[INFO] [stdout]  51 |   macro_rules! retry_async {
[INFO] [stdout] ...
[INFO] [stdout]  65 |                       _retry_last_err = Some(e.into());
[INFO] [stdout]     |                                              ^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]    ::: src/connector/teams.rs:234:16
[INFO] [stdout]     |
[INFO] [stdout] 234 |       let resp = retry_async!("teams_channels", 3, {
[INFO] [stdout]     |  ________________-
[INFO] [stdout] 235 | |         let r = client
[INFO] [stdout] 236 | |             .get(&url)
[INFO] [stdout] 237 | |             .bearer_auth(token)
[INFO] [stdout] ...   |
[INFO] [stdout] 252 | |         Ok::<Vec<Channel>, anyhow::Error>(list.value)
[INFO] [stdout] 253 | |     })?;
[INFO] [stdout]     | |______- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: you can instead use the fully-qualified path `<anyhow::Error as Into<anyhow::Error>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `anyhow::Error`
[INFO] [stdout]    --> src/connector/mod.rs:65:44
[INFO] [stdout]     |
[INFO] [stdout]  51 |   macro_rules! retry_async {
[INFO] [stdout] ...
[INFO] [stdout]  65 |                       _retry_last_err = Some(e.into());
[INFO] [stdout]     |                                              ^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]    ::: src/connector/teams.rs:278:16
[INFO] [stdout]     |
[INFO] [stdout] 278 |       let resp = retry_async!("teams_messages", 3, {
[INFO] [stdout]     |  ________________-
[INFO] [stdout] 279 | |         let r = client
[INFO] [stdout] 280 | |             .get(&url)
[INFO] [stdout] 281 | |             .bearer_auth(token)
[INFO] [stdout] ...   |
[INFO] [stdout] 296 | |         Ok::<Vec<ChatMessage>, anyhow::Error>(list.value)
[INFO] [stdout] 297 | |     })?;
[INFO] [stdout]     | |______- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: you can instead use the fully-qualified path `<anyhow::Error as Into<anyhow::Error>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr] error: could not compile `opensoma` (lib) due to 10 previous errors
[INFO] [stderr] warning: build failed, waiting for other jobs to finish...
[INFO] [stdout] error: useless conversion to the same type: `anyhow::Error`
[INFO] [stdout]    --> src/connector/mod.rs:65:44
[INFO] [stdout]     |
[INFO] [stdout]  51 |   macro_rules! retry_async {
[INFO] [stdout] ...
[INFO] [stdout]  65 |                       _retry_last_err = Some(e.into());
[INFO] [stdout]     |                                              ^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]    ::: src/connector/dingtalk.rs:193:17
[INFO] [stdout]     |
[INFO] [stdout] 193 |       let token = retry_async!("dingtalk_token", 3, {
[INFO] [stdout]     |  _________________-
[INFO] [stdout] 194 | |         fetch_access_token(&http_client, &config).await
[INFO] [stdout] 195 | |     })?;
[INFO] [stdout]     | |______- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: you can instead use the fully-qualified path `<anyhow::Error as Into<anyhow::Error>::into(val) to avoid triggering this lint
[INFO] [stdout]     = note: `#[deny(self_type_conversion)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `anyhow::Error`
[INFO] [stdout]    --> src/connector/mod.rs:65:44
[INFO] [stdout]     |
[INFO] [stdout]  51 |   macro_rules! retry_async {
[INFO] [stdout] ...
[INFO] [stdout]  65 |                       _retry_last_err = Some(e.into());
[INFO] [stdout]     |                                              ^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]    ::: src/connector/discord.rs:130:16
[INFO] [stdout]     |
[INFO] [stdout] 130 |       let resp = retry_async!("discord_channels", 3, {
[INFO] [stdout]     |  ________________-
[INFO] [stdout] 131 | |         let r = client
[INFO] [stdout] 132 | |             .get(&url)
[INFO] [stdout] 133 | |             .header("Authorization", format!("Bot {}", bot_token))
[INFO] [stdout] ...   |
[INFO] [stdout] 148 | |         Ok::<Vec<DiscordChannel>, anyhow::Error>(channels)
[INFO] [stdout] 149 | |     })?;
[INFO] [stdout]     | |______- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: you can instead use the fully-qualified path `<anyhow::Error as Into<anyhow::Error>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `anyhow::Error`
[INFO] [stdout]    --> src/connector/mod.rs:65:44
[INFO] [stdout]     |
[INFO] [stdout]  51 |   macro_rules! retry_async {
[INFO] [stdout] ...
[INFO] [stdout]  65 |                       _retry_last_err = Some(e.into());
[INFO] [stdout]     |                                              ^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]    ::: src/connector/discord.rs:177:16
[INFO] [stdout]     |
[INFO] [stdout] 177 |       let resp = retry_async!("discord_messages", 3, {
[INFO] [stdout]     |  ________________-
[INFO] [stdout] 178 | |         let r = client
[INFO] [stdout] 179 | |             .get(&url)
[INFO] [stdout] 180 | |             .header("Authorization", format!("Bot {}", bot_token))
[INFO] [stdout] ...   |
[INFO] [stdout] 195 | |         Ok::<Vec<DiscordMessage>, anyhow::Error>(messages)
[INFO] [stdout] 196 | |     })?;
[INFO] [stdout]     | |______- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: you can instead use the fully-qualified path `<anyhow::Error as Into<anyhow::Error>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `anyhow::Error`
[INFO] [stdout]   --> src/connector/mod.rs:65:44
[INFO] [stdout]    |
[INFO] [stdout] 51 |   macro_rules! retry_async {
[INFO] [stdout] ...
[INFO] [stdout] 65 |                       _retry_last_err = Some(e.into());
[INFO] [stdout]    |                                              ^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]   ::: src/connector/feishu.rs:92:17
[INFO] [stdout]    |
[INFO] [stdout] 92 |       let token = retry_async!("feishu_token", 3, {
[INFO] [stdout]    |  _________________-
[INFO] [stdout] 93 | |         fetch_tenant_token(&http_client, &config).await
[INFO] [stdout] 94 | |     })?;
[INFO] [stdout]    | |______- in this macro invocation
[INFO] [stdout]    |
[INFO] [stdout]    = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]    = note: you can instead use the fully-qualified path `<anyhow::Error as Into<anyhow::Error>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `anyhow::Error`
[INFO] [stdout]    --> src/connector/mod.rs:65:44
[INFO] [stdout]     |
[INFO] [stdout]  51 |   macro_rules! retry_async {
[INFO] [stdout] ...
[INFO] [stdout]  65 |                       _retry_last_err = Some(e.into());
[INFO] [stdout]     |                                              ^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]    ::: src/connector/slack.rs:298:43
[INFO] [stdout]     |
[INFO] [stdout] 298 |           let resp: ConversationsResponse = retry_async!("slack_conversations_list", 3, {
[INFO] [stdout]     |  ___________________________________________-
[INFO] [stdout] 299 | |             let r = slack_api_get(&client, &url, bot_token).await?;
[INFO] [stdout] 300 | |             r.json::<ConversationsResponse>()
[INFO] [stdout] 301 | |                 .await
[INFO] [stdout] 302 | |                 .context("Failed to parse Slack conversations response")
[INFO] [stdout] 303 | |         })?;
[INFO] [stdout]     | |__________- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: you can instead use the fully-qualified path `<anyhow::Error as Into<anyhow::Error>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `anyhow::Error`
[INFO] [stdout]    --> src/connector/mod.rs:65:44
[INFO] [stdout]     |
[INFO] [stdout]  51 |   macro_rules! retry_async {
[INFO] [stdout] ...
[INFO] [stdout]  65 |                       _retry_last_err = Some(e.into());
[INFO] [stdout]     |                                              ^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]    ::: src/connector/slack.rs:352:33
[INFO] [stdout]     |
[INFO] [stdout] 352 |       let resp: HistoryResponse = retry_async!("slack_conversations_history", 3, {
[INFO] [stdout]     |  _________________________________-
[INFO] [stdout] 353 | |         let r = slack_api_get(client, &url, bot_token).await?;
[INFO] [stdout] 354 | |         r.json::<HistoryResponse>()
[INFO] [stdout] 355 | |             .await
[INFO] [stdout] 356 | |             .context("Failed to parse Slack history response")
[INFO] [stdout] 357 | |     })?;
[INFO] [stdout]     | |______- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: you can instead use the fully-qualified path `<anyhow::Error as Into<anyhow::Error>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `anyhow::Error`
[INFO] [stdout]    --> src/connector/mod.rs:65:44
[INFO] [stdout]     |
[INFO] [stdout]  51 |   macro_rules! retry_async {
[INFO] [stdout] ...
[INFO] [stdout]  65 |                       _retry_last_err = Some(e.into());
[INFO] [stdout]     |                                              ^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]    ::: src/connector/slack.rs:468:33
[INFO] [stdout]     |
[INFO] [stdout] 468 |       let resp: HistoryResponse = retry_async!("slack_conversations_replies", 3, {
[INFO] [stdout]     |  _________________________________-
[INFO] [stdout] 469 | |         let r = slack_api_get(client, &url, bot_token).await?;
[INFO] [stdout] 470 | |         r.json::<HistoryResponse>()
[INFO] [stdout] 471 | |             .await
[INFO] [stdout] 472 | |             .context("Failed to parse Slack replies response")
[INFO] [stdout] 473 | |     })?;
[INFO] [stdout]     | |______- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: you can instead use the fully-qualified path `<anyhow::Error as Into<anyhow::Error>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `anyhow::Error`
[INFO] [stdout]    --> src/connector/mod.rs:65:44
[INFO] [stdout]     |
[INFO] [stdout]  51 |   macro_rules! retry_async {
[INFO] [stdout] ...
[INFO] [stdout]  65 |                       _retry_last_err = Some(e.into());
[INFO] [stdout]     |                                              ^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]    ::: src/connector/teams.rs:194:16
[INFO] [stdout]     |
[INFO] [stdout] 194 |       let resp = retry_async!("teams_token", 3, {
[INFO] [stdout]     |  ________________-
[INFO] [stdout] 195 | |         let r = client
[INFO] [stdout] 196 | |             .post(&token_url)
[INFO] [stdout] 197 | |             .form(&params)
[INFO] [stdout] ...   |
[INFO] [stdout] 221 | |         Ok::<String, anyhow::Error>(token_resp.access_token)
[INFO] [stdout] 222 | |     })?;
[INFO] [stdout]     | |______- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: you can instead use the fully-qualified path `<anyhow::Error as Into<anyhow::Error>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `anyhow::Error`
[INFO] [stdout]    --> src/connector/mod.rs:65:44
[INFO] [stdout]     |
[INFO] [stdout]  51 |   macro_rules! retry_async {
[INFO] [stdout] ...
[INFO] [stdout]  65 |                       _retry_last_err = Some(e.into());
[INFO] [stdout]     |                                              ^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]    ::: src/connector/teams.rs:234:16
[INFO] [stdout]     |
[INFO] [stdout] 234 |       let resp = retry_async!("teams_channels", 3, {
[INFO] [stdout]     |  ________________-
[INFO] [stdout] 235 | |         let r = client
[INFO] [stdout] 236 | |             .get(&url)
[INFO] [stdout] 237 | |             .bearer_auth(token)
[INFO] [stdout] ...   |
[INFO] [stdout] 252 | |         Ok::<Vec<Channel>, anyhow::Error>(list.value)
[INFO] [stdout] 253 | |     })?;
[INFO] [stdout]     | |______- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: you can instead use the fully-qualified path `<anyhow::Error as Into<anyhow::Error>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `anyhow::Error`
[INFO] [stdout]    --> src/connector/mod.rs:65:44
[INFO] [stdout]     |
[INFO] [stdout]  51 |   macro_rules! retry_async {
[INFO] [stdout] ...
[INFO] [stdout]  65 |                       _retry_last_err = Some(e.into());
[INFO] [stdout]     |                                              ^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]    ::: src/connector/teams.rs:278:16
[INFO] [stdout]     |
[INFO] [stdout] 278 |       let resp = retry_async!("teams_messages", 3, {
[INFO] [stdout]     |  ________________-
[INFO] [stdout] 279 | |         let r = client
[INFO] [stdout] 280 | |             .get(&url)
[INFO] [stdout] 281 | |             .bearer_auth(token)
[INFO] [stdout] ...   |
[INFO] [stdout] 296 | |         Ok::<Vec<ChatMessage>, anyhow::Error>(list.value)
[INFO] [stdout] 297 | |     })?;
[INFO] [stdout]     | |______- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: you can instead use the fully-qualified path `<anyhow::Error as Into<anyhow::Error>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `anyhow::Error`
[INFO] [stdout]    --> src/connector/mod.rs:65:44
[INFO] [stdout]     |
[INFO] [stdout]  51 | macro_rules! retry_async {
[INFO] [stdout] ...
[INFO] [stdout]  65 |                     _retry_last_err = Some(e.into());
[INFO] [stdout]     |                                            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 494 |             retry_async!("test_op", 3, { Ok::<i32, anyhow::Error>(42) });
[INFO] [stdout]     |             ------------------------------------------------------------ in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: you can instead use the fully-qualified path `<anyhow::Error as Into<anyhow::Error>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `anyhow::Error`
[INFO] [stdout]    --> src/connector/mod.rs:65:44
[INFO] [stdout]     |
[INFO] [stdout]  51 |   macro_rules! retry_async {
[INFO] [stdout] ...
[INFO] [stdout]  65 |                       _retry_last_err = Some(e.into());
[INFO] [stdout]     |                                              ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 505 |           let result: anyhow::Result<i32> = retry_async!("test_op", 3, {
[INFO] [stdout]     |  ___________________________________________-
[INFO] [stdout] 506 | |             let n = attempts_clone.fetch_add(1, Ordering::SeqCst);
[INFO] [stdout] 507 | |             if n < 2 {
[INFO] [stdout] 508 | |                 Err(anyhow::anyhow!("not yet"))
[INFO] [stdout] ...   |
[INFO] [stdout] 512 | |         });
[INFO] [stdout]     | |__________- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: you can instead use the fully-qualified path `<anyhow::Error as Into<anyhow::Error>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `anyhow::Error`
[INFO] [stdout]    --> src/connector/mod.rs:65:44
[INFO] [stdout]     |
[INFO] [stdout]  51 | macro_rules! retry_async {
[INFO] [stdout] ...
[INFO] [stdout]  65 |                     _retry_last_err = Some(e.into());
[INFO] [stdout]     |                                            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 520 |             retry_async!("test_op", 2, { Err(anyhow::anyhow!("permanent failure")) });
[INFO] [stdout]     |             ------------------------------------------------------------------------- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: you can instead use the fully-qualified path `<anyhow::Error as Into<anyhow::Error>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `anyhow::Error`
[INFO] [stdout]    --> src/connector/mod.rs:65:44
[INFO] [stdout]     |
[INFO] [stdout]  51 |   macro_rules! retry_async {
[INFO] [stdout] ...
[INFO] [stdout]  65 |                       _retry_last_err = Some(e.into());
[INFO] [stdout]     |                                              ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 550 |           let result: anyhow::Result<String> = retry_async!("test_string", 3, {
[INFO] [stdout]     |  ______________________________________________-
[INFO] [stdout] 551 | |             Ok::<String, anyhow::Error>("hello".to_string())
[INFO] [stdout] 552 | |         });
[INFO] [stdout]     | |__________- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: you can instead use the fully-qualified path `<anyhow::Error as Into<anyhow::Error>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `anyhow::Error`
[INFO] [stdout]    --> src/connector/mod.rs:65:44
[INFO] [stdout]     |
[INFO] [stdout]  51 | macro_rules! retry_async {
[INFO] [stdout] ...
[INFO] [stdout]  65 |                     _retry_last_err = Some(e.into());
[INFO] [stdout]     |                                            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 559 |             retry_async!("single", 1, { Ok::<i32, anyhow::Error>(7) });
[INFO] [stdout]     |             ---------------------------------------------------------- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: you can instead use the fully-qualified path `<anyhow::Error as Into<anyhow::Error>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `anyhow::Error`
[INFO] [stdout]    --> src/connector/mod.rs:65:44
[INFO] [stdout]     |
[INFO] [stdout]  51 | macro_rules! retry_async {
[INFO] [stdout] ...
[INFO] [stdout]  65 |                     _retry_last_err = Some(e.into());
[INFO] [stdout]     |                                            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 566 |             retry_async!("single_fail", 1, { Err(anyhow::anyhow!("oops")) });
[INFO] [stdout]     |             ---------------------------------------------------------------- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: you can instead use the fully-qualified path `<anyhow::Error as Into<anyhow::Error>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr] error: could not compile `opensoma` (lib test) due to 16 previous errors
[INFO] running `Command { std: "docker" "inspect" "ecceef1b7709d50861507a2039b83d12e2425035e841bb9e2b11e44eb81e5fa6", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "ecceef1b7709d50861507a2039b83d12e2425035e841bb9e2b11e44eb81e5fa6", kill_on_drop: false }`
[INFO] [stdout] ecceef1b7709d50861507a2039b83d12e2425035e841bb9e2b11e44eb81e5fa6
