[INFO] cloning repository https://github.com/bertilxi/volva.rs [INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/bertilxi/volva.rs" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fbertilxi%2Fvolva.rs", kill_on_drop: false }` [INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fbertilxi%2Fvolva.rs'... [INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }` [INFO] [stdout] 8e7c703fc51e797cf7113d568865dbb0def57493 [INFO] checking bertilxi/volva.rs against try#8ea250bdb76176ecb0225baa34aa634b024ae0e2 for pr-101692 [INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fbertilxi%2Fvolva.rs" "/workspace/builds/worker-7/source", kill_on_drop: false }` [INFO] [stderr] Cloning into '/workspace/builds/worker-7/source'... [INFO] [stderr] done. [INFO] validating manifest of git repo https://github.com/bertilxi/volva.rs on toolchain 8ea250bdb76176ecb0225baa34aa634b024ae0e2 [INFO] running `Command { std: "/workspace/cargo-home/bin/cargo" "+8ea250bdb76176ecb0225baa34aa634b024ae0e2" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }` [INFO] started tweaking git repo https://github.com/bertilxi/volva.rs [INFO] finished tweaking git repo https://github.com/bertilxi/volva.rs [INFO] tweaked toml for git repo https://github.com/bertilxi/volva.rs written to /workspace/builds/worker-7/source/Cargo.toml [INFO] crate git repo https://github.com/bertilxi/volva.rs already has a lockfile, it will not be regenerated [INFO] running `Command { std: "/workspace/cargo-home/bin/cargo" "+8ea250bdb76176ecb0225baa34aa634b024ae0e2" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }` [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-7/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-7/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:824c28ce115f6b999260af6986f3384c158e782489540e41c0b698ca1d9fd927" "/opt/rustwide/cargo-home/bin/cargo" "+8ea250bdb76176ecb0225baa34aa634b024ae0e2" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }` [INFO] [stdout] a1903205d7dc1634a940c6940001505476a8dd0f988e7490b1593636f8d05698 [INFO] running `Command { std: "docker" "start" "-a" "a1903205d7dc1634a940c6940001505476a8dd0f988e7490b1593636f8d05698", kill_on_drop: false }` [INFO] running `Command { std: "docker" "inspect" "a1903205d7dc1634a940c6940001505476a8dd0f988e7490b1593636f8d05698", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "a1903205d7dc1634a940c6940001505476a8dd0f988e7490b1593636f8d05698", kill_on_drop: false }` [INFO] [stdout] a1903205d7dc1634a940c6940001505476a8dd0f988e7490b1593636f8d05698 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-7/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-7/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:824c28ce115f6b999260af6986f3384c158e782489540e41c0b698ca1d9fd927" "/opt/rustwide/cargo-home/bin/cargo" "+8ea250bdb76176ecb0225baa34aa634b024ae0e2" "check" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }` [INFO] [stdout] 9dd340cbda372dcc5505b08f480dd2f563aca203cc046442919a9ad60d6db0a0 [INFO] running `Command { std: "docker" "start" "-a" "9dd340cbda372dcc5505b08f480dd2f563aca203cc046442919a9ad60d6db0a0", kill_on_drop: false }` [INFO] [stderr] Compiling proc-macro2 v1.0.36 [INFO] [stderr] Compiling unicode-xid v0.2.2 [INFO] [stderr] Compiling autocfg v1.1.0 [INFO] [stderr] Compiling syn v1.0.90 [INFO] [stderr] Compiling libc v0.2.121 [INFO] [stderr] Checking cfg-if v1.0.0 [INFO] [stderr] Compiling memchr v2.4.1 [INFO] [stderr] Compiling log v0.4.16 [INFO] [stderr] Checking pin-project-lite v0.2.8 [INFO] [stderr] Compiling futures-core v0.3.21 [INFO] [stderr] Compiling parking_lot_core v0.9.2 [INFO] [stderr] Compiling cc v1.0.73 [INFO] [stderr] Compiling pkg-config v0.3.25 [INFO] [stderr] Checking bytes v1.1.0 [INFO] [stderr] Compiling futures-channel v0.3.21 [INFO] [stderr] Compiling futures-task v0.3.21 [INFO] [stderr] Checking once_cell v1.10.0 [INFO] [stderr] Checking scopeguard v1.1.0 [INFO] [stderr] Checking smallvec v1.8.0 [INFO] [stderr] Checking futures-sink v0.3.21 [INFO] [stderr] Checking itoa v1.0.1 [INFO] [stderr] Compiling futures-util v0.3.21 [INFO] [stderr] Checking pin-utils v0.1.0 [INFO] [stderr] Checking lazy_static v1.4.0 [INFO] [stderr] Checking slab v0.4.6 [INFO] [stderr] Checking futures-io v0.3.21 [INFO] [stderr] Checking foreign-types-shared v0.1.1 [INFO] [stderr] Compiling serde_derive v1.0.136 [INFO] [stderr] Compiling openssl v0.10.38 [INFO] [stderr] Checking fnv v1.0.7 [INFO] [stderr] Compiling httparse v1.6.0 [INFO] [stderr] Checking matches v0.1.9 [INFO] [stderr] Checking hashbrown v0.11.2 [INFO] [stderr] Checking tinyvec_macros v0.1.0 [INFO] [stderr] Checking bitflags v1.3.2 [INFO] [stderr] Compiling native-tls v0.2.10 [INFO] [stderr] Compiling serde v1.0.136 [INFO] [stderr] Checking openssl-probe v0.1.5 [INFO] [stderr] Checking percent-encoding v2.1.0 [INFO] [stderr] Checking try-lock v0.2.3 [INFO] [stderr] Checking httpdate v1.0.2 [INFO] [stderr] Checking unicode-bidi v0.3.7 [INFO] [stderr] Checking ryu v1.0.9 [INFO] [stderr] Checking tower-service v0.3.1 [INFO] [stderr] Compiling encoding_rs v0.8.30 [INFO] [stderr] Compiling serde_json v1.0.79 [INFO] [stderr] Compiling async-trait v0.1.53 [INFO] [stderr] Compiling anyhow v1.0.56 [INFO] [stderr] Checking base64 v0.13.0 [INFO] [stderr] Checking mime v0.3.16 [INFO] [stderr] Checking ipnet v2.4.0 [INFO] [stderr] Checking tracing-core v0.1.24 [INFO] [stderr] Checking foreign-types v0.3.2 [INFO] [stderr] Checking http v0.2.6 [INFO] [stderr] Checking tinyvec v1.5.1 [INFO] [stderr] Checking form_urlencoded v1.0.1 [INFO] [stderr] Compiling lock_api v0.4.7 [INFO] [stderr] Compiling indexmap v1.8.1 [INFO] [stderr] Checking want v0.3.0 [INFO] [stderr] Checking unicode-normalization v0.1.19 [INFO] [stderr] Compiling openssl-sys v0.9.72 [INFO] [stderr] Compiling quote v1.0.17 [INFO] [stderr] Checking http-body v0.4.4 [INFO] [stderr] Checking num_cpus v1.13.1 [INFO] [stderr] Checking mio v0.8.2 [INFO] [stderr] Checking socket2 v0.4.4 [INFO] [stderr] Checking signal-hook-registry v1.4.0 [INFO] [stderr] Checking idna v0.2.3 [INFO] [stderr] Checking parking_lot v0.12.0 [INFO] [stderr] Checking url v2.2.2 [INFO] [stderr] Compiling tokio-macros v1.7.0 [INFO] [stderr] Compiling futures-macro v0.3.21 [INFO] [stderr] Compiling tracing-attributes v0.1.20 [INFO] [stderr] Checking tokio v1.17.0 [INFO] [stderr] Checking tracing v0.1.32 [INFO] [stderr] Checking tokio-util v0.7.1 [INFO] [stderr] Checking tokio-native-tls v0.3.0 [INFO] [stderr] Checking futures-executor v0.3.21 [INFO] [stderr] Checking futures v0.3.21 [INFO] [stderr] Checking h2 v0.3.13 [INFO] [stderr] Checking serde_urlencoded v0.7.1 [INFO] [stderr] Checking hyper v0.14.18 [INFO] [stderr] Checking hyper-tls v0.5.0 [INFO] [stderr] Checking reqwest v0.11.10 [INFO] [stderr] Checking volva v0.1.0 (/opt/rustwide/workdir) [INFO] [stdout] error[E0391]: cycle detected when type-checking `client::binance::::get_price` [INFO] [stdout] --> src/client/binance.rs:18:5 [INFO] [stdout] | [INFO] [stdout] 18 | async fn get_price(&self, pair_code: &str) -> Result> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] note: ...which requires generator glue MIR for `client::binance::::get_price::{closure#0}`... [INFO] [stdout] --> src/client/binance.rs:18:80 [INFO] [stdout] | [INFO] [stdout] 18 | async fn get_price(&self, pair_code: &str) -> Result> { [INFO] [stdout] | ________________________________________________________________________________^ [INFO] [stdout] 19 | | let params = [("symbol", get_pair(pair_code, ""))]; [INFO] [stdout] 20 | | let url = reqwest::Url::parse_with_params( [INFO] [stdout] 21 | | "https://api.binance.com/api/v3/ticker/price", [INFO] [stdout] ... | [INFO] [stdout] 31 | | }]) [INFO] [stdout] 32 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] note: ...which requires elaborating drops for `client::binance::::get_price::{closure#0}`... [INFO] [stdout] --> src/client/binance.rs:18:80 [INFO] [stdout] | [INFO] [stdout] 18 | async fn get_price(&self, pair_code: &str) -> Result> { [INFO] [stdout] | ________________________________________________________________________________^ [INFO] [stdout] 19 | | let params = [("symbol", get_pair(pair_code, ""))]; [INFO] [stdout] 20 | | let url = reqwest::Url::parse_with_params( [INFO] [stdout] 21 | | "https://api.binance.com/api/v3/ticker/price", [INFO] [stdout] ... | [INFO] [stdout] 31 | | }]) [INFO] [stdout] 32 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] note: ...which requires borrow-checking `client::binance::::get_price::{closure#0}`... [INFO] [stdout] --> src/client/binance.rs:18:80 [INFO] [stdout] | [INFO] [stdout] 18 | async fn get_price(&self, pair_code: &str) -> Result> { [INFO] [stdout] | ________________________________________________________________________________^ [INFO] [stdout] 19 | | let params = [("symbol", get_pair(pair_code, ""))]; [INFO] [stdout] 20 | | let url = reqwest::Url::parse_with_params( [INFO] [stdout] 21 | | "https://api.binance.com/api/v3/ticker/price", [INFO] [stdout] ... | [INFO] [stdout] 31 | | }]) [INFO] [stdout] 32 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] note: ...which requires processing `client::binance::::get_price::{closure#0}`... [INFO] [stdout] --> src/client/binance.rs:18:80 [INFO] [stdout] | [INFO] [stdout] 18 | async fn get_price(&self, pair_code: &str) -> Result> { [INFO] [stdout] | ________________________________________________________________________________^ [INFO] [stdout] 19 | | let params = [("symbol", get_pair(pair_code, ""))]; [INFO] [stdout] 20 | | let url = reqwest::Url::parse_with_params( [INFO] [stdout] 21 | | "https://api.binance.com/api/v3/ticker/price", [INFO] [stdout] ... | [INFO] [stdout] 31 | | }]) [INFO] [stdout] 32 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] note: ...which requires processing MIR for `client::binance::::get_price::{closure#0}`... [INFO] [stdout] --> src/client/binance.rs:18:80 [INFO] [stdout] | [INFO] [stdout] 18 | async fn get_price(&self, pair_code: &str) -> Result> { [INFO] [stdout] | ________________________________________________________________________________^ [INFO] [stdout] 19 | | let params = [("symbol", get_pair(pair_code, ""))]; [INFO] [stdout] 20 | | let url = reqwest::Url::parse_with_params( [INFO] [stdout] 21 | | "https://api.binance.com/api/v3/ticker/price", [INFO] [stdout] ... | [INFO] [stdout] 31 | | }]) [INFO] [stdout] 32 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] note: ...which requires unsafety-checking `client::binance::::get_price::{closure#0}`... [INFO] [stdout] --> src/client/binance.rs:18:80 [INFO] [stdout] | [INFO] [stdout] 18 | async fn get_price(&self, pair_code: &str) -> Result> { [INFO] [stdout] | ________________________________________________________________________________^ [INFO] [stdout] 19 | | let params = [("symbol", get_pair(pair_code, ""))]; [INFO] [stdout] 20 | | let url = reqwest::Url::parse_with_params( [INFO] [stdout] 21 | | "https://api.binance.com/api/v3/ticker/price", [INFO] [stdout] ... | [INFO] [stdout] 31 | | }]) [INFO] [stdout] 32 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] note: ...which requires building MIR for `client::binance::::get_price::{closure#0}`... [INFO] [stdout] --> src/client/binance.rs:18:80 [INFO] [stdout] | [INFO] [stdout] 18 | async fn get_price(&self, pair_code: &str) -> Result> { [INFO] [stdout] | ________________________________________________________________________________^ [INFO] [stdout] 19 | | let params = [("symbol", get_pair(pair_code, ""))]; [INFO] [stdout] 20 | | let url = reqwest::Url::parse_with_params( [INFO] [stdout] 21 | | "https://api.binance.com/api/v3/ticker/price", [INFO] [stdout] ... | [INFO] [stdout] 31 | | }]) [INFO] [stdout] 32 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] note: ...which requires type-checking `client::binance::::get_price::{closure#0}`... [INFO] [stdout] --> src/client/binance.rs:18:80 [INFO] [stdout] | [INFO] [stdout] 18 | async fn get_price(&self, pair_code: &str) -> Result> { [INFO] [stdout] | ________________________________________________________________________________^ [INFO] [stdout] 19 | | let params = [("symbol", get_pair(pair_code, ""))]; [INFO] [stdout] 20 | | let url = reqwest::Url::parse_with_params( [INFO] [stdout] 21 | | "https://api.binance.com/api/v3/ticker/price", [INFO] [stdout] ... | [INFO] [stdout] 31 | | }]) [INFO] [stdout] 32 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] = note: ...which again requires type-checking `client::binance::::get_price`, completing the cycle [INFO] [stdout] = note: cycle used when type-checking all item bodies [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0391]: cycle detected when type-checking `client::bitso::::get_price` [INFO] [stdout] --> src/client/bitso.rs:23:5 [INFO] [stdout] | [INFO] [stdout] 23 | async fn get_price(&self, pair_code: &str) -> Result> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] note: ...which requires generator glue MIR for `client::bitso::::get_price::{closure#0}`... [INFO] [stdout] --> src/client/bitso.rs:23:80 [INFO] [stdout] | [INFO] [stdout] 23 | async fn get_price(&self, pair_code: &str) -> Result> { [INFO] [stdout] | ________________________________________________________________________________^ [INFO] [stdout] 24 | | let params = [("book", get_pair(pair_code, "_").to_lowercase())]; [INFO] [stdout] 25 | | let url = reqwest::Url::parse_with_params("https://api.bitso.com/v3/ticker", ¶ms)?; [INFO] [stdout] 26 | | [INFO] [stdout] ... | [INFO] [stdout] 33 | | }]) [INFO] [stdout] 34 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] note: ...which requires elaborating drops for `client::bitso::::get_price::{closure#0}`... [INFO] [stdout] --> src/client/bitso.rs:23:80 [INFO] [stdout] | [INFO] [stdout] 23 | async fn get_price(&self, pair_code: &str) -> Result> { [INFO] [stdout] | ________________________________________________________________________________^ [INFO] [stdout] 24 | | let params = [("book", get_pair(pair_code, "_").to_lowercase())]; [INFO] [stdout] 25 | | let url = reqwest::Url::parse_with_params("https://api.bitso.com/v3/ticker", ¶ms)?; [INFO] [stdout] 26 | | [INFO] [stdout] ... | [INFO] [stdout] 33 | | }]) [INFO] [stdout] 34 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] note: ...which requires borrow-checking `client::bitso::::get_price::{closure#0}`... [INFO] [stdout] --> src/client/bitso.rs:23:80 [INFO] [stdout] | [INFO] [stdout] 23 | async fn get_price(&self, pair_code: &str) -> Result> { [INFO] [stdout] | ________________________________________________________________________________^ [INFO] [stdout] 24 | | let params = [("book", get_pair(pair_code, "_").to_lowercase())]; [INFO] [stdout] 25 | | let url = reqwest::Url::parse_with_params("https://api.bitso.com/v3/ticker", ¶ms)?; [INFO] [stdout] 26 | | [INFO] [stdout] ... | [INFO] [stdout] 33 | | }]) [INFO] [stdout] 34 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] note: ...which requires processing `client::bitso::::get_price::{closure#0}`... [INFO] [stdout] --> src/client/bitso.rs:23:80 [INFO] [stdout] | [INFO] [stdout] 23 | async fn get_price(&self, pair_code: &str) -> Result> { [INFO] [stdout] | ________________________________________________________________________________^ [INFO] [stdout] 24 | | let params = [("book", get_pair(pair_code, "_").to_lowercase())]; [INFO] [stdout] 25 | | let url = reqwest::Url::parse_with_params("https://api.bitso.com/v3/ticker", ¶ms)?; [INFO] [stdout] 26 | | [INFO] [stdout] ... | [INFO] [stdout] 33 | | }]) [INFO] [stdout] 34 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] note: ...which requires processing MIR for `client::bitso::::get_price::{closure#0}`... [INFO] [stdout] --> src/client/bitso.rs:23:80 [INFO] [stdout] | [INFO] [stdout] 23 | async fn get_price(&self, pair_code: &str) -> Result> { [INFO] [stdout] | ________________________________________________________________________________^ [INFO] [stdout] 24 | | let params = [("book", get_pair(pair_code, "_").to_lowercase())]; [INFO] [stdout] 25 | | let url = reqwest::Url::parse_with_params("https://api.bitso.com/v3/ticker", ¶ms)?; [INFO] [stdout] 26 | | [INFO] [stdout] ... | [INFO] [stdout] 33 | | }]) [INFO] [stdout] 34 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] note: ...which requires unsafety-checking `client::bitso::::get_price::{closure#0}`... [INFO] [stdout] --> src/client/bitso.rs:23:80 [INFO] [stdout] | [INFO] [stdout] 23 | async fn get_price(&self, pair_code: &str) -> Result> { [INFO] [stdout] | ________________________________________________________________________________^ [INFO] [stdout] 24 | | let params = [("book", get_pair(pair_code, "_").to_lowercase())]; [INFO] [stdout] 25 | | let url = reqwest::Url::parse_with_params("https://api.bitso.com/v3/ticker", ¶ms)?; [INFO] [stdout] 26 | | [INFO] [stdout] ... | [INFO] [stdout] 33 | | }]) [INFO] [stdout] 34 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] note: ...which requires building MIR for `client::bitso::::get_price::{closure#0}`... [INFO] [stdout] --> src/client/bitso.rs:23:80 [INFO] [stdout] | [INFO] [stdout] 23 | async fn get_price(&self, pair_code: &str) -> Result> { [INFO] [stdout] | ________________________________________________________________________________^ [INFO] [stdout] 24 | | let params = [("book", get_pair(pair_code, "_").to_lowercase())]; [INFO] [stdout] 25 | | let url = reqwest::Url::parse_with_params("https://api.bitso.com/v3/ticker", ¶ms)?; [INFO] [stdout] 26 | | [INFO] [stdout] ... | [INFO] [stdout] 33 | | }]) [INFO] [stdout] 34 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] note: ...which requires type-checking `client::bitso::::get_price::{closure#0}`... [INFO] [stdout] --> src/client/bitso.rs:23:80 [INFO] [stdout] | [INFO] [stdout] 23 | async fn get_price(&self, pair_code: &str) -> Result> { [INFO] [stdout] | ________________________________________________________________________________^ [INFO] [stdout] 24 | | let params = [("book", get_pair(pair_code, "_").to_lowercase())]; [INFO] [stdout] 25 | | let url = reqwest::Url::parse_with_params("https://api.bitso.com/v3/ticker", ¶ms)?; [INFO] [stdout] 26 | | [INFO] [stdout] ... | [INFO] [stdout] 33 | | }]) [INFO] [stdout] 34 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] = note: ...which again requires type-checking `client::bitso::::get_price`, completing the cycle [INFO] [stdout] = note: cycle used when type-checking all item bodies [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0391]: cycle detected when type-checking `client::buda::::get_price` [INFO] [stdout] --> src/client/buda.rs:23:5 [INFO] [stdout] | [INFO] [stdout] 23 | async fn get_price(&self, pair_code: &str) -> Result> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] note: ...which requires generator glue MIR for `client::buda::::get_price::{closure#0}`... [INFO] [stdout] --> src/client/buda.rs:23:80 [INFO] [stdout] | [INFO] [stdout] 23 | async fn get_price(&self, pair_code: &str) -> Result> { [INFO] [stdout] | ________________________________________________________________________________^ [INFO] [stdout] 24 | | let url = format!( [INFO] [stdout] 25 | | "https://www.buda.com/api/v2/markets/{}/ticker", [INFO] [stdout] 26 | | get_pair(pair_code, "-") [INFO] [stdout] ... | [INFO] [stdout] 37 | | }]) [INFO] [stdout] 38 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] note: ...which requires elaborating drops for `client::buda::::get_price::{closure#0}`... [INFO] [stdout] --> src/client/buda.rs:23:80 [INFO] [stdout] | [INFO] [stdout] 23 | async fn get_price(&self, pair_code: &str) -> Result> { [INFO] [stdout] | ________________________________________________________________________________^ [INFO] [stdout] 24 | | let url = format!( [INFO] [stdout] 25 | | "https://www.buda.com/api/v2/markets/{}/ticker", [INFO] [stdout] 26 | | get_pair(pair_code, "-") [INFO] [stdout] ... | [INFO] [stdout] 37 | | }]) [INFO] [stdout] 38 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] note: ...which requires borrow-checking `client::buda::::get_price::{closure#0}`... [INFO] [stdout] --> src/client/buda.rs:23:80 [INFO] [stdout] | [INFO] [stdout] 23 | async fn get_price(&self, pair_code: &str) -> Result> { [INFO] [stdout] | ________________________________________________________________________________^ [INFO] [stdout] 24 | | let url = format!( [INFO] [stdout] 25 | | "https://www.buda.com/api/v2/markets/{}/ticker", [INFO] [stdout] 26 | | get_pair(pair_code, "-") [INFO] [stdout] ... | [INFO] [stdout] 37 | | }]) [INFO] [stdout] 38 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] note: ...which requires processing `client::buda::::get_price::{closure#0}`... [INFO] [stdout] --> src/client/buda.rs:23:80 [INFO] [stdout] | [INFO] [stdout] 23 | async fn get_price(&self, pair_code: &str) -> Result> { [INFO] [stdout] | ________________________________________________________________________________^ [INFO] [stdout] 24 | | let url = format!( [INFO] [stdout] 25 | | "https://www.buda.com/api/v2/markets/{}/ticker", [INFO] [stdout] 26 | | get_pair(pair_code, "-") [INFO] [stdout] ... | [INFO] [stdout] 37 | | }]) [INFO] [stdout] 38 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] note: ...which requires processing MIR for `client::buda::::get_price::{closure#0}`... [INFO] [stdout] --> src/client/buda.rs:23:80 [INFO] [stdout] | [INFO] [stdout] 23 | async fn get_price(&self, pair_code: &str) -> Result> { [INFO] [stdout] | ________________________________________________________________________________^ [INFO] [stdout] 24 | | let url = format!( [INFO] [stdout] 25 | | "https://www.buda.com/api/v2/markets/{}/ticker", [INFO] [stdout] 26 | | get_pair(pair_code, "-") [INFO] [stdout] ... | [INFO] [stdout] 37 | | }]) [INFO] [stdout] 38 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] note: ...which requires unsafety-checking `client::buda::::get_price::{closure#0}`... [INFO] [stdout] --> src/client/buda.rs:23:80 [INFO] [stdout] | [INFO] [stdout] 23 | async fn get_price(&self, pair_code: &str) -> Result> { [INFO] [stdout] | ________________________________________________________________________________^ [INFO] [stdout] 24 | | let url = format!( [INFO] [stdout] 25 | | "https://www.buda.com/api/v2/markets/{}/ticker", [INFO] [stdout] 26 | | get_pair(pair_code, "-") [INFO] [stdout] ... | [INFO] [stdout] 37 | | }]) [INFO] [stdout] 38 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] note: ...which requires building MIR for `client::buda::::get_price::{closure#0}`... [INFO] [stdout] --> src/client/buda.rs:23:80 [INFO] [stdout] | [INFO] [stdout] 23 | async fn get_price(&self, pair_code: &str) -> Result> { [INFO] [stdout] | ________________________________________________________________________________^ [INFO] [stdout] 24 | | let url = format!( [INFO] [stdout] 25 | | "https://www.buda.com/api/v2/markets/{}/ticker", [INFO] [stdout] 26 | | get_pair(pair_code, "-") [INFO] [stdout] ... | [INFO] [stdout] 37 | | }]) [INFO] [stdout] 38 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] note: ...which requires type-checking `client::buda::::get_price::{closure#0}`... [INFO] [stdout] --> src/client/buda.rs:23:80 [INFO] [stdout] | [INFO] [stdout] 23 | async fn get_price(&self, pair_code: &str) -> Result> { [INFO] [stdout] | ________________________________________________________________________________^ [INFO] [stdout] 24 | | let url = format!( [INFO] [stdout] 25 | | "https://www.buda.com/api/v2/markets/{}/ticker", [INFO] [stdout] 26 | | get_pair(pair_code, "-") [INFO] [stdout] ... | [INFO] [stdout] 37 | | }]) [INFO] [stdout] 38 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] = note: ...which again requires type-checking `client::buda::::get_price`, completing the cycle [INFO] [stdout] = note: cycle used when type-checking all item bodies [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0391]: cycle detected when type-checking `client::coinbase::::get_price` [INFO] [stdout] --> src/client/coinbase.rs:19:5 [INFO] [stdout] | [INFO] [stdout] 19 | async fn get_price(&self, pair_code: &str) -> Result> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] note: ...which requires generator glue MIR for `client::coinbase::::get_price::{closure#0}`... [INFO] [stdout] --> src/client/coinbase.rs:19:80 [INFO] [stdout] | [INFO] [stdout] 19 | async fn get_price(&self, pair_code: &str) -> Result> { [INFO] [stdout] | ________________________________________________________________________________^ [INFO] [stdout] 20 | | let url = format!( [INFO] [stdout] 21 | | "https://api.exchange.coinbase.com/products/{}/ticker", [INFO] [stdout] 22 | | get_pair(pair_code, "-") [INFO] [stdout] ... | [INFO] [stdout] 37 | | }]) [INFO] [stdout] 38 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] note: ...which requires elaborating drops for `client::coinbase::::get_price::{closure#0}`... [INFO] [stdout] --> src/client/coinbase.rs:19:80 [INFO] [stdout] | [INFO] [stdout] 19 | async fn get_price(&self, pair_code: &str) -> Result> { [INFO] [stdout] | ________________________________________________________________________________^ [INFO] [stdout] 20 | | let url = format!( [INFO] [stdout] 21 | | "https://api.exchange.coinbase.com/products/{}/ticker", [INFO] [stdout] 22 | | get_pair(pair_code, "-") [INFO] [stdout] ... | [INFO] [stdout] 37 | | }]) [INFO] [stdout] 38 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] note: ...which requires borrow-checking `client::coinbase::::get_price::{closure#0}`... [INFO] [stdout] --> src/client/coinbase.rs:19:80 [INFO] [stdout] | [INFO] [stdout] 19 | async fn get_price(&self, pair_code: &str) -> Result> { [INFO] [stdout] | ________________________________________________________________________________^ [INFO] [stdout] 20 | | let url = format!( [INFO] [stdout] 21 | | "https://api.exchange.coinbase.com/products/{}/ticker", [INFO] [stdout] 22 | | get_pair(pair_code, "-") [INFO] [stdout] ... | [INFO] [stdout] 37 | | }]) [INFO] [stdout] 38 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] note: ...which requires processing `client::coinbase::::get_price::{closure#0}`... [INFO] [stdout] --> src/client/coinbase.rs:19:80 [INFO] [stdout] | [INFO] [stdout] 19 | async fn get_price(&self, pair_code: &str) -> Result> { [INFO] [stdout] | ________________________________________________________________________________^ [INFO] [stdout] 20 | | let url = format!( [INFO] [stdout] 21 | | "https://api.exchange.coinbase.com/products/{}/ticker", [INFO] [stdout] 22 | | get_pair(pair_code, "-") [INFO] [stdout] ... | [INFO] [stdout] 37 | | }]) [INFO] [stdout] 38 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] note: ...which requires processing MIR for `client::coinbase::::get_price::{closure#0}`... [INFO] [stdout] --> src/client/coinbase.rs:19:80 [INFO] [stdout] | [INFO] [stdout] 19 | async fn get_price(&self, pair_code: &str) -> Result> { [INFO] [stdout] | ________________________________________________________________________________^ [INFO] [stdout] 20 | | let url = format!( [INFO] [stdout] 21 | | "https://api.exchange.coinbase.com/products/{}/ticker", [INFO] [stdout] 22 | | get_pair(pair_code, "-") [INFO] [stdout] ... | [INFO] [stdout] 37 | | }]) [INFO] [stdout] 38 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] note: ...which requires unsafety-checking `client::coinbase::::get_price::{closure#0}`... [INFO] [stdout] --> src/client/coinbase.rs:19:80 [INFO] [stdout] | [INFO] [stdout] 19 | async fn get_price(&self, pair_code: &str) -> Result> { [INFO] [stdout] | ________________________________________________________________________________^ [INFO] [stdout] 20 | | let url = format!( [INFO] [stdout] 21 | | "https://api.exchange.coinbase.com/products/{}/ticker", [INFO] [stdout] 22 | | get_pair(pair_code, "-") [INFO] [stdout] ... | [INFO] [stdout] 37 | | }]) [INFO] [stdout] 38 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] note: ...which requires building MIR for `client::coinbase::::get_price::{closure#0}`... [INFO] [stdout] --> src/client/coinbase.rs:19:80 [INFO] [stdout] | [INFO] [stdout] 19 | async fn get_price(&self, pair_code: &str) -> Result> { [INFO] [stdout] | ________________________________________________________________________________^ [INFO] [stdout] 20 | | let url = format!( [INFO] [stdout] 21 | | "https://api.exchange.coinbase.com/products/{}/ticker", [INFO] [stdout] 22 | | get_pair(pair_code, "-") [INFO] [stdout] ... | [INFO] [stdout] 37 | | }]) [INFO] [stdout] 38 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] note: ...which requires type-checking `client::coinbase::::get_price::{closure#0}`... [INFO] [stdout] --> src/client/coinbase.rs:19:80 [INFO] [stdout] | [INFO] [stdout] 19 | async fn get_price(&self, pair_code: &str) -> Result> { [INFO] [stdout] | ________________________________________________________________________________^ [INFO] [stdout] 20 | | let url = format!( [INFO] [stdout] 21 | | "https://api.exchange.coinbase.com/products/{}/ticker", [INFO] [stdout] 22 | | get_pair(pair_code, "-") [INFO] [stdout] ... | [INFO] [stdout] 37 | | }]) [INFO] [stdout] 38 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] = note: ...which again requires type-checking `client::coinbase::::get_price`, completing the cycle [INFO] [stdout] = note: cycle used when type-checking all item bodies [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0391]: cycle detected when type-checking `client::criptoya::::get_price` [INFO] [stdout] --> src/client/criptoya.rs:18:5 [INFO] [stdout] | [INFO] [stdout] 18 | async fn get_price(&self, pair_code: &str) -> Result> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] note: ...which requires generator glue MIR for `client::criptoya::::get_price::{closure#0}`... [INFO] [stdout] --> src/client/criptoya.rs:18:80 [INFO] [stdout] | [INFO] [stdout] 18 | async fn get_price(&self, pair_code: &str) -> Result> { [INFO] [stdout] | ________________________________________________________________________________^ [INFO] [stdout] 19 | | let pair = pair_code.to_lowercase(); [INFO] [stdout] 20 | | let urls = vec![ [INFO] [stdout] 21 | | format!("https://criptoya.com/api/latamex/{}", pair), [INFO] [stdout] ... | [INFO] [stdout] 43 | | Ok(responses) [INFO] [stdout] 44 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] note: ...which requires elaborating drops for `client::criptoya::::get_price::{closure#0}`... [INFO] [stdout] --> src/client/criptoya.rs:18:80 [INFO] [stdout] | [INFO] [stdout] 18 | async fn get_price(&self, pair_code: &str) -> Result> { [INFO] [stdout] | ________________________________________________________________________________^ [INFO] [stdout] 19 | | let pair = pair_code.to_lowercase(); [INFO] [stdout] 20 | | let urls = vec![ [INFO] [stdout] 21 | | format!("https://criptoya.com/api/latamex/{}", pair), [INFO] [stdout] ... | [INFO] [stdout] 43 | | Ok(responses) [INFO] [stdout] 44 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] note: ...which requires borrow-checking `client::criptoya::::get_price::{closure#0}`... [INFO] [stdout] --> src/client/criptoya.rs:18:80 [INFO] [stdout] | [INFO] [stdout] 18 | async fn get_price(&self, pair_code: &str) -> Result> { [INFO] [stdout] | ________________________________________________________________________________^ [INFO] [stdout] 19 | | let pair = pair_code.to_lowercase(); [INFO] [stdout] 20 | | let urls = vec![ [INFO] [stdout] 21 | | format!("https://criptoya.com/api/latamex/{}", pair), [INFO] [stdout] ... | [INFO] [stdout] 43 | | Ok(responses) [INFO] [stdout] 44 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] note: ...which requires processing `client::criptoya::::get_price::{closure#0}`... [INFO] [stdout] --> src/client/criptoya.rs:18:80 [INFO] [stdout] | [INFO] [stdout] 18 | async fn get_price(&self, pair_code: &str) -> Result> { [INFO] [stdout] | ________________________________________________________________________________^ [INFO] [stdout] 19 | | let pair = pair_code.to_lowercase(); [INFO] [stdout] 20 | | let urls = vec![ [INFO] [stdout] 21 | | format!("https://criptoya.com/api/latamex/{}", pair), [INFO] [stdout] ... | [INFO] [stdout] 43 | | Ok(responses) [INFO] [stdout] 44 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] note: ...which requires processing MIR for `client::criptoya::::get_price::{closure#0}`... [INFO] [stdout] --> src/client/criptoya.rs:18:80 [INFO] [stdout] | [INFO] [stdout] 18 | async fn get_price(&self, pair_code: &str) -> Result> { [INFO] [stdout] | ________________________________________________________________________________^ [INFO] [stdout] 19 | | let pair = pair_code.to_lowercase(); [INFO] [stdout] 20 | | let urls = vec![ [INFO] [stdout] 21 | | format!("https://criptoya.com/api/latamex/{}", pair), [INFO] [stdout] ... | [INFO] [stdout] 43 | | Ok(responses) [INFO] [stdout] 44 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] note: ...which requires unsafety-checking `client::criptoya::::get_price::{closure#0}`... [INFO] [stdout] --> src/client/criptoya.rs:18:80 [INFO] [stdout] | [INFO] [stdout] 18 | async fn get_price(&self, pair_code: &str) -> Result> { [INFO] [stdout] | ________________________________________________________________________________^ [INFO] [stdout] 19 | | let pair = pair_code.to_lowercase(); [INFO] [stdout] 20 | | let urls = vec![ [INFO] [stdout] 21 | | format!("https://criptoya.com/api/latamex/{}", pair), [INFO] [stdout] ... | [INFO] [stdout] 43 | | Ok(responses) [INFO] [stdout] 44 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] note: ...which requires building MIR for `client::criptoya::::get_price::{closure#0}`... [INFO] [stdout] --> src/client/criptoya.rs:18:80 [INFO] [stdout] | [INFO] [stdout] 18 | async fn get_price(&self, pair_code: &str) -> Result> { [INFO] [stdout] | ________________________________________________________________________________^ [INFO] [stdout] 19 | | let pair = pair_code.to_lowercase(); [INFO] [stdout] 20 | | let urls = vec![ [INFO] [stdout] 21 | | format!("https://criptoya.com/api/latamex/{}", pair), [INFO] [stdout] ... | [INFO] [stdout] 43 | | Ok(responses) [INFO] [stdout] 44 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] note: ...which requires type-checking `client::criptoya::::get_price::{closure#0}`... [INFO] [stdout] --> src/client/criptoya.rs:18:80 [INFO] [stdout] | [INFO] [stdout] 18 | async fn get_price(&self, pair_code: &str) -> Result> { [INFO] [stdout] | ________________________________________________________________________________^ [INFO] [stdout] 19 | | let pair = pair_code.to_lowercase(); [INFO] [stdout] 20 | | let urls = vec![ [INFO] [stdout] 21 | | format!("https://criptoya.com/api/latamex/{}", pair), [INFO] [stdout] ... | [INFO] [stdout] 43 | | Ok(responses) [INFO] [stdout] 44 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] = note: ...which again requires type-checking `client::criptoya::::get_price`, completing the cycle [INFO] [stdout] = note: cycle used when type-checking all item bodies [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0391]: cycle detected when type-checking `client::cryptocom::::get_price` [INFO] [stdout] --> src/client/cryptocom.rs:28:5 [INFO] [stdout] | [INFO] [stdout] 28 | async fn get_price(&self, pair_code: &str) -> Result> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] note: ...which requires generator glue MIR for `client::cryptocom::::get_price::{closure#0}`... [INFO] [stdout] --> src/client/cryptocom.rs:28:80 [INFO] [stdout] | [INFO] [stdout] 28 | async fn get_price(&self, pair_code: &str) -> Result> { [INFO] [stdout] | ________________________________________________________________________________^ [INFO] [stdout] 29 | | let params = [("instrument_name", get_pair(pair_code, "_"))]; [INFO] [stdout] 30 | | let url = reqwest::Url::parse_with_params( [INFO] [stdout] 31 | | "https://api.crypto.com/v2/public/get-ticker", [INFO] [stdout] ... | [INFO] [stdout] 43 | | }]) [INFO] [stdout] 44 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] note: ...which requires elaborating drops for `client::cryptocom::::get_price::{closure#0}`... [INFO] [stdout] --> src/client/cryptocom.rs:28:80 [INFO] [stdout] | [INFO] [stdout] 28 | async fn get_price(&self, pair_code: &str) -> Result> { [INFO] [stdout] | ________________________________________________________________________________^ [INFO] [stdout] 29 | | let params = [("instrument_name", get_pair(pair_code, "_"))]; [INFO] [stdout] 30 | | let url = reqwest::Url::parse_with_params( [INFO] [stdout] 31 | | "https://api.crypto.com/v2/public/get-ticker", [INFO] [stdout] ... | [INFO] [stdout] 43 | | }]) [INFO] [stdout] 44 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] note: ...which requires borrow-checking `client::cryptocom::::get_price::{closure#0}`... [INFO] [stdout] --> src/client/cryptocom.rs:28:80 [INFO] [stdout] | [INFO] [stdout] 28 | async fn get_price(&self, pair_code: &str) -> Result> { [INFO] [stdout] | ________________________________________________________________________________^ [INFO] [stdout] 29 | | let params = [("instrument_name", get_pair(pair_code, "_"))]; [INFO] [stdout] 30 | | let url = reqwest::Url::parse_with_params( [INFO] [stdout] 31 | | "https://api.crypto.com/v2/public/get-ticker", [INFO] [stdout] ... | [INFO] [stdout] 43 | | }]) [INFO] [stdout] 44 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] note: ...which requires processing `client::cryptocom::::get_price::{closure#0}`... [INFO] [stdout] --> src/client/cryptocom.rs:28:80 [INFO] [stdout] | [INFO] [stdout] 28 | async fn get_price(&self, pair_code: &str) -> Result> { [INFO] [stdout] | ________________________________________________________________________________^ [INFO] [stdout] 29 | | let params = [("instrument_name", get_pair(pair_code, "_"))]; [INFO] [stdout] 30 | | let url = reqwest::Url::parse_with_params( [INFO] [stdout] 31 | | "https://api.crypto.com/v2/public/get-ticker", [INFO] [stdout] ... | [INFO] [stdout] 43 | | }]) [INFO] [stdout] 44 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] note: ...which requires processing MIR for `client::cryptocom::::get_price::{closure#0}`... [INFO] [stdout] --> src/client/cryptocom.rs:28:80 [INFO] [stdout] | [INFO] [stdout] 28 | async fn get_price(&self, pair_code: &str) -> Result> { [INFO] [stdout] | ________________________________________________________________________________^ [INFO] [stdout] 29 | | let params = [("instrument_name", get_pair(pair_code, "_"))]; [INFO] [stdout] 30 | | let url = reqwest::Url::parse_with_params( [INFO] [stdout] 31 | | "https://api.crypto.com/v2/public/get-ticker", [INFO] [stdout] ... | [INFO] [stdout] 43 | | }]) [INFO] [stdout] 44 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] note: ...which requires unsafety-checking `client::cryptocom::::get_price::{closure#0}`... [INFO] [stdout] --> src/client/cryptocom.rs:28:80 [INFO] [stdout] | [INFO] [stdout] 28 | async fn get_price(&self, pair_code: &str) -> Result> { [INFO] [stdout] | ________________________________________________________________________________^ [INFO] [stdout] 29 | | let params = [("instrument_name", get_pair(pair_code, "_"))]; [INFO] [stdout] 30 | | let url = reqwest::Url::parse_with_params( [INFO] [stdout] 31 | | "https://api.crypto.com/v2/public/get-ticker", [INFO] [stdout] ... | [INFO] [stdout] 43 | | }]) [INFO] [stdout] 44 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] note: ...which requires building MIR for `client::cryptocom::::get_price::{closure#0}`... [INFO] [stdout] --> src/client/cryptocom.rs:28:80 [INFO] [stdout] | [INFO] [stdout] 28 | async fn get_price(&self, pair_code: &str) -> Result> { [INFO] [stdout] | ________________________________________________________________________________^ [INFO] [stdout] 29 | | let params = [("instrument_name", get_pair(pair_code, "_"))]; [INFO] [stdout] 30 | | let url = reqwest::Url::parse_with_params( [INFO] [stdout] 31 | | "https://api.crypto.com/v2/public/get-ticker", [INFO] [stdout] ... | [INFO] [stdout] 43 | | }]) [INFO] [stdout] 44 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] note: ...which requires type-checking `client::cryptocom::::get_price::{closure#0}`... [INFO] [stdout] --> src/client/cryptocom.rs:28:80 [INFO] [stdout] | [INFO] [stdout] 28 | async fn get_price(&self, pair_code: &str) -> Result> { [INFO] [stdout] | ________________________________________________________________________________^ [INFO] [stdout] 29 | | let params = [("instrument_name", get_pair(pair_code, "_"))]; [INFO] [stdout] 30 | | let url = reqwest::Url::parse_with_params( [INFO] [stdout] 31 | | "https://api.crypto.com/v2/public/get-ticker", [INFO] [stdout] ... | [INFO] [stdout] 43 | | }]) [INFO] [stdout] 44 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] = note: ...which again requires type-checking `client::cryptocom::::get_price`, completing the cycle [INFO] [stdout] = note: cycle used when type-checking all item bodies [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0391]: cycle detected when type-checking `client::binance::::get_price` [INFO] [stdout] --> src/client/binance.rs:18:5 [INFO] [stdout] | [INFO] [stdout] 18 | async fn get_price(&self, pair_code: &str) -> Result> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] note: ...which requires generator glue MIR for `client::binance::::get_price::{closure#0}`... [INFO] [stdout] --> src/client/binance.rs:18:80 [INFO] [stdout] | [INFO] [stdout] 18 | async fn get_price(&self, pair_code: &str) -> Result> { [INFO] [stdout] | ________________________________________________________________________________^ [INFO] [stdout] 19 | | let params = [("symbol", get_pair(pair_code, ""))]; [INFO] [stdout] 20 | | let url = reqwest::Url::parse_with_params( [INFO] [stdout] 21 | | "https://api.binance.com/api/v3/ticker/price", [INFO] [stdout] ... | [INFO] [stdout] 31 | | }]) [INFO] [stdout] 32 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] note: ...which requires elaborating drops for `client::binance::::get_price::{closure#0}`... [INFO] [stdout] --> src/client/binance.rs:18:80 [INFO] [stdout] | [INFO] [stdout] 18 | async fn get_price(&self, pair_code: &str) -> Result> { [INFO] [stdout] | ________________________________________________________________________________^ [INFO] [stdout] 19 | | let params = [("symbol", get_pair(pair_code, ""))]; [INFO] [stdout] 20 | | let url = reqwest::Url::parse_with_params( [INFO] [stdout] 21 | | "https://api.binance.com/api/v3/ticker/price", [INFO] [stdout] ... | [INFO] [stdout] 31 | | }]) [INFO] [stdout] 32 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] note: ...which requires borrow-checking `client::binance::::get_price::{closure#0}`... [INFO] [stdout] --> src/client/binance.rs:18:80 [INFO] [stdout] | [INFO] [stdout] 18 | async fn get_price(&self, pair_code: &str) -> Result> { [INFO] [stdout] | ________________________________________________________________________________^ [INFO] [stdout] 19 | | let params = [("symbol", get_pair(pair_code, ""))]; [INFO] [stdout] 20 | | let url = reqwest::Url::parse_with_params( [INFO] [stdout] 21 | | "https://api.binance.com/api/v3/ticker/price", [INFO] [stdout] ... | [INFO] [stdout] 31 | | }]) [INFO] [stdout] 32 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] note: ...which requires processing `client::binance::::get_price::{closure#0}`... [INFO] [stdout] --> src/client/binance.rs:18:80 [INFO] [stdout] | [INFO] [stdout] 18 | async fn get_price(&self, pair_code: &str) -> Result> { [INFO] [stdout] | ________________________________________________________________________________^ [INFO] [stdout] 19 | | let params = [("symbol", get_pair(pair_code, ""))]; [INFO] [stdout] 20 | | let url = reqwest::Url::parse_with_params( [INFO] [stdout] 21 | | "https://api.binance.com/api/v3/ticker/price", [INFO] [stdout] ... | [INFO] [stdout] 31 | | }]) [INFO] [stdout] 32 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] note: ...which requires processing MIR for `client::binance::::get_price::{closure#0}`... [INFO] [stdout] --> src/client/binance.rs:18:80 [INFO] [stdout] | [INFO] [stdout] 18 | async fn get_price(&self, pair_code: &str) -> Result> { [INFO] [stdout] | ________________________________________________________________________________^ [INFO] [stdout] 19 | | let params = [("symbol", get_pair(pair_code, ""))]; [INFO] [stdout] 20 | | let url = reqwest::Url::parse_with_params( [INFO] [stdout] 21 | | "https://api.binance.com/api/v3/ticker/price", [INFO] [stdout] ... | [INFO] [stdout] 31 | | }]) [INFO] [stdout] 32 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] note: ...which requires unsafety-checking `client::binance::::get_price::{closure#0}`... [INFO] [stdout] --> src/client/binance.rs:18:80 [INFO] [stdout] | [INFO] [stdout] 18 | async fn get_price(&self, pair_code: &str) -> Result> { [INFO] [stdout] | ________________________________________________________________________________^ [INFO] [stdout] 19 | | let params = [("symbol", get_pair(pair_code, ""))]; [INFO] [stdout] 20 | | let url = reqwest::Url::parse_with_params( [INFO] [stdout] 21 | | "https://api.binance.com/api/v3/ticker/price", [INFO] [stdout] ... | [INFO] [stdout] 31 | | }]) [INFO] [stdout] 32 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] note: ...which requires building MIR for `client::binance::::get_price::{closure#0}`... [INFO] [stdout] --> src/client/binance.rs:18:80 [INFO] [stdout] | [INFO] [stdout] 18 | async fn get_price(&self, pair_code: &str) -> Result> { [INFO] [stdout] | ________________________________________________________________________________^ [INFO] [stdout] 19 | | let params = [("symbol", get_pair(pair_code, ""))]; [INFO] [stdout] 20 | | let url = reqwest::Url::parse_with_params( [INFO] [stdout] 21 | | "https://api.binance.com/api/v3/ticker/price", [INFO] [stdout] ... | [INFO] [stdout] 31 | | }]) [INFO] [stdout] 32 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] note: ...which requires type-checking `client::binance::::get_price::{closure#0}`... [INFO] [stdout] --> src/client/binance.rs:18:80 [INFO] [stdout] | [INFO] [stdout] 18 | async fn get_price(&self, pair_code: &str) -> Result> { [INFO] [stdout] | ________________________________________________________________________________^ [INFO] [stdout] 19 | | let params = [("symbol", get_pair(pair_code, ""))]; [INFO] [stdout] 20 | | let url = reqwest::Url::parse_with_params( [INFO] [stdout] 21 | | "https://api.binance.com/api/v3/ticker/price", [INFO] [stdout] ... | [INFO] [stdout] 31 | | }]) [INFO] [stdout] 32 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] = note: ...which again requires type-checking `client::binance::::get_price`, completing the cycle [INFO] [stdout] = note: cycle used when type-checking all item bodies [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0391]: cycle detected when type-checking `client::cryptomkt::::get_price` [INFO] [stdout] --> src/client/cryptomkt.rs:20:5 [INFO] [stdout] | [INFO] [stdout] 20 | async fn get_price(&self, pair_code: &str) -> Result> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] note: ...which requires generator glue MIR for `client::cryptomkt::::get_price::{closure#0}`... [INFO] [stdout] --> src/client/cryptomkt.rs:20:80 [INFO] [stdout] | [INFO] [stdout] 20 | async fn get_price(&self, pair_code: &str) -> Result> { [INFO] [stdout] | ________________________________________________________________________________^ [INFO] [stdout] 21 | | let pair = get_pair(pair_code, ""); [INFO] [stdout] 22 | | let url = format!( [INFO] [stdout] 23 | | "https://api.exchange.cryptomkt.com/api/3/public/ticker?symbols[]={}", [INFO] [stdout] ... | [INFO] [stdout] 39 | | }]) [INFO] [stdout] 40 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] note: ...which requires elaborating drops for `client::cryptomkt::::get_price::{closure#0}`... [INFO] [stdout] --> src/client/cryptomkt.rs:20:80 [INFO] [stdout] | [INFO] [stdout] 20 | async fn get_price(&self, pair_code: &str) -> Result> { [INFO] [stdout] | ________________________________________________________________________________^ [INFO] [stdout] 21 | | let pair = get_pair(pair_code, ""); [INFO] [stdout] 22 | | let url = format!( [INFO] [stdout] 23 | | "https://api.exchange.cryptomkt.com/api/3/public/ticker?symbols[]={}", [INFO] [stdout] ... | [INFO] [stdout] 39 | | }]) [INFO] [stdout] 40 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] note: ...which requires borrow-checking `client::cryptomkt::::get_price::{closure#0}`... [INFO] [stdout] --> src/client/cryptomkt.rs:20:80 [INFO] [stdout] | [INFO] [stdout] 20 | async fn get_price(&self, pair_code: &str) -> Result> { [INFO] [stdout] | ________________________________________________________________________________^ [INFO] [stdout] 21 | | let pair = get_pair(pair_code, ""); [INFO] [stdout] 22 | | let url = format!( [INFO] [stdout] 23 | | "https://api.exchange.cryptomkt.com/api/3/public/ticker?symbols[]={}", [INFO] [stdout] ... | [INFO] [stdout] 39 | | }]) [INFO] [stdout] 40 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] note: ...which requires processing `client::cryptomkt::::get_price::{closure#0}`... [INFO] [stdout] --> src/client/cryptomkt.rs:20:80 [INFO] [stdout] | [INFO] [stdout] 20 | async fn get_price(&self, pair_code: &str) -> Result> { [INFO] [stdout] | ________________________________________________________________________________^ [INFO] [stdout] 21 | | let pair = get_pair(pair_code, ""); [INFO] [stdout] 22 | | let url = format!( [INFO] [stdout] 23 | | "https://api.exchange.cryptomkt.com/api/3/public/ticker?symbols[]={}", [INFO] [stdout] ... | [INFO] [stdout] 39 | | }]) [INFO] [stdout] 40 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] note: ...which requires processing MIR for `client::cryptomkt::::get_price::{closure#0}`... [INFO] [stdout] --> src/client/cryptomkt.rs:20:80 [INFO] [stdout] | [INFO] [stdout] 20 | async fn get_price(&self, pair_code: &str) -> Result> { [INFO] [stdout] | ________________________________________________________________________________^ [INFO] [stdout] 21 | | let pair = get_pair(pair_code, ""); [INFO] [stdout] 22 | | let url = format!( [INFO] [stdout] 23 | | "https://api.exchange.cryptomkt.com/api/3/public/ticker?symbols[]={}", [INFO] [stdout] ... | [INFO] [stdout] 39 | | }]) [INFO] [stdout] 40 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] note: ...which requires unsafety-checking `client::cryptomkt::::get_price::{closure#0}`... [INFO] [stdout] --> src/client/cryptomkt.rs:20:80 [INFO] [stdout] | [INFO] [stdout] 20 | async fn get_price(&self, pair_code: &str) -> Result> { [INFO] [stdout] | ________________________________________________________________________________^ [INFO] [stdout] 21 | | let pair = get_pair(pair_code, ""); [INFO] [stdout] 22 | | let url = format!( [INFO] [stdout] 23 | | "https://api.exchange.cryptomkt.com/api/3/public/ticker?symbols[]={}", [INFO] [stdout] ... | [INFO] [stdout] 39 | | }]) [INFO] [stdout] 40 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] note: ...which requires building MIR for `client::cryptomkt::::get_price::{closure#0}`... [INFO] [stdout] --> src/client/cryptomkt.rs:20:80 [INFO] [stdout] | [INFO] [stdout] 20 | async fn get_price(&self, pair_code: &str) -> Result> { [INFO] [stdout] | ________________________________________________________________________________^ [INFO] [stdout] 21 | | let pair = get_pair(pair_code, ""); [INFO] [stdout] 22 | | let url = format!( [INFO] [stdout] 23 | | "https://api.exchange.cryptomkt.com/api/3/public/ticker?symbols[]={}", [INFO] [stdout] ... | [INFO] [stdout] 39 | | }]) [INFO] [stdout] 40 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] note: ...which requires type-checking `client::cryptomkt::::get_price::{closure#0}`... [INFO] [stdout] --> src/client/cryptomkt.rs:20:80 [INFO] [stdout] | [INFO] [stdout] 20 | async fn get_price(&self, pair_code: &str) -> Result> { [INFO] [stdout] | ________________________________________________________________________________^ [INFO] [stdout] 21 | | let pair = get_pair(pair_code, ""); [INFO] [stdout] 22 | | let url = format!( [INFO] [stdout] 23 | | "https://api.exchange.cryptomkt.com/api/3/public/ticker?symbols[]={}", [INFO] [stdout] ... | [INFO] [stdout] 39 | | }]) [INFO] [stdout] 40 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] = note: ...which again requires type-checking `client::cryptomkt::::get_price`, completing the cycle [INFO] [stdout] = note: cycle used when type-checking all item bodies [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0391]: cycle detected when type-checking `client::bitso::::get_price` [INFO] [stdout] --> src/client/bitso.rs:23:5 [INFO] [stdout] | [INFO] [stdout] 23 | async fn get_price(&self, pair_code: &str) -> Result> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] note: ...which requires generator glue MIR for `client::bitso::::get_price::{closure#0}`... [INFO] [stdout] --> src/client/bitso.rs:23:80 [INFO] [stdout] | [INFO] [stdout] 23 | async fn get_price(&self, pair_code: &str) -> Result> { [INFO] [stdout] | ________________________________________________________________________________^ [INFO] [stdout] 24 | | let params = [("book", get_pair(pair_code, "_").to_lowercase())]; [INFO] [stdout] 25 | | let url = reqwest::Url::parse_with_params("https://api.bitso.com/v3/ticker", ¶ms)?; [INFO] [stdout] 26 | | [INFO] [stdout] ... | [INFO] [stdout] 33 | | }]) [INFO] [stdout] 34 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] note: ...which requires elaborating drops for `client::bitso::::get_price::{closure#0}`... [INFO] [stdout] --> src/client/bitso.rs:23:80 [INFO] [stdout] | [INFO] [stdout] 23 | async fn get_price(&self, pair_code: &str) -> Result> { [INFO] [stdout] | ________________________________________________________________________________^ [INFO] [stdout] 24 | | let params = [("book", get_pair(pair_code, "_").to_lowercase())]; [INFO] [stdout] 25 | | let url = reqwest::Url::parse_with_params("https://api.bitso.com/v3/ticker", ¶ms)?; [INFO] [stdout] 26 | | [INFO] [stdout] ... | [INFO] [stdout] 33 | | }]) [INFO] [stdout] 34 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] note: ...which requires borrow-checking `client::bitso::::get_price::{closure#0}`... [INFO] [stdout] --> src/client/bitso.rs:23:80 [INFO] [stdout] | [INFO] [stdout] 23 | async fn get_price(&self, pair_code: &str) -> Result> { [INFO] [stdout] | ________________________________________________________________________________^ [INFO] [stdout] 24 | | let params = [("book", get_pair(pair_code, "_").to_lowercase())]; [INFO] [stdout] 25 | | let url = reqwest::Url::parse_with_params("https://api.bitso.com/v3/ticker", ¶ms)?; [INFO] [stdout] 26 | | [INFO] [stdout] ... | [INFO] [stdout] 33 | | }]) [INFO] [stdout] 34 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] note: ...which requires processing `client::bitso::::get_price::{closure#0}`... [INFO] [stdout] --> src/client/bitso.rs:23:80 [INFO] [stdout] | [INFO] [stdout] 23 | async fn get_price(&self, pair_code: &str) -> Result> { [INFO] [stdout] | ________________________________________________________________________________^ [INFO] [stdout] 24 | | let params = [("book", get_pair(pair_code, "_").to_lowercase())]; [INFO] [stdout] 25 | | let url = reqwest::Url::parse_with_params("https://api.bitso.com/v3/ticker", ¶ms)?; [INFO] [stdout] 26 | | [INFO] [stdout] ... | [INFO] [stdout] 33 | | }]) [INFO] [stdout] 34 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] note: ...which requires processing MIR for `client::bitso::::get_price::{closure#0}`... [INFO] [stdout] --> src/client/bitso.rs:23:80 [INFO] [stdout] | [INFO] [stdout] 23 | async fn get_price(&self, pair_code: &str) -> Result> { [INFO] [stdout] | ________________________________________________________________________________^ [INFO] [stdout] 24 | | let params = [("book", get_pair(pair_code, "_").to_lowercase())]; [INFO] [stdout] 25 | | let url = reqwest::Url::parse_with_params("https://api.bitso.com/v3/ticker", ¶ms)?; [INFO] [stdout] 26 | | [INFO] [stdout] ... | [INFO] [stdout] 33 | | }]) [INFO] [stdout] 34 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] note: ...which requires unsafety-checking `client::bitso::::get_price::{closure#0}`... [INFO] [stdout] --> src/client/bitso.rs:23:80 [INFO] [stdout] | [INFO] [stdout] 23 | async fn get_price(&self, pair_code: &str) -> Result> { [INFO] [stdout] | ________________________________________________________________________________^ [INFO] [stdout] 24 | | let params = [("book", get_pair(pair_code, "_").to_lowercase())]; [INFO] [stdout] 25 | | let url = reqwest::Url::parse_with_params("https://api.bitso.com/v3/ticker", ¶ms)?; [INFO] [stdout] 26 | | [INFO] [stdout] ... | [INFO] [stdout] 33 | | }]) [INFO] [stdout] 34 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] note: ...which requires building MIR for `client::bitso::::get_price::{closure#0}`... [INFO] [stdout] --> src/client/bitso.rs:23:80 [INFO] [stdout] | [INFO] [stdout] 23 | async fn get_price(&self, pair_code: &str) -> Result> { [INFO] [stdout] | ________________________________________________________________________________^ [INFO] [stdout] 24 | | let params = [("book", get_pair(pair_code, "_").to_lowercase())]; [INFO] [stdout] 25 | | let url = reqwest::Url::parse_with_params("https://api.bitso.com/v3/ticker", ¶ms)?; [INFO] [stdout] 26 | | [INFO] [stdout] ... | [INFO] [stdout] 33 | | }]) [INFO] [stdout] 34 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] note: ...which requires type-checking `client::bitso::::get_price::{closure#0}`... [INFO] [stdout] --> src/client/bitso.rs:23:80 [INFO] [stdout] | [INFO] [stdout] 23 | async fn get_price(&self, pair_code: &str) -> Result> { [INFO] [stdout] | ________________________________________________________________________________^ [INFO] [stdout] 24 | | let params = [("book", get_pair(pair_code, "_").to_lowercase())]; [INFO] [stdout] 25 | | let url = reqwest::Url::parse_with_params("https://api.bitso.com/v3/ticker", ¶ms)?; [INFO] [stdout] 26 | | [INFO] [stdout] ... | [INFO] [stdout] 33 | | }]) [INFO] [stdout] 34 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] = note: ...which again requires type-checking `client::bitso::::get_price`, completing the cycle [INFO] [stdout] = note: cycle used when type-checking all item bodies [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0391]: cycle detected when type-checking `client::ftx::::get_price` [INFO] [stdout] --> src/client/ftx.rs:21:5 [INFO] [stdout] | [INFO] [stdout] 21 | async fn get_price(&self, pair_code: &str) -> Result> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] note: ...which requires generator glue MIR for `client::ftx::::get_price::{closure#0}`... [INFO] [stdout] --> src/client/ftx.rs:21:80 [INFO] [stdout] | [INFO] [stdout] 21 | async fn get_price(&self, pair_code: &str) -> Result> { [INFO] [stdout] | ________________________________________________________________________________^ [INFO] [stdout] 22 | | let url = format!("https://ftx.com/api/markets/{}", pair_code); [INFO] [stdout] 23 | | [INFO] [stdout] 24 | | let response = reqwest::get(url).await?.json::().await; [INFO] [stdout] ... | [INFO] [stdout] 30 | | }]) [INFO] [stdout] 31 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] note: ...which requires elaborating drops for `client::ftx::::get_price::{closure#0}`... [INFO] [stdout] --> src/client/ftx.rs:21:80 [INFO] [stdout] | [INFO] [stdout] 21 | async fn get_price(&self, pair_code: &str) -> Result> { [INFO] [stdout] | ________________________________________________________________________________^ [INFO] [stdout] 22 | | let url = format!("https://ftx.com/api/markets/{}", pair_code); [INFO] [stdout] 23 | | [INFO] [stdout] 24 | | let response = reqwest::get(url).await?.json::().await; [INFO] [stdout] ... | [INFO] [stdout] 30 | | }]) [INFO] [stdout] 31 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] note: ...which requires borrow-checking `client::ftx::::get_price::{closure#0}`... [INFO] [stdout] --> src/client/ftx.rs:21:80 [INFO] [stdout] | [INFO] [stdout] 21 | async fn get_price(&self, pair_code: &str) -> Result> { [INFO] [stdout] | ________________________________________________________________________________^ [INFO] [stdout] 22 | | let url = format!("https://ftx.com/api/markets/{}", pair_code); [INFO] [stdout] 23 | | [INFO] [stdout] 24 | | let response = reqwest::get(url).await?.json::().await; [INFO] [stdout] ... | [INFO] [stdout] 30 | | }]) [INFO] [stdout] 31 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] note: ...which requires processing `client::ftx::::get_price::{closure#0}`... [INFO] [stdout] --> src/client/ftx.rs:21:80 [INFO] [stdout] | [INFO] [stdout] 21 | async fn get_price(&self, pair_code: &str) -> Result> { [INFO] [stdout] | ________________________________________________________________________________^ [INFO] [stdout] 22 | | let url = format!("https://ftx.com/api/markets/{}", pair_code); [INFO] [stdout] 23 | | [INFO] [stdout] 24 | | let response = reqwest::get(url).await?.json::().await; [INFO] [stdout] ... | [INFO] [stdout] 30 | | }]) [INFO] [stdout] 31 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] note: ...which requires processing MIR for `client::ftx::::get_price::{closure#0}`... [INFO] [stdout] --> src/client/ftx.rs:21:80 [INFO] [stdout] | [INFO] [stdout] 21 | async fn get_price(&self, pair_code: &str) -> Result> { [INFO] [stdout] | ________________________________________________________________________________^ [INFO] [stdout] 22 | | let url = format!("https://ftx.com/api/markets/{}", pair_code); [INFO] [stdout] 23 | | [INFO] [stdout] 24 | | let response = reqwest::get(url).await?.json::().await; [INFO] [stdout] ... | [INFO] [stdout] 30 | | }]) [INFO] [stdout] 31 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] note: ...which requires unsafety-checking `client::ftx::::get_price::{closure#0}`... [INFO] [stdout] --> src/client/ftx.rs:21:80 [INFO] [stdout] | [INFO] [stdout] 21 | async fn get_price(&self, pair_code: &str) -> Result> { [INFO] [stdout] | ________________________________________________________________________________^ [INFO] [stdout] 22 | | let url = format!("https://ftx.com/api/markets/{}", pair_code); [INFO] [stdout] 23 | | [INFO] [stdout] 24 | | let response = reqwest::get(url).await?.json::().await; [INFO] [stdout] ... | [INFO] [stdout] 30 | | }]) [INFO] [stdout] 31 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] note: ...which requires building MIR for `client::ftx::::get_price::{closure#0}`... [INFO] [stdout] --> src/client/ftx.rs:21:80 [INFO] [stdout] | [INFO] [stdout] 21 | async fn get_price(&self, pair_code: &str) -> Result> { [INFO] [stdout] | ________________________________________________________________________________^ [INFO] [stdout] 22 | | let url = format!("https://ftx.com/api/markets/{}", pair_code); [INFO] [stdout] 23 | | [INFO] [stdout] 24 | | let response = reqwest::get(url).await?.json::().await; [INFO] [stdout] ... | [INFO] [stdout] 30 | | }]) [INFO] [stdout] 31 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] note: ...which requires type-checking `client::ftx::::get_price::{closure#0}`... [INFO] [stdout] --> src/client/ftx.rs:21:80 [INFO] [stdout] | [INFO] [stdout] 21 | async fn get_price(&self, pair_code: &str) -> Result> { [INFO] [stdout] | ________________________________________________________________________________^ [INFO] [stdout] 22 | | let url = format!("https://ftx.com/api/markets/{}", pair_code); [INFO] [stdout] 23 | | [INFO] [stdout] 24 | | let response = reqwest::get(url).await?.json::().await; [INFO] [stdout] ... | [INFO] [stdout] 30 | | }]) [INFO] [stdout] 31 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] = note: ...which again requires type-checking `client::ftx::::get_price`, completing the cycle [INFO] [stdout] = note: cycle used when type-checking all item bodies [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0391]: cycle detected when type-checking `client::gateio::::get_price` [INFO] [stdout] --> src/client/gateio.rs:18:5 [INFO] [stdout] | [INFO] [stdout] 18 | async fn get_price(&self, pair_code: &str) -> Result> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] note: ...which requires generator glue MIR for `client::gateio::::get_price::{closure#0}`... [INFO] [stdout] --> src/client/gateio.rs:18:80 [INFO] [stdout] | [INFO] [stdout] 18 | async fn get_price(&self, pair_code: &str) -> Result> { [INFO] [stdout] | ________________________________________________________________________________^ [INFO] [stdout] 19 | | let params = [("currency_pair", get_pair(pair_code, "_"))]; [INFO] [stdout] 20 | | let url = [INFO] [stdout] 21 | | reqwest::Url::parse_with_params("https://api.gateio.ws/api/v4/spot/tickers", ¶ms)?; [INFO] [stdout] ... | [INFO] [stdout] 31 | | }]) [INFO] [stdout] 32 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] note: ...which requires elaborating drops for `client::gateio::::get_price::{closure#0}`... [INFO] [stdout] --> src/client/gateio.rs:18:80 [INFO] [stdout] | [INFO] [stdout] 18 | async fn get_price(&self, pair_code: &str) -> Result> { [INFO] [stdout] | ________________________________________________________________________________^ [INFO] [stdout] 19 | | let params = [("currency_pair", get_pair(pair_code, "_"))]; [INFO] [stdout] 20 | | let url = [INFO] [stdout] 21 | | reqwest::Url::parse_with_params("https://api.gateio.ws/api/v4/spot/tickers", ¶ms)?; [INFO] [stdout] ... | [INFO] [stdout] 31 | | }]) [INFO] [stdout] 32 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] note: ...which requires borrow-checking `client::gateio::::get_price::{closure#0}`... [INFO] [stdout] --> src/client/gateio.rs:18:80 [INFO] [stdout] | [INFO] [stdout] 18 | async fn get_price(&self, pair_code: &str) -> Result> { [INFO] [stdout] | ________________________________________________________________________________^ [INFO] [stdout] 19 | | let params = [("currency_pair", get_pair(pair_code, "_"))]; [INFO] [stdout] 20 | | let url = [INFO] [stdout] 21 | | reqwest::Url::parse_with_params("https://api.gateio.ws/api/v4/spot/tickers", ¶ms)?; [INFO] [stdout] ... | [INFO] [stdout] 31 | | }]) [INFO] [stdout] 32 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] note: ...which requires processing `client::gateio::::get_price::{closure#0}`... [INFO] [stdout] --> src/client/gateio.rs:18:80 [INFO] [stdout] | [INFO] [stdout] 18 | async fn get_price(&self, pair_code: &str) -> Result> { [INFO] [stdout] | ________________________________________________________________________________^ [INFO] [stdout] 19 | | let params = [("currency_pair", get_pair(pair_code, "_"))]; [INFO] [stdout] 20 | | let url = [INFO] [stdout] 21 | | reqwest::Url::parse_with_params("https://api.gateio.ws/api/v4/spot/tickers", ¶ms)?; [INFO] [stdout] ... | [INFO] [stdout] 31 | | }]) [INFO] [stdout] 32 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] note: ...which requires processing MIR for `client::gateio::::get_price::{closure#0}`... [INFO] [stdout] --> src/client/gateio.rs:18:80 [INFO] [stdout] | [INFO] [stdout] 18 | async fn get_price(&self, pair_code: &str) -> Result> { [INFO] [stdout] | ________________________________________________________________________________^ [INFO] [stdout] 19 | | let params = [("currency_pair", get_pair(pair_code, "_"))]; [INFO] [stdout] 20 | | let url = [INFO] [stdout] 21 | | reqwest::Url::parse_with_params("https://api.gateio.ws/api/v4/spot/tickers", ¶ms)?; [INFO] [stdout] ... | [INFO] [stdout] 31 | | }]) [INFO] [stdout] 32 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] note: ...which requires unsafety-checking `client::gateio::::get_price::{closure#0}`... [INFO] [stdout] --> src/client/gateio.rs:18:80 [INFO] [stdout] | [INFO] [stdout] 18 | async fn get_price(&self, pair_code: &str) -> Result> { [INFO] [stdout] | ________________________________________________________________________________^ [INFO] [stdout] 19 | | let params = [("currency_pair", get_pair(pair_code, "_"))]; [INFO] [stdout] 20 | | let url = [INFO] [stdout] 21 | | reqwest::Url::parse_with_params("https://api.gateio.ws/api/v4/spot/tickers", ¶ms)?; [INFO] [stdout] ... | [INFO] [stdout] 31 | | }]) [INFO] [stdout] 32 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] note: ...which requires building MIR for `client::gateio::::get_price::{closure#0}`... [INFO] [stdout] --> src/client/gateio.rs:18:80 [INFO] [stdout] | [INFO] [stdout] 18 | async fn get_price(&self, pair_code: &str) -> Result> { [INFO] [stdout] | ________________________________________________________________________________^ [INFO] [stdout] 19 | | let params = [("currency_pair", get_pair(pair_code, "_"))]; [INFO] [stdout] 20 | | let url = [INFO] [stdout] 21 | | reqwest::Url::parse_with_params("https://api.gateio.ws/api/v4/spot/tickers", ¶ms)?; [INFO] [stdout] ... | [INFO] [stdout] 31 | | }]) [INFO] [stdout] 32 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] note: ...which requires type-checking `client::gateio::::get_price::{closure#0}`... [INFO] [stdout] --> src/client/gateio.rs:18:80 [INFO] [stdout] | [INFO] [stdout] 18 | async fn get_price(&self, pair_code: &str) -> Result> { [INFO] [stdout] | ________________________________________________________________________________^ [INFO] [stdout] 19 | | let params = [("currency_pair", get_pair(pair_code, "_"))]; [INFO] [stdout] 20 | | let url = [INFO] [stdout] 21 | | reqwest::Url::parse_with_params("https://api.gateio.ws/api/v4/spot/tickers", ¶ms)?; [INFO] [stdout] ... | [INFO] [stdout] 31 | | }]) [INFO] [stdout] 32 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] = note: ...which again requires type-checking `client::gateio::::get_price`, completing the cycle [INFO] [stdout] = note: cycle used when type-checking all item bodies [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0391]: cycle detected when type-checking `client::buda::::get_price` [INFO] [stdout] --> src/client/buda.rs:23:5 [INFO] [stdout] | [INFO] [stdout] 23 | async fn get_price(&self, pair_code: &str) -> Result> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] note: ...which requires generator glue MIR for `client::buda::::get_price::{closure#0}`... [INFO] [stdout] --> src/client/buda.rs:23:80 [INFO] [stdout] | [INFO] [stdout] 23 | async fn get_price(&self, pair_code: &str) -> Result> { [INFO] [stdout] | ________________________________________________________________________________^ [INFO] [stdout] 24 | | let url = format!( [INFO] [stdout] 25 | | "https://www.buda.com/api/v2/markets/{}/ticker", [INFO] [stdout] 26 | | get_pair(pair_code, "-") [INFO] [stdout] ... | [INFO] [stdout] 37 | | }]) [INFO] [stdout] 38 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] note: ...which requires elaborating drops for `client::buda::::get_price::{closure#0}`... [INFO] [stdout] --> src/client/buda.rs:23:80 [INFO] [stdout] | [INFO] [stdout] 23 | async fn get_price(&self, pair_code: &str) -> Result> { [INFO] [stdout] | ________________________________________________________________________________^ [INFO] [stdout] 24 | | let url = format!( [INFO] [stdout] 25 | | "https://www.buda.com/api/v2/markets/{}/ticker", [INFO] [stdout] 26 | | get_pair(pair_code, "-") [INFO] [stdout] ... | [INFO] [stdout] 37 | | }]) [INFO] [stdout] 38 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] note: ...which requires borrow-checking `client::buda::::get_price::{closure#0}`... [INFO] [stdout] --> src/client/buda.rs:23:80 [INFO] [stdout] | [INFO] [stdout] 23 | async fn get_price(&self, pair_code: &str) -> Result> { [INFO] [stdout] | ________________________________________________________________________________^ [INFO] [stdout] 24 | | let url = format!( [INFO] [stdout] 25 | | "https://www.buda.com/api/v2/markets/{}/ticker", [INFO] [stdout] 26 | | get_pair(pair_code, "-") [INFO] [stdout] ... | [INFO] [stdout] 37 | | }]) [INFO] [stdout] 38 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] note: ...which requires processing `client::buda::::get_price::{closure#0}`... [INFO] [stdout] --> src/client/buda.rs:23:80 [INFO] [stdout] | [INFO] [stdout] 23 | async fn get_price(&self, pair_code: &str) -> Result> { [INFO] [stdout] | ________________________________________________________________________________^ [INFO] [stdout] 24 | | let url = format!( [INFO] [stdout] 25 | | "https://www.buda.com/api/v2/markets/{}/ticker", [INFO] [stdout] 26 | | get_pair(pair_code, "-") [INFO] [stdout] ... | [INFO] [stdout] 37 | | }]) [INFO] [stdout] 38 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] note: ...which requires processing MIR for `client::buda::::get_price::{closure#0}`... [INFO] [stdout] --> src/client/buda.rs:23:80 [INFO] [stdout] | [INFO] [stdout] 23 | async fn get_price(&self, pair_code: &str) -> Result> { [INFO] [stdout] | ________________________________________________________________________________^ [INFO] [stdout] 24 | | let url = format!( [INFO] [stdout] 25 | | "https://www.buda.com/api/v2/markets/{}/ticker", [INFO] [stdout] 26 | | get_pair(pair_code, "-") [INFO] [stdout] ... | [INFO] [stdout] 37 | | }]) [INFO] [stdout] 38 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] note: ...which requires unsafety-checking `client::buda::::get_price::{closure#0}`... [INFO] [stdout] --> src/client/buda.rs:23:80 [INFO] [stdout] | [INFO] [stdout] 23 | async fn get_price(&self, pair_code: &str) -> Result> { [INFO] [stdout] | ________________________________________________________________________________^ [INFO] [stdout] 24 | | let url = format!( [INFO] [stdout] 25 | | "https://www.buda.com/api/v2/markets/{}/ticker", [INFO] [stdout] 26 | | get_pair(pair_code, "-") [INFO] [stdout] ... | [INFO] [stdout] 37 | | }]) [INFO] [stdout] 38 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] note: ...which requires building MIR for `client::buda::::get_price::{closure#0}`... [INFO] [stdout] --> src/client/buda.rs:23:80 [INFO] [stdout] | [INFO] [stdout] 23 | async fn get_price(&self, pair_code: &str) -> Result> { [INFO] [stdout] | ________________________________________________________________________________^ [INFO] [stdout] 24 | | let url = format!( [INFO] [stdout] 25 | | "https://www.buda.com/api/v2/markets/{}/ticker", [INFO] [stdout] 26 | | get_pair(pair_code, "-") [INFO] [stdout] ... | [INFO] [stdout] 37 | | }]) [INFO] [stdout] 38 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] note: ...which requires type-checking `client::buda::::get_price::{closure#0}`... [INFO] [stdout] --> src/client/buda.rs:23:80 [INFO] [stdout] | [INFO] [stdout] 23 | async fn get_price(&self, pair_code: &str) -> Result> { [INFO] [stdout] | ________________________________________________________________________________^ [INFO] [stdout] 24 | | let url = format!( [INFO] [stdout] 25 | | "https://www.buda.com/api/v2/markets/{}/ticker", [INFO] [stdout] 26 | | get_pair(pair_code, "-") [INFO] [stdout] ... | [INFO] [stdout] 37 | | }]) [INFO] [stdout] 38 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] = note: ...which again requires type-checking `client::buda::::get_price`, completing the cycle [INFO] [stdout] = note: cycle used when type-checking all item bodies [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0391]: cycle detected when type-checking `client::huobi::::get_price` [INFO] [stdout] --> src/client/huobi.rs:23:5 [INFO] [stdout] | [INFO] [stdout] 23 | async fn get_price(&self, pair_code: &str) -> Result> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] note: ...which requires generator glue MIR for `client::huobi::::get_price::{closure#0}`... [INFO] [stdout] --> src/client/huobi.rs:23:80 [INFO] [stdout] | [INFO] [stdout] 23 | async fn get_price(&self, pair_code: &str) -> Result> { [INFO] [stdout] | ________________________________________________________________________________^ [INFO] [stdout] 24 | | let params = [("symbol", get_pair(pair_code, "").to_lowercase())]; [INFO] [stdout] 25 | | let url = [INFO] [stdout] 26 | | reqwest::Url::parse_with_params("https://api.huobi.pro/market/detail/merged", ¶ms)?; [INFO] [stdout] ... | [INFO] [stdout] 34 | | }]) [INFO] [stdout] 35 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] note: ...which requires elaborating drops for `client::huobi::::get_price::{closure#0}`... [INFO] [stdout] --> src/client/huobi.rs:23:80 [INFO] [stdout] | [INFO] [stdout] 23 | async fn get_price(&self, pair_code: &str) -> Result> { [INFO] [stdout] | ________________________________________________________________________________^ [INFO] [stdout] 24 | | let params = [("symbol", get_pair(pair_code, "").to_lowercase())]; [INFO] [stdout] 25 | | let url = [INFO] [stdout] 26 | | reqwest::Url::parse_with_params("https://api.huobi.pro/market/detail/merged", ¶ms)?; [INFO] [stdout] ... | [INFO] [stdout] 34 | | }]) [INFO] [stdout] 35 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] note: ...which requires borrow-checking `client::huobi::::get_price::{closure#0}`... [INFO] [stdout] --> src/client/huobi.rs:23:80 [INFO] [stdout] | [INFO] [stdout] 23 | async fn get_price(&self, pair_code: &str) -> Result> { [INFO] [stdout] | ________________________________________________________________________________^ [INFO] [stdout] 24 | | let params = [("symbol", get_pair(pair_code, "").to_lowercase())]; [INFO] [stdout] 25 | | let url = [INFO] [stdout] 26 | | reqwest::Url::parse_with_params("https://api.huobi.pro/market/detail/merged", ¶ms)?; [INFO] [stdout] ... | [INFO] [stdout] 34 | | }]) [INFO] [stdout] 35 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] note: ...which requires processing `client::huobi::::get_price::{closure#0}`... [INFO] [stdout] --> src/client/huobi.rs:23:80 [INFO] [stdout] | [INFO] [stdout] 23 | async fn get_price(&self, pair_code: &str) -> Result> { [INFO] [stdout] | ________________________________________________________________________________^ [INFO] [stdout] 24 | | let params = [("symbol", get_pair(pair_code, "").to_lowercase())]; [INFO] [stdout] 25 | | let url = [INFO] [stdout] 26 | | reqwest::Url::parse_with_params("https://api.huobi.pro/market/detail/merged", ¶ms)?; [INFO] [stdout] ... | [INFO] [stdout] 34 | | }]) [INFO] [stdout] 35 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] note: ...which requires processing MIR for `client::huobi::::get_price::{closure#0}`... [INFO] [stdout] --> src/client/huobi.rs:23:80 [INFO] [stdout] | [INFO] [stdout] 23 | async fn get_price(&self, pair_code: &str) -> Result> { [INFO] [stdout] | ________________________________________________________________________________^ [INFO] [stdout] 24 | | let params = [("symbol", get_pair(pair_code, "").to_lowercase())]; [INFO] [stdout] 25 | | let url = [INFO] [stdout] 26 | | reqwest::Url::parse_with_params("https://api.huobi.pro/market/detail/merged", ¶ms)?; [INFO] [stdout] ... | [INFO] [stdout] 34 | | }]) [INFO] [stdout] 35 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] note: ...which requires unsafety-checking `client::huobi::::get_price::{closure#0}`... [INFO] [stdout] --> src/client/huobi.rs:23:80 [INFO] [stdout] | [INFO] [stdout] 23 | async fn get_price(&self, pair_code: &str) -> Result> { [INFO] [stdout] | ________________________________________________________________________________^ [INFO] [stdout] 24 | | let params = [("symbol", get_pair(pair_code, "").to_lowercase())]; [INFO] [stdout] 25 | | let url = [INFO] [stdout] 26 | | reqwest::Url::parse_with_params("https://api.huobi.pro/market/detail/merged", ¶ms)?; [INFO] [stdout] ... | [INFO] [stdout] 34 | | }]) [INFO] [stdout] 35 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] note: ...which requires building MIR for `client::huobi::::get_price::{closure#0}`... [INFO] [stdout] --> src/client/huobi.rs:23:80 [INFO] [stdout] | [INFO] [stdout] 23 | async fn get_price(&self, pair_code: &str) -> Result> { [INFO] [stdout] | ________________________________________________________________________________^ [INFO] [stdout] 24 | | let params = [("symbol", get_pair(pair_code, "").to_lowercase())]; [INFO] [stdout] 25 | | let url = [INFO] [stdout] 26 | | reqwest::Url::parse_with_params("https://api.huobi.pro/market/detail/merged", ¶ms)?; [INFO] [stdout] ... | [INFO] [stdout] 34 | | }]) [INFO] [stdout] 35 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] note: ...which requires type-checking `client::huobi::::get_price::{closure#0}`... [INFO] [stdout] --> src/client/huobi.rs:23:80 [INFO] [stdout] | [INFO] [stdout] 23 | async fn get_price(&self, pair_code: &str) -> Result> { [INFO] [stdout] | ________________________________________________________________________________^ [INFO] [stdout] 24 | | let params = [("symbol", get_pair(pair_code, "").to_lowercase())]; [INFO] [stdout] 25 | | let url = [INFO] [stdout] 26 | | reqwest::Url::parse_with_params("https://api.huobi.pro/market/detail/merged", ¶ms)?; [INFO] [stdout] ... | [INFO] [stdout] 34 | | }]) [INFO] [stdout] 35 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] = note: ...which again requires type-checking `client::huobi::::get_price`, completing the cycle [INFO] [stdout] = note: cycle used when type-checking all item bodies [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0391]: cycle detected when type-checking `client::coinbase::::get_price` [INFO] [stdout] --> src/client/coinbase.rs:19:5 [INFO] [stdout] | [INFO] [stdout] 19 | async fn get_price(&self, pair_code: &str) -> Result> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] note: ...which requires generator glue MIR for `client::coinbase::::get_price::{closure#0}`... [INFO] [stdout] --> src/client/coinbase.rs:19:80 [INFO] [stdout] | [INFO] [stdout] 19 | async fn get_price(&self, pair_code: &str) -> Result> { [INFO] [stdout] | ________________________________________________________________________________^ [INFO] [stdout] 20 | | let url = format!( [INFO] [stdout] 21 | | "https://api.exchange.coinbase.com/products/{}/ticker", [INFO] [stdout] 22 | | get_pair(pair_code, "-") [INFO] [stdout] ... | [INFO] [stdout] 37 | | }]) [INFO] [stdout] 38 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] note: ...which requires elaborating drops for `client::coinbase::::get_price::{closure#0}`... [INFO] [stdout] --> src/client/coinbase.rs:19:80 [INFO] [stdout] | [INFO] [stdout] 19 | async fn get_price(&self, pair_code: &str) -> Result> { [INFO] [stdout] | ________________________________________________________________________________^ [INFO] [stdout] 20 | | let url = format!( [INFO] [stdout] 21 | | "https://api.exchange.coinbase.com/products/{}/ticker", [INFO] [stdout] 22 | | get_pair(pair_code, "-") [INFO] [stdout] ... | [INFO] [stdout] 37 | | }]) [INFO] [stdout] 38 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] note: ...which requires borrow-checking `client::coinbase::::get_price::{closure#0}`... [INFO] [stdout] --> src/client/coinbase.rs:19:80 [INFO] [stdout] | [INFO] [stdout] 19 | async fn get_price(&self, pair_code: &str) -> Result> { [INFO] [stdout] | ________________________________________________________________________________^ [INFO] [stdout] 20 | | let url = format!( [INFO] [stdout] 21 | | "https://api.exchange.coinbase.com/products/{}/ticker", [INFO] [stdout] 22 | | get_pair(pair_code, "-") [INFO] [stdout] ... | [INFO] [stdout] 37 | | }]) [INFO] [stdout] 38 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] note: ...which requires processing `client::coinbase::::get_price::{closure#0}`... [INFO] [stdout] --> src/client/coinbase.rs:19:80 [INFO] [stdout] | [INFO] [stdout] 19 | async fn get_price(&self, pair_code: &str) -> Result> { [INFO] [stdout] | ________________________________________________________________________________^ [INFO] [stdout] 20 | | let url = format!( [INFO] [stdout] 21 | | "https://api.exchange.coinbase.com/products/{}/ticker", [INFO] [stdout] 22 | | get_pair(pair_code, "-") [INFO] [stdout] ... | [INFO] [stdout] 37 | | }]) [INFO] [stdout] 38 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] note: ...which requires processing MIR for `client::coinbase::::get_price::{closure#0}`... [INFO] [stdout] --> src/client/coinbase.rs:19:80 [INFO] [stdout] | [INFO] [stdout] 19 | async fn get_price(&self, pair_code: &str) -> Result> { [INFO] [stdout] | ________________________________________________________________________________^ [INFO] [stdout] 20 | | let url = format!( [INFO] [stdout] 21 | | "https://api.exchange.coinbase.com/products/{}/ticker", [INFO] [stdout] 22 | | get_pair(pair_code, "-") [INFO] [stdout] ... | [INFO] [stdout] 37 | | }]) [INFO] [stdout] 38 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] note: ...which requires unsafety-checking `client::coinbase::::get_price::{closure#0}`... [INFO] [stdout] --> src/client/coinbase.rs:19:80 [INFO] [stdout] | [INFO] [stdout] 19 | async fn get_price(&self, pair_code: &str) -> Result> { [INFO] [stdout] | ________________________________________________________________________________^ [INFO] [stdout] 20 | | let url = format!( [INFO] [stdout] 21 | | "https://api.exchange.coinbase.com/products/{}/ticker", [INFO] [stdout] 22 | | get_pair(pair_code, "-") [INFO] [stdout] ... | [INFO] [stdout] 37 | | }]) [INFO] [stdout] 38 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] note: ...which requires building MIR for `client::coinbase::::get_price::{closure#0}`... [INFO] [stdout] --> src/client/coinbase.rs:19:80 [INFO] [stdout] | [INFO] [stdout] 19 | async fn get_price(&self, pair_code: &str) -> Result> { [INFO] [stdout] | ________________________________________________________________________________^ [INFO] [stdout] 20 | | let url = format!( [INFO] [stdout] 21 | | "https://api.exchange.coinbase.com/products/{}/ticker", [INFO] [stdout] 22 | | get_pair(pair_code, "-") [INFO] [stdout] ... | [INFO] [stdout] 37 | | }]) [INFO] [stdout] 38 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] note: ...which requires type-checking `client::coinbase::::get_price::{closure#0}`... [INFO] [stdout] --> src/client/coinbase.rs:19:80 [INFO] [stdout] | [INFO] [stdout] 19 | async fn get_price(&self, pair_code: &str) -> Result> { [INFO] [stdout] | ________________________________________________________________________________^ [INFO] [stdout] 20 | | let url = format!( [INFO] [stdout] 21 | | "https://api.exchange.coinbase.com/products/{}/ticker", [INFO] [stdout] 22 | | get_pair(pair_code, "-") [INFO] [stdout] ... | [INFO] [stdout] 37 | | }]) [INFO] [stdout] 38 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] = note: ...which again requires type-checking `client::coinbase::::get_price`, completing the cycle [INFO] [stdout] = note: cycle used when type-checking all item bodies [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0391]: cycle detected when type-checking `client::kucoin::::get_price` [INFO] [stdout] --> src/client/kucoin.rs:23:5 [INFO] [stdout] | [INFO] [stdout] 23 | async fn get_price(&self, pair_code: &str) -> Result> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] note: ...which requires generator glue MIR for `client::kucoin::::get_price::{closure#0}`... [INFO] [stdout] --> src/client/kucoin.rs:23:80 [INFO] [stdout] | [INFO] [stdout] 23 | async fn get_price(&self, pair_code: &str) -> Result> { [INFO] [stdout] | ________________________________________________________________________________^ [INFO] [stdout] 24 | | let params = [("symbol", get_pair(pair_code, "-"))]; [INFO] [stdout] 25 | | let url = reqwest::Url::parse_with_params( [INFO] [stdout] 26 | | "https://api.kucoin.com/api/v1/market/orderbook/level1", [INFO] [stdout] ... | [INFO] [stdout] 36 | | }]) [INFO] [stdout] 37 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] note: ...which requires elaborating drops for `client::kucoin::::get_price::{closure#0}`... [INFO] [stdout] --> src/client/kucoin.rs:23:80 [INFO] [stdout] | [INFO] [stdout] 23 | async fn get_price(&self, pair_code: &str) -> Result> { [INFO] [stdout] | ________________________________________________________________________________^ [INFO] [stdout] 24 | | let params = [("symbol", get_pair(pair_code, "-"))]; [INFO] [stdout] 25 | | let url = reqwest::Url::parse_with_params( [INFO] [stdout] 26 | | "https://api.kucoin.com/api/v1/market/orderbook/level1", [INFO] [stdout] ... | [INFO] [stdout] 36 | | }]) [INFO] [stdout] 37 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] note: ...which requires borrow-checking `client::kucoin::::get_price::{closure#0}`... [INFO] [stdout] --> src/client/kucoin.rs:23:80 [INFO] [stdout] | [INFO] [stdout] 23 | async fn get_price(&self, pair_code: &str) -> Result> { [INFO] [stdout] | ________________________________________________________________________________^ [INFO] [stdout] 24 | | let params = [("symbol", get_pair(pair_code, "-"))]; [INFO] [stdout] 25 | | let url = reqwest::Url::parse_with_params( [INFO] [stdout] 26 | | "https://api.kucoin.com/api/v1/market/orderbook/level1", [INFO] [stdout] ... | [INFO] [stdout] 36 | | }]) [INFO] [stdout] 37 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] note: ...which requires processing `client::kucoin::::get_price::{closure#0}`... [INFO] [stdout] --> src/client/kucoin.rs:23:80 [INFO] [stdout] | [INFO] [stdout] 23 | async fn get_price(&self, pair_code: &str) -> Result> { [INFO] [stdout] | ________________________________________________________________________________^ [INFO] [stdout] 24 | | let params = [("symbol", get_pair(pair_code, "-"))]; [INFO] [stdout] 25 | | let url = reqwest::Url::parse_with_params( [INFO] [stdout] 26 | | "https://api.kucoin.com/api/v1/market/orderbook/level1", [INFO] [stdout] ... | [INFO] [stdout] 36 | | }]) [INFO] [stdout] 37 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] note: ...which requires processing MIR for `client::kucoin::::get_price::{closure#0}`... [INFO] [stdout] --> src/client/kucoin.rs:23:80 [INFO] [stdout] | [INFO] [stdout] 23 | async fn get_price(&self, pair_code: &str) -> Result> { [INFO] [stdout] | ________________________________________________________________________________^ [INFO] [stdout] 24 | | let params = [("symbol", get_pair(pair_code, "-"))]; [INFO] [stdout] 25 | | let url = reqwest::Url::parse_with_params( [INFO] [stdout] 26 | | "https://api.kucoin.com/api/v1/market/orderbook/level1", [INFO] [stdout] ... | [INFO] [stdout] 36 | | }]) [INFO] [stdout] 37 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] note: ...which requires unsafety-checking `client::kucoin::::get_price::{closure#0}`... [INFO] [stdout] --> src/client/kucoin.rs:23:80 [INFO] [stdout] | [INFO] [stdout] 23 | async fn get_price(&self, pair_code: &str) -> Result> { [INFO] [stdout] | ________________________________________________________________________________^ [INFO] [stdout] 24 | | let params = [("symbol", get_pair(pair_code, "-"))]; [INFO] [stdout] 25 | | let url = reqwest::Url::parse_with_params( [INFO] [stdout] 26 | | "https://api.kucoin.com/api/v1/market/orderbook/level1", [INFO] [stdout] ... | [INFO] [stdout] 36 | | }]) [INFO] [stdout] 37 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] note: ...which requires building MIR for `client::kucoin::::get_price::{closure#0}`... [INFO] [stdout] --> src/client/kucoin.rs:23:80 [INFO] [stdout] | [INFO] [stdout] 23 | async fn get_price(&self, pair_code: &str) -> Result> { [INFO] [stdout] | ________________________________________________________________________________^ [INFO] [stdout] 24 | | let params = [("symbol", get_pair(pair_code, "-"))]; [INFO] [stdout] 25 | | let url = reqwest::Url::parse_with_params( [INFO] [stdout] 26 | | "https://api.kucoin.com/api/v1/market/orderbook/level1", [INFO] [stdout] ... | [INFO] [stdout] 36 | | }]) [INFO] [stdout] 37 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] note: ...which requires type-checking `client::kucoin::::get_price::{closure#0}`... [INFO] [stdout] --> src/client/kucoin.rs:23:80 [INFO] [stdout] | [INFO] [stdout] 23 | async fn get_price(&self, pair_code: &str) -> Result> { [INFO] [stdout] | ________________________________________________________________________________^ [INFO] [stdout] 24 | | let params = [("symbol", get_pair(pair_code, "-"))]; [INFO] [stdout] 25 | | let url = reqwest::Url::parse_with_params( [INFO] [stdout] 26 | | "https://api.kucoin.com/api/v1/market/orderbook/level1", [INFO] [stdout] ... | [INFO] [stdout] 36 | | }]) [INFO] [stdout] 37 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] = note: ...which again requires type-checking `client::kucoin::::get_price`, completing the cycle [INFO] [stdout] = note: cycle used when type-checking all item bodies [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0391]: cycle detected when type-checking `client::okx::::get_price` [INFO] [stdout] --> src/client/okx.rs:23:5 [INFO] [stdout] | [INFO] [stdout] 23 | async fn get_price(&self, pair_code: &str) -> Result> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] note: ...which requires generator glue MIR for `client::okx::::get_price::{closure#0}`... [INFO] [stdout] --> src/client/okx.rs:23:80 [INFO] [stdout] | [INFO] [stdout] 23 | async fn get_price(&self, pair_code: &str) -> Result> { [INFO] [stdout] | ________________________________________________________________________________^ [INFO] [stdout] 24 | | let params = [("instId", get_pair(pair_code, "-"))]; [INFO] [stdout] 25 | | let url = [INFO] [stdout] 26 | | reqwest::Url::parse_with_params("https://www.okx.com/api/v5/market/ticker", ¶ms)?; [INFO] [stdout] ... | [INFO] [stdout] 34 | | }]) [INFO] [stdout] 35 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] note: ...which requires elaborating drops for `client::okx::::get_price::{closure#0}`... [INFO] [stdout] --> src/client/okx.rs:23:80 [INFO] [stdout] | [INFO] [stdout] 23 | async fn get_price(&self, pair_code: &str) -> Result> { [INFO] [stdout] | ________________________________________________________________________________^ [INFO] [stdout] 24 | | let params = [("instId", get_pair(pair_code, "-"))]; [INFO] [stdout] 25 | | let url = [INFO] [stdout] 26 | | reqwest::Url::parse_with_params("https://www.okx.com/api/v5/market/ticker", ¶ms)?; [INFO] [stdout] ... | [INFO] [stdout] 34 | | }]) [INFO] [stdout] 35 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] note: ...which requires borrow-checking `client::okx::::get_price::{closure#0}`... [INFO] [stdout] --> src/client/okx.rs:23:80 [INFO] [stdout] | [INFO] [stdout] 23 | async fn get_price(&self, pair_code: &str) -> Result> { [INFO] [stdout] | ________________________________________________________________________________^ [INFO] [stdout] 24 | | let params = [("instId", get_pair(pair_code, "-"))]; [INFO] [stdout] 25 | | let url = [INFO] [stdout] 26 | | reqwest::Url::parse_with_params("https://www.okx.com/api/v5/market/ticker", ¶ms)?; [INFO] [stdout] ... | [INFO] [stdout] 34 | | }]) [INFO] [stdout] 35 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] note: ...which requires processing `client::okx::::get_price::{closure#0}`... [INFO] [stdout] --> src/client/okx.rs:23:80 [INFO] [stdout] | [INFO] [stdout] 23 | async fn get_price(&self, pair_code: &str) -> Result> { [INFO] [stdout] | ________________________________________________________________________________^ [INFO] [stdout] 24 | | let params = [("instId", get_pair(pair_code, "-"))]; [INFO] [stdout] 25 | | let url = [INFO] [stdout] 26 | | reqwest::Url::parse_with_params("https://www.okx.com/api/v5/market/ticker", ¶ms)?; [INFO] [stdout] ... | [INFO] [stdout] 34 | | }]) [INFO] [stdout] 35 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] note: ...which requires processing MIR for `client::okx::::get_price::{closure#0}`... [INFO] [stdout] --> src/client/okx.rs:23:80 [INFO] [stdout] | [INFO] [stdout] 23 | async fn get_price(&self, pair_code: &str) -> Result> { [INFO] [stdout] | ________________________________________________________________________________^ [INFO] [stdout] 24 | | let params = [("instId", get_pair(pair_code, "-"))]; [INFO] [stdout] 25 | | let url = [INFO] [stdout] 26 | | reqwest::Url::parse_with_params("https://www.okx.com/api/v5/market/ticker", ¶ms)?; [INFO] [stdout] ... | [INFO] [stdout] 34 | | }]) [INFO] [stdout] 35 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] note: ...which requires unsafety-checking `client::okx::::get_price::{closure#0}`... [INFO] [stdout] --> src/client/okx.rs:23:80 [INFO] [stdout] | [INFO] [stdout] 23 | async fn get_price(&self, pair_code: &str) -> Result> { [INFO] [stdout] | ________________________________________________________________________________^ [INFO] [stdout] 24 | | let params = [("instId", get_pair(pair_code, "-"))]; [INFO] [stdout] 25 | | let url = [INFO] [stdout] 26 | | reqwest::Url::parse_with_params("https://www.okx.com/api/v5/market/ticker", ¶ms)?; [INFO] [stdout] ... | [INFO] [stdout] 34 | | }]) [INFO] [stdout] 35 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] note: ...which requires building MIR for `client::okx::::get_price::{closure#0}`... [INFO] [stdout] --> src/client/okx.rs:23:80 [INFO] [stdout] | [INFO] [stdout] 23 | async fn get_price(&self, pair_code: &str) -> Result> { [INFO] [stdout] | ________________________________________________________________________________^ [INFO] [stdout] 24 | | let params = [("instId", get_pair(pair_code, "-"))]; [INFO] [stdout] 25 | | let url = [INFO] [stdout] 26 | | reqwest::Url::parse_with_params("https://www.okx.com/api/v5/market/ticker", ¶ms)?; [INFO] [stdout] ... | [INFO] [stdout] 34 | | }]) [INFO] [stdout] 35 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] note: ...which requires type-checking `client::okx::::get_price::{closure#0}`... [INFO] [stdout] --> src/client/okx.rs:23:80 [INFO] [stdout] | [INFO] [stdout] 23 | async fn get_price(&self, pair_code: &str) -> Result> { [INFO] [stdout] | ________________________________________________________________________________^ [INFO] [stdout] 24 | | let params = [("instId", get_pair(pair_code, "-"))]; [INFO] [stdout] 25 | | let url = [INFO] [stdout] 26 | | reqwest::Url::parse_with_params("https://www.okx.com/api/v5/market/ticker", ¶ms)?; [INFO] [stdout] ... | [INFO] [stdout] 34 | | }]) [INFO] [stdout] 35 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] = note: ...which again requires type-checking `client::okx::::get_price`, completing the cycle [INFO] [stdout] = note: cycle used when type-checking all item bodies [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0391]: cycle detected when type-checking `client::ripio::::get_price` [INFO] [stdout] --> src/client/ripio.rs:18:5 [INFO] [stdout] | [INFO] [stdout] 18 | async fn get_price(&self, pair_code: &str) -> Result> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] note: ...which requires generator glue MIR for `client::ripio::::get_price::{closure#0}`... [INFO] [stdout] --> src/client/ripio.rs:18:80 [INFO] [stdout] | [INFO] [stdout] 18 | async fn get_price(&self, pair_code: &str) -> Result> { [INFO] [stdout] | ________________________________________________________________________________^ [INFO] [stdout] 19 | | let response = reqwest::get(format!( [INFO] [stdout] 20 | | "https://api.exchange.ripio.com/api/v1/rate/{}", [INFO] [stdout] 21 | | get_pair(pair_code, "_") [INFO] [stdout] ... | [INFO] [stdout] 31 | | }]) [INFO] [stdout] 32 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] note: ...which requires elaborating drops for `client::ripio::::get_price::{closure#0}`... [INFO] [stdout] --> src/client/ripio.rs:18:80 [INFO] [stdout] | [INFO] [stdout] 18 | async fn get_price(&self, pair_code: &str) -> Result> { [INFO] [stdout] | ________________________________________________________________________________^ [INFO] [stdout] 19 | | let response = reqwest::get(format!( [INFO] [stdout] 20 | | "https://api.exchange.ripio.com/api/v1/rate/{}", [INFO] [stdout] 21 | | get_pair(pair_code, "_") [INFO] [stdout] ... | [INFO] [stdout] 31 | | }]) [INFO] [stdout] 32 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] note: ...which requires borrow-checking `client::ripio::::get_price::{closure#0}`... [INFO] [stdout] --> src/client/ripio.rs:18:80 [INFO] [stdout] | [INFO] [stdout] 18 | async fn get_price(&self, pair_code: &str) -> Result> { [INFO] [stdout] | ________________________________________________________________________________^ [INFO] [stdout] 19 | | let response = reqwest::get(format!( [INFO] [stdout] 20 | | "https://api.exchange.ripio.com/api/v1/rate/{}", [INFO] [stdout] 21 | | get_pair(pair_code, "_") [INFO] [stdout] ... | [INFO] [stdout] 31 | | }]) [INFO] [stdout] 32 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] note: ...which requires processing `client::ripio::::get_price::{closure#0}`... [INFO] [stdout] --> src/client/ripio.rs:18:80 [INFO] [stdout] | [INFO] [stdout] 18 | async fn get_price(&self, pair_code: &str) -> Result> { [INFO] [stdout] | ________________________________________________________________________________^ [INFO] [stdout] 19 | | let response = reqwest::get(format!( [INFO] [stdout] 20 | | "https://api.exchange.ripio.com/api/v1/rate/{}", [INFO] [stdout] 21 | | get_pair(pair_code, "_") [INFO] [stdout] ... | [INFO] [stdout] 31 | | }]) [INFO] [stdout] 32 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] note: ...which requires processing MIR for `client::ripio::::get_price::{closure#0}`... [INFO] [stdout] --> src/client/ripio.rs:18:80 [INFO] [stdout] | [INFO] [stdout] 18 | async fn get_price(&self, pair_code: &str) -> Result> { [INFO] [stdout] | ________________________________________________________________________________^ [INFO] [stdout] 19 | | let response = reqwest::get(format!( [INFO] [stdout] 20 | | "https://api.exchange.ripio.com/api/v1/rate/{}", [INFO] [stdout] 21 | | get_pair(pair_code, "_") [INFO] [stdout] ... | [INFO] [stdout] 31 | | }]) [INFO] [stdout] 32 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] note: ...which requires unsafety-checking `client::ripio::::get_price::{closure#0}`... [INFO] [stdout] --> src/client/ripio.rs:18:80 [INFO] [stdout] | [INFO] [stdout] 18 | async fn get_price(&self, pair_code: &str) -> Result> { [INFO] [stdout] | ________________________________________________________________________________^ [INFO] [stdout] 19 | | let response = reqwest::get(format!( [INFO] [stdout] 20 | | "https://api.exchange.ripio.com/api/v1/rate/{}", [INFO] [stdout] 21 | | get_pair(pair_code, "_") [INFO] [stdout] ... | [INFO] [stdout] 31 | | }]) [INFO] [stdout] 32 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] note: ...which requires building MIR for `client::ripio::::get_price::{closure#0}`... [INFO] [stdout] --> src/client/ripio.rs:18:80 [INFO] [stdout] | [INFO] [stdout] 18 | async fn get_price(&self, pair_code: &str) -> Result> { [INFO] [stdout] | ________________________________________________________________________________^ [INFO] [stdout] 19 | | let response = reqwest::get(format!( [INFO] [stdout] 20 | | "https://api.exchange.ripio.com/api/v1/rate/{}", [INFO] [stdout] 21 | | get_pair(pair_code, "_") [INFO] [stdout] ... | [INFO] [stdout] 31 | | }]) [INFO] [stdout] 32 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] note: ...which requires type-checking `client::ripio::::get_price::{closure#0}`... [INFO] [stdout] --> src/client/ripio.rs:18:80 [INFO] [stdout] | [INFO] [stdout] 18 | async fn get_price(&self, pair_code: &str) -> Result> { [INFO] [stdout] | ________________________________________________________________________________^ [INFO] [stdout] 19 | | let response = reqwest::get(format!( [INFO] [stdout] 20 | | "https://api.exchange.ripio.com/api/v1/rate/{}", [INFO] [stdout] 21 | | get_pair(pair_code, "_") [INFO] [stdout] ... | [INFO] [stdout] 31 | | }]) [INFO] [stdout] 32 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] = note: ...which again requires type-checking `client::ripio::::get_price`, completing the cycle [INFO] [stdout] = note: cycle used when type-checking all item bodies [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0391]: cycle detected when type-checking `client::criptoya::::get_price` [INFO] [stdout] --> src/client/criptoya.rs:18:5 [INFO] [stdout] | [INFO] [stdout] 18 | async fn get_price(&self, pair_code: &str) -> Result> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] note: ...which requires generator glue MIR for `client::criptoya::::get_price::{closure#0}`... [INFO] [stdout] --> src/client/criptoya.rs:18:80 [INFO] [stdout] | [INFO] [stdout] 18 | async fn get_price(&self, pair_code: &str) -> Result> { [INFO] [stdout] | ________________________________________________________________________________^ [INFO] [stdout] 19 | | let pair = pair_code.to_lowercase(); [INFO] [stdout] 20 | | let urls = vec![ [INFO] [stdout] 21 | | format!("https://criptoya.com/api/latamex/{}", pair), [INFO] [stdout] ... | [INFO] [stdout] 43 | | Ok(responses) [INFO] [stdout] 44 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] note: ...which requires elaborating drops for `client::criptoya::::get_price::{closure#0}`... [INFO] [stdout] --> src/client/criptoya.rs:18:80 [INFO] [stdout] | [INFO] [stdout] 18 | async fn get_price(&self, pair_code: &str) -> Result> { [INFO] [stdout] | ________________________________________________________________________________^ [INFO] [stdout] 19 | | let pair = pair_code.to_lowercase(); [INFO] [stdout] 20 | | let urls = vec![ [INFO] [stdout] 21 | | format!("https://criptoya.com/api/latamex/{}", pair), [INFO] [stdout] ... | [INFO] [stdout] 43 | | Ok(responses) [INFO] [stdout] 44 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] note: ...which requires borrow-checking `client::criptoya::::get_price::{closure#0}`... [INFO] [stdout] --> src/client/criptoya.rs:18:80 [INFO] [stdout] | [INFO] [stdout] 18 | async fn get_price(&self, pair_code: &str) -> Result> { [INFO] [stdout] | ________________________________________________________________________________^ [INFO] [stdout] 19 | | let pair = pair_code.to_lowercase(); [INFO] [stdout] 20 | | let urls = vec![ [INFO] [stdout] 21 | | format!("https://criptoya.com/api/latamex/{}", pair), [INFO] [stdout] ... | [INFO] [stdout] 43 | | Ok(responses) [INFO] [stdout] 44 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] note: ...which requires processing `client::criptoya::::get_price::{closure#0}`... [INFO] [stdout] --> src/client/criptoya.rs:18:80 [INFO] [stdout] | [INFO] [stdout] 18 | async fn get_price(&self, pair_code: &str) -> Result> { [INFO] [stdout] | ________________________________________________________________________________^ [INFO] [stdout] 19 | | let pair = pair_code.to_lowercase(); [INFO] [stdout] 20 | | let urls = vec![ [INFO] [stdout] 21 | | format!("https://criptoya.com/api/latamex/{}", pair), [INFO] [stdout] ... | [INFO] [stdout] 43 | | Ok(responses) [INFO] [stdout] 44 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] note: ...which requires processing MIR for `client::criptoya::::get_price::{closure#0}`... [INFO] [stdout] --> src/client/criptoya.rs:18:80 [INFO] [stdout] | [INFO] [stdout] 18 | async fn get_price(&self, pair_code: &str) -> Result> { [INFO] [stdout] | ________________________________________________________________________________^ [INFO] [stdout] 19 | | let pair = pair_code.to_lowercase(); [INFO] [stdout] 20 | | let urls = vec![ [INFO] [stdout] 21 | | format!("https://criptoya.com/api/latamex/{}", pair), [INFO] [stdout] ... | [INFO] [stdout] 43 | | Ok(responses) [INFO] [stdout] 44 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] note: ...which requires unsafety-checking `client::criptoya::::get_price::{closure#0}`... [INFO] [stdout] --> src/client/criptoya.rs:18:80 [INFO] [stdout] | [INFO] [stdout] 18 | async fn get_price(&self, pair_code: &str) -> Result> { [INFO] [stdout] | ________________________________________________________________________________^ [INFO] [stdout] 19 | | let pair = pair_code.to_lowercase(); [INFO] [stdout] 20 | | let urls = vec![ [INFO] [stdout] 21 | | format!("https://criptoya.com/api/latamex/{}", pair), [INFO] [stdout] ... | [INFO] [stdout] 43 | | Ok(responses) [INFO] [stdout] 44 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] note: ...which requires building MIR for `client::criptoya::::get_price::{closure#0}`... [INFO] [stdout] --> src/client/criptoya.rs:18:80 [INFO] [stdout] | [INFO] [stdout] 18 | async fn get_price(&self, pair_code: &str) -> Result> { [INFO] [stdout] | ________________________________________________________________________________^ [INFO] [stdout] 19 | | let pair = pair_code.to_lowercase(); [INFO] [stdout] 20 | | let urls = vec![ [INFO] [stdout] 21 | | format!("https://criptoya.com/api/latamex/{}", pair), [INFO] [stdout] ... | [INFO] [stdout] 43 | | Ok(responses) [INFO] [stdout] 44 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] note: ...which requires type-checking `client::criptoya::::get_price::{closure#0}`... [INFO] [stdout] --> src/client/criptoya.rs:18:80 [INFO] [stdout] | [INFO] [stdout] 18 | async fn get_price(&self, pair_code: &str) -> Result> { [INFO] [stdout] | ________________________________________________________________________________^ [INFO] [stdout] 19 | | let pair = pair_code.to_lowercase(); [INFO] [stdout] 20 | | let urls = vec![ [INFO] [stdout] 21 | | format!("https://criptoya.com/api/latamex/{}", pair), [INFO] [stdout] ... | [INFO] [stdout] 43 | | Ok(responses) [INFO] [stdout] 44 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] = note: ...which again requires type-checking `client::criptoya::::get_price`, completing the cycle [INFO] [stdout] = note: cycle used when type-checking all item bodies [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: aborting due to 13 previous errors [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] For more information about this error, try `rustc --explain E0391`. [INFO] [stdout] [INFO] [stderr] error: could not compile `volva` due to 14 previous errors [INFO] [stderr] warning: build failed, waiting for other jobs to finish... [INFO] [stdout] error[E0391]: cycle detected when type-checking `client::cryptocom::::get_price` [INFO] [stdout] --> src/client/cryptocom.rs:28:5 [INFO] [stdout] | [INFO] [stdout] 28 | async fn get_price(&self, pair_code: &str) -> Result> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] note: ...which requires generator glue MIR for `client::cryptocom::::get_price::{closure#0}`... [INFO] [stdout] --> src/client/cryptocom.rs:28:80 [INFO] [stdout] | [INFO] [stdout] 28 | async fn get_price(&self, pair_code: &str) -> Result> { [INFO] [stdout] | ________________________________________________________________________________^ [INFO] [stdout] 29 | | let params = [("instrument_name", get_pair(pair_code, "_"))]; [INFO] [stdout] 30 | | let url = reqwest::Url::parse_with_params( [INFO] [stdout] 31 | | "https://api.crypto.com/v2/public/get-ticker", [INFO] [stdout] ... | [INFO] [stdout] 43 | | }]) [INFO] [stdout] 44 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] note: ...which requires elaborating drops for `client::cryptocom::::get_price::{closure#0}`... [INFO] [stdout] --> src/client/cryptocom.rs:28:80 [INFO] [stdout] | [INFO] [stdout] 28 | async fn get_price(&self, pair_code: &str) -> Result> { [INFO] [stdout] | ________________________________________________________________________________^ [INFO] [stdout] 29 | | let params = [("instrument_name", get_pair(pair_code, "_"))]; [INFO] [stdout] 30 | | let url = reqwest::Url::parse_with_params( [INFO] [stdout] 31 | | "https://api.crypto.com/v2/public/get-ticker", [INFO] [stdout] ... | [INFO] [stdout] 43 | | }]) [INFO] [stdout] 44 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] note: ...which requires borrow-checking `client::cryptocom::::get_price::{closure#0}`... [INFO] [stdout] --> src/client/cryptocom.rs:28:80 [INFO] [stdout] | [INFO] [stdout] 28 | async fn get_price(&self, pair_code: &str) -> Result> { [INFO] [stdout] | ________________________________________________________________________________^ [INFO] [stdout] 29 | | let params = [("instrument_name", get_pair(pair_code, "_"))]; [INFO] [stdout] 30 | | let url = reqwest::Url::parse_with_params( [INFO] [stdout] 31 | | "https://api.crypto.com/v2/public/get-ticker", [INFO] [stdout] ... | [INFO] [stdout] 43 | | }]) [INFO] [stdout] 44 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] note: ...which requires processing `client::cryptocom::::get_price::{closure#0}`... [INFO] [stdout] --> src/client/cryptocom.rs:28:80 [INFO] [stdout] | [INFO] [stdout] 28 | async fn get_price(&self, pair_code: &str) -> Result> { [INFO] [stdout] | ________________________________________________________________________________^ [INFO] [stdout] 29 | | let params = [("instrument_name", get_pair(pair_code, "_"))]; [INFO] [stdout] 30 | | let url = reqwest::Url::parse_with_params( [INFO] [stdout] 31 | | "https://api.crypto.com/v2/public/get-ticker", [INFO] [stdout] ... | [INFO] [stdout] 43 | | }]) [INFO] [stdout] 44 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] note: ...which requires processing MIR for `client::cryptocom::::get_price::{closure#0}`... [INFO] [stdout] --> src/client/cryptocom.rs:28:80 [INFO] [stdout] | [INFO] [stdout] 28 | async fn get_price(&self, pair_code: &str) -> Result> { [INFO] [stdout] | ________________________________________________________________________________^ [INFO] [stdout] 29 | | let params = [("instrument_name", get_pair(pair_code, "_"))]; [INFO] [stdout] 30 | | let url = reqwest::Url::parse_with_params( [INFO] [stdout] 31 | | "https://api.crypto.com/v2/public/get-ticker", [INFO] [stdout] ... | [INFO] [stdout] 43 | | }]) [INFO] [stdout] 44 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] note: ...which requires unsafety-checking `client::cryptocom::::get_price::{closure#0}`... [INFO] [stdout] --> src/client/cryptocom.rs:28:80 [INFO] [stdout] | [INFO] [stdout] 28 | async fn get_price(&self, pair_code: &str) -> Result> { [INFO] [stdout] | ________________________________________________________________________________^ [INFO] [stdout] 29 | | let params = [("instrument_name", get_pair(pair_code, "_"))]; [INFO] [stdout] 30 | | let url = reqwest::Url::parse_with_params( [INFO] [stdout] 31 | | "https://api.crypto.com/v2/public/get-ticker", [INFO] [stdout] ... | [INFO] [stdout] 43 | | }]) [INFO] [stdout] 44 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] note: ...which requires building MIR for `client::cryptocom::::get_price::{closure#0}`... [INFO] [stdout] --> src/client/cryptocom.rs:28:80 [INFO] [stdout] | [INFO] [stdout] 28 | async fn get_price(&self, pair_code: &str) -> Result> { [INFO] [stdout] | ________________________________________________________________________________^ [INFO] [stdout] 29 | | let params = [("instrument_name", get_pair(pair_code, "_"))]; [INFO] [stdout] 30 | | let url = reqwest::Url::parse_with_params( [INFO] [stdout] 31 | | "https://api.crypto.com/v2/public/get-ticker", [INFO] [stdout] ... | [INFO] [stdout] 43 | | }]) [INFO] [stdout] 44 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] note: ...which requires type-checking `client::cryptocom::::get_price::{closure#0}`... [INFO] [stdout] --> src/client/cryptocom.rs:28:80 [INFO] [stdout] | [INFO] [stdout] 28 | async fn get_price(&self, pair_code: &str) -> Result> { [INFO] [stdout] | ________________________________________________________________________________^ [INFO] [stdout] 29 | | let params = [("instrument_name", get_pair(pair_code, "_"))]; [INFO] [stdout] 30 | | let url = reqwest::Url::parse_with_params( [INFO] [stdout] 31 | | "https://api.crypto.com/v2/public/get-ticker", [INFO] [stdout] ... | [INFO] [stdout] 43 | | }]) [INFO] [stdout] 44 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] = note: ...which again requires type-checking `client::cryptocom::::get_price`, completing the cycle [INFO] [stdout] = note: cycle used when type-checking all item bodies [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0391]: cycle detected when type-checking `client::cryptomkt::::get_price` [INFO] [stdout] --> src/client/cryptomkt.rs:20:5 [INFO] [stdout] | [INFO] [stdout] 20 | async fn get_price(&self, pair_code: &str) -> Result> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] note: ...which requires generator glue MIR for `client::cryptomkt::::get_price::{closure#0}`... [INFO] [stdout] --> src/client/cryptomkt.rs:20:80 [INFO] [stdout] | [INFO] [stdout] 20 | async fn get_price(&self, pair_code: &str) -> Result> { [INFO] [stdout] | ________________________________________________________________________________^ [INFO] [stdout] 21 | | let pair = get_pair(pair_code, ""); [INFO] [stdout] 22 | | let url = format!( [INFO] [stdout] 23 | | "https://api.exchange.cryptomkt.com/api/3/public/ticker?symbols[]={}", [INFO] [stdout] ... | [INFO] [stdout] 39 | | }]) [INFO] [stdout] 40 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] note: ...which requires elaborating drops for `client::cryptomkt::::get_price::{closure#0}`... [INFO] [stdout] --> src/client/cryptomkt.rs:20:80 [INFO] [stdout] | [INFO] [stdout] 20 | async fn get_price(&self, pair_code: &str) -> Result> { [INFO] [stdout] | ________________________________________________________________________________^ [INFO] [stdout] 21 | | let pair = get_pair(pair_code, ""); [INFO] [stdout] 22 | | let url = format!( [INFO] [stdout] 23 | | "https://api.exchange.cryptomkt.com/api/3/public/ticker?symbols[]={}", [INFO] [stdout] ... | [INFO] [stdout] 39 | | }]) [INFO] [stdout] 40 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] note: ...which requires borrow-checking `client::cryptomkt::::get_price::{closure#0}`... [INFO] [stdout] --> src/client/cryptomkt.rs:20:80 [INFO] [stdout] | [INFO] [stdout] 20 | async fn get_price(&self, pair_code: &str) -> Result> { [INFO] [stdout] | ________________________________________________________________________________^ [INFO] [stdout] 21 | | let pair = get_pair(pair_code, ""); [INFO] [stdout] 22 | | let url = format!( [INFO] [stdout] 23 | | "https://api.exchange.cryptomkt.com/api/3/public/ticker?symbols[]={}", [INFO] [stdout] ... | [INFO] [stdout] 39 | | }]) [INFO] [stdout] 40 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] note: ...which requires processing `client::cryptomkt::::get_price::{closure#0}`... [INFO] [stdout] --> src/client/cryptomkt.rs:20:80 [INFO] [stdout] | [INFO] [stdout] 20 | async fn get_price(&self, pair_code: &str) -> Result> { [INFO] [stdout] | ________________________________________________________________________________^ [INFO] [stdout] 21 | | let pair = get_pair(pair_code, ""); [INFO] [stdout] 22 | | let url = format!( [INFO] [stdout] 23 | | "https://api.exchange.cryptomkt.com/api/3/public/ticker?symbols[]={}", [INFO] [stdout] ... | [INFO] [stdout] 39 | | }]) [INFO] [stdout] 40 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] note: ...which requires processing MIR for `client::cryptomkt::::get_price::{closure#0}`... [INFO] [stdout] --> src/client/cryptomkt.rs:20:80 [INFO] [stdout] | [INFO] [stdout] 20 | async fn get_price(&self, pair_code: &str) -> Result> { [INFO] [stdout] | ________________________________________________________________________________^ [INFO] [stdout] 21 | | let pair = get_pair(pair_code, ""); [INFO] [stdout] 22 | | let url = format!( [INFO] [stdout] 23 | | "https://api.exchange.cryptomkt.com/api/3/public/ticker?symbols[]={}", [INFO] [stdout] ... | [INFO] [stdout] 39 | | }]) [INFO] [stdout] 40 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] note: ...which requires unsafety-checking `client::cryptomkt::::get_price::{closure#0}`... [INFO] [stdout] --> src/client/cryptomkt.rs:20:80 [INFO] [stdout] | [INFO] [stdout] 20 | async fn get_price(&self, pair_code: &str) -> Result> { [INFO] [stdout] | ________________________________________________________________________________^ [INFO] [stdout] 21 | | let pair = get_pair(pair_code, ""); [INFO] [stdout] 22 | | let url = format!( [INFO] [stdout] 23 | | "https://api.exchange.cryptomkt.com/api/3/public/ticker?symbols[]={}", [INFO] [stdout] ... | [INFO] [stdout] 39 | | }]) [INFO] [stdout] 40 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] note: ...which requires building MIR for `client::cryptomkt::::get_price::{closure#0}`... [INFO] [stdout] --> src/client/cryptomkt.rs:20:80 [INFO] [stdout] | [INFO] [stdout] 20 | async fn get_price(&self, pair_code: &str) -> Result> { [INFO] [stdout] | ________________________________________________________________________________^ [INFO] [stdout] 21 | | let pair = get_pair(pair_code, ""); [INFO] [stdout] 22 | | let url = format!( [INFO] [stdout] 23 | | "https://api.exchange.cryptomkt.com/api/3/public/ticker?symbols[]={}", [INFO] [stdout] ... | [INFO] [stdout] 39 | | }]) [INFO] [stdout] 40 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] note: ...which requires type-checking `client::cryptomkt::::get_price::{closure#0}`... [INFO] [stdout] --> src/client/cryptomkt.rs:20:80 [INFO] [stdout] | [INFO] [stdout] 20 | async fn get_price(&self, pair_code: &str) -> Result> { [INFO] [stdout] | ________________________________________________________________________________^ [INFO] [stdout] 21 | | let pair = get_pair(pair_code, ""); [INFO] [stdout] 22 | | let url = format!( [INFO] [stdout] 23 | | "https://api.exchange.cryptomkt.com/api/3/public/ticker?symbols[]={}", [INFO] [stdout] ... | [INFO] [stdout] 39 | | }]) [INFO] [stdout] 40 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] = note: ...which again requires type-checking `client::cryptomkt::::get_price`, completing the cycle [INFO] [stdout] = note: cycle used when type-checking all item bodies [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0391]: cycle detected when type-checking `client::ftx::::get_price` [INFO] [stdout] --> src/client/ftx.rs:21:5 [INFO] [stdout] | [INFO] [stdout] 21 | async fn get_price(&self, pair_code: &str) -> Result> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] note: ...which requires generator glue MIR for `client::ftx::::get_price::{closure#0}`... [INFO] [stdout] --> src/client/ftx.rs:21:80 [INFO] [stdout] | [INFO] [stdout] 21 | async fn get_price(&self, pair_code: &str) -> Result> { [INFO] [stdout] | ________________________________________________________________________________^ [INFO] [stdout] 22 | | let url = format!("https://ftx.com/api/markets/{}", pair_code); [INFO] [stdout] 23 | | [INFO] [stdout] 24 | | let response = reqwest::get(url).await?.json::().await; [INFO] [stdout] ... | [INFO] [stdout] 30 | | }]) [INFO] [stdout] 31 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] note: ...which requires elaborating drops for `client::ftx::::get_price::{closure#0}`... [INFO] [stdout] --> src/client/ftx.rs:21:80 [INFO] [stdout] | [INFO] [stdout] 21 | async fn get_price(&self, pair_code: &str) -> Result> { [INFO] [stdout] | ________________________________________________________________________________^ [INFO] [stdout] 22 | | let url = format!("https://ftx.com/api/markets/{}", pair_code); [INFO] [stdout] 23 | | [INFO] [stdout] 24 | | let response = reqwest::get(url).await?.json::().await; [INFO] [stdout] ... | [INFO] [stdout] 30 | | }]) [INFO] [stdout] 31 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] note: ...which requires borrow-checking `client::ftx::::get_price::{closure#0}`... [INFO] [stdout] --> src/client/ftx.rs:21:80 [INFO] [stdout] | [INFO] [stdout] 21 | async fn get_price(&self, pair_code: &str) -> Result> { [INFO] [stdout] | ________________________________________________________________________________^ [INFO] [stdout] 22 | | let url = format!("https://ftx.com/api/markets/{}", pair_code); [INFO] [stdout] 23 | | [INFO] [stdout] 24 | | let response = reqwest::get(url).await?.json::().await; [INFO] [stdout] ... | [INFO] [stdout] 30 | | }]) [INFO] [stdout] 31 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] note: ...which requires processing `client::ftx::::get_price::{closure#0}`... [INFO] [stdout] --> src/client/ftx.rs:21:80 [INFO] [stdout] | [INFO] [stdout] 21 | async fn get_price(&self, pair_code: &str) -> Result> { [INFO] [stdout] | ________________________________________________________________________________^ [INFO] [stdout] 22 | | let url = format!("https://ftx.com/api/markets/{}", pair_code); [INFO] [stdout] 23 | | [INFO] [stdout] 24 | | let response = reqwest::get(url).await?.json::().await; [INFO] [stdout] ... | [INFO] [stdout] 30 | | }]) [INFO] [stdout] 31 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] note: ...which requires processing MIR for `client::ftx::::get_price::{closure#0}`... [INFO] [stdout] --> src/client/ftx.rs:21:80 [INFO] [stdout] | [INFO] [stdout] 21 | async fn get_price(&self, pair_code: &str) -> Result> { [INFO] [stdout] | ________________________________________________________________________________^ [INFO] [stdout] 22 | | let url = format!("https://ftx.com/api/markets/{}", pair_code); [INFO] [stdout] 23 | | [INFO] [stdout] 24 | | let response = reqwest::get(url).await?.json::().await; [INFO] [stdout] ... | [INFO] [stdout] 30 | | }]) [INFO] [stdout] 31 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] note: ...which requires unsafety-checking `client::ftx::::get_price::{closure#0}`... [INFO] [stdout] --> src/client/ftx.rs:21:80 [INFO] [stdout] | [INFO] [stdout] 21 | async fn get_price(&self, pair_code: &str) -> Result> { [INFO] [stdout] | ________________________________________________________________________________^ [INFO] [stdout] 22 | | let url = format!("https://ftx.com/api/markets/{}", pair_code); [INFO] [stdout] 23 | | [INFO] [stdout] 24 | | let response = reqwest::get(url).await?.json::().await; [INFO] [stdout] ... | [INFO] [stdout] 30 | | }]) [INFO] [stdout] 31 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] note: ...which requires building MIR for `client::ftx::::get_price::{closure#0}`... [INFO] [stdout] --> src/client/ftx.rs:21:80 [INFO] [stdout] | [INFO] [stdout] 21 | async fn get_price(&self, pair_code: &str) -> Result> { [INFO] [stdout] | ________________________________________________________________________________^ [INFO] [stdout] 22 | | let url = format!("https://ftx.com/api/markets/{}", pair_code); [INFO] [stdout] 23 | | [INFO] [stdout] 24 | | let response = reqwest::get(url).await?.json::().await; [INFO] [stdout] ... | [INFO] [stdout] 30 | | }]) [INFO] [stdout] 31 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] note: ...which requires type-checking `client::ftx::::get_price::{closure#0}`... [INFO] [stdout] --> src/client/ftx.rs:21:80 [INFO] [stdout] | [INFO] [stdout] 21 | async fn get_price(&self, pair_code: &str) -> Result> { [INFO] [stdout] | ________________________________________________________________________________^ [INFO] [stdout] 22 | | let url = format!("https://ftx.com/api/markets/{}", pair_code); [INFO] [stdout] 23 | | [INFO] [stdout] 24 | | let response = reqwest::get(url).await?.json::().await; [INFO] [stdout] ... | [INFO] [stdout] 30 | | }]) [INFO] [stdout] 31 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] = note: ...which again requires type-checking `client::ftx::::get_price`, completing the cycle [INFO] [stdout] = note: cycle used when type-checking all item bodies [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0391]: cycle detected when type-checking `client::gateio::::get_price` [INFO] [stdout] --> src/client/gateio.rs:18:5 [INFO] [stdout] | [INFO] [stdout] 18 | async fn get_price(&self, pair_code: &str) -> Result> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] note: ...which requires generator glue MIR for `client::gateio::::get_price::{closure#0}`... [INFO] [stdout] --> src/client/gateio.rs:18:80 [INFO] [stdout] | [INFO] [stdout] 18 | async fn get_price(&self, pair_code: &str) -> Result> { [INFO] [stdout] | ________________________________________________________________________________^ [INFO] [stdout] 19 | | let params = [("currency_pair", get_pair(pair_code, "_"))]; [INFO] [stdout] 20 | | let url = [INFO] [stdout] 21 | | reqwest::Url::parse_with_params("https://api.gateio.ws/api/v4/spot/tickers", ¶ms)?; [INFO] [stdout] ... | [INFO] [stdout] 31 | | }]) [INFO] [stdout] 32 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] note: ...which requires elaborating drops for `client::gateio::::get_price::{closure#0}`... [INFO] [stdout] --> src/client/gateio.rs:18:80 [INFO] [stdout] | [INFO] [stdout] 18 | async fn get_price(&self, pair_code: &str) -> Result> { [INFO] [stdout] | ________________________________________________________________________________^ [INFO] [stdout] 19 | | let params = [("currency_pair", get_pair(pair_code, "_"))]; [INFO] [stdout] 20 | | let url = [INFO] [stdout] 21 | | reqwest::Url::parse_with_params("https://api.gateio.ws/api/v4/spot/tickers", ¶ms)?; [INFO] [stdout] ... | [INFO] [stdout] 31 | | }]) [INFO] [stdout] 32 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] note: ...which requires borrow-checking `client::gateio::::get_price::{closure#0}`... [INFO] [stdout] --> src/client/gateio.rs:18:80 [INFO] [stdout] | [INFO] [stdout] 18 | async fn get_price(&self, pair_code: &str) -> Result> { [INFO] [stdout] | ________________________________________________________________________________^ [INFO] [stdout] 19 | | let params = [("currency_pair", get_pair(pair_code, "_"))]; [INFO] [stdout] 20 | | let url = [INFO] [stdout] 21 | | reqwest::Url::parse_with_params("https://api.gateio.ws/api/v4/spot/tickers", ¶ms)?; [INFO] [stdout] ... | [INFO] [stdout] 31 | | }]) [INFO] [stdout] 32 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] note: ...which requires processing `client::gateio::::get_price::{closure#0}`... [INFO] [stdout] --> src/client/gateio.rs:18:80 [INFO] [stdout] | [INFO] [stdout] 18 | async fn get_price(&self, pair_code: &str) -> Result> { [INFO] [stdout] | ________________________________________________________________________________^ [INFO] [stdout] 19 | | let params = [("currency_pair", get_pair(pair_code, "_"))]; [INFO] [stdout] 20 | | let url = [INFO] [stdout] 21 | | reqwest::Url::parse_with_params("https://api.gateio.ws/api/v4/spot/tickers", ¶ms)?; [INFO] [stdout] ... | [INFO] [stdout] 31 | | }]) [INFO] [stdout] 32 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] note: ...which requires processing MIR for `client::gateio::::get_price::{closure#0}`... [INFO] [stdout] --> src/client/gateio.rs:18:80 [INFO] [stdout] | [INFO] [stdout] 18 | async fn get_price(&self, pair_code: &str) -> Result> { [INFO] [stdout] | ________________________________________________________________________________^ [INFO] [stdout] 19 | | let params = [("currency_pair", get_pair(pair_code, "_"))]; [INFO] [stdout] 20 | | let url = [INFO] [stdout] 21 | | reqwest::Url::parse_with_params("https://api.gateio.ws/api/v4/spot/tickers", ¶ms)?; [INFO] [stdout] ... | [INFO] [stdout] 31 | | }]) [INFO] [stdout] 32 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] note: ...which requires unsafety-checking `client::gateio::::get_price::{closure#0}`... [INFO] [stdout] --> src/client/gateio.rs:18:80 [INFO] [stdout] | [INFO] [stdout] 18 | async fn get_price(&self, pair_code: &str) -> Result> { [INFO] [stdout] | ________________________________________________________________________________^ [INFO] [stdout] 19 | | let params = [("currency_pair", get_pair(pair_code, "_"))]; [INFO] [stdout] 20 | | let url = [INFO] [stdout] 21 | | reqwest::Url::parse_with_params("https://api.gateio.ws/api/v4/spot/tickers", ¶ms)?; [INFO] [stdout] ... | [INFO] [stdout] 31 | | }]) [INFO] [stdout] 32 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] note: ...which requires building MIR for `client::gateio::::get_price::{closure#0}`... [INFO] [stdout] --> src/client/gateio.rs:18:80 [INFO] [stdout] | [INFO] [stdout] 18 | async fn get_price(&self, pair_code: &str) -> Result> { [INFO] [stdout] | ________________________________________________________________________________^ [INFO] [stdout] 19 | | let params = [("currency_pair", get_pair(pair_code, "_"))]; [INFO] [stdout] 20 | | let url = [INFO] [stdout] 21 | | reqwest::Url::parse_with_params("https://api.gateio.ws/api/v4/spot/tickers", ¶ms)?; [INFO] [stdout] ... | [INFO] [stdout] 31 | | }]) [INFO] [stdout] 32 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] note: ...which requires type-checking `client::gateio::::get_price::{closure#0}`... [INFO] [stdout] --> src/client/gateio.rs:18:80 [INFO] [stdout] | [INFO] [stdout] 18 | async fn get_price(&self, pair_code: &str) -> Result> { [INFO] [stdout] | ________________________________________________________________________________^ [INFO] [stdout] 19 | | let params = [("currency_pair", get_pair(pair_code, "_"))]; [INFO] [stdout] 20 | | let url = [INFO] [stdout] 21 | | reqwest::Url::parse_with_params("https://api.gateio.ws/api/v4/spot/tickers", ¶ms)?; [INFO] [stdout] ... | [INFO] [stdout] 31 | | }]) [INFO] [stdout] 32 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] = note: ...which again requires type-checking `client::gateio::::get_price`, completing the cycle [INFO] [stdout] = note: cycle used when type-checking all item bodies [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0391]: cycle detected when type-checking `client::huobi::::get_price` [INFO] [stdout] --> src/client/huobi.rs:23:5 [INFO] [stdout] | [INFO] [stdout] 23 | async fn get_price(&self, pair_code: &str) -> Result> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] note: ...which requires generator glue MIR for `client::huobi::::get_price::{closure#0}`... [INFO] [stdout] --> src/client/huobi.rs:23:80 [INFO] [stdout] | [INFO] [stdout] 23 | async fn get_price(&self, pair_code: &str) -> Result> { [INFO] [stdout] | ________________________________________________________________________________^ [INFO] [stdout] 24 | | let params = [("symbol", get_pair(pair_code, "").to_lowercase())]; [INFO] [stdout] 25 | | let url = [INFO] [stdout] 26 | | reqwest::Url::parse_with_params("https://api.huobi.pro/market/detail/merged", ¶ms)?; [INFO] [stdout] ... | [INFO] [stdout] 34 | | }]) [INFO] [stdout] 35 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] note: ...which requires elaborating drops for `client::huobi::::get_price::{closure#0}`... [INFO] [stdout] --> src/client/huobi.rs:23:80 [INFO] [stdout] | [INFO] [stdout] 23 | async fn get_price(&self, pair_code: &str) -> Result> { [INFO] [stdout] | ________________________________________________________________________________^ [INFO] [stdout] 24 | | let params = [("symbol", get_pair(pair_code, "").to_lowercase())]; [INFO] [stdout] 25 | | let url = [INFO] [stdout] 26 | | reqwest::Url::parse_with_params("https://api.huobi.pro/market/detail/merged", ¶ms)?; [INFO] [stdout] ... | [INFO] [stdout] 34 | | }]) [INFO] [stdout] 35 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] note: ...which requires borrow-checking `client::huobi::::get_price::{closure#0}`... [INFO] [stdout] --> src/client/huobi.rs:23:80 [INFO] [stdout] | [INFO] [stdout] 23 | async fn get_price(&self, pair_code: &str) -> Result> { [INFO] [stdout] | ________________________________________________________________________________^ [INFO] [stdout] 24 | | let params = [("symbol", get_pair(pair_code, "").to_lowercase())]; [INFO] [stdout] 25 | | let url = [INFO] [stdout] 26 | | reqwest::Url::parse_with_params("https://api.huobi.pro/market/detail/merged", ¶ms)?; [INFO] [stdout] ... | [INFO] [stdout] 34 | | }]) [INFO] [stdout] 35 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] note: ...which requires processing `client::huobi::::get_price::{closure#0}`... [INFO] [stdout] --> src/client/huobi.rs:23:80 [INFO] [stdout] | [INFO] [stdout] 23 | async fn get_price(&self, pair_code: &str) -> Result> { [INFO] [stdout] | ________________________________________________________________________________^ [INFO] [stdout] 24 | | let params = [("symbol", get_pair(pair_code, "").to_lowercase())]; [INFO] [stdout] 25 | | let url = [INFO] [stdout] 26 | | reqwest::Url::parse_with_params("https://api.huobi.pro/market/detail/merged", ¶ms)?; [INFO] [stdout] ... | [INFO] [stdout] 34 | | }]) [INFO] [stdout] 35 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] note: ...which requires processing MIR for `client::huobi::::get_price::{closure#0}`... [INFO] [stdout] --> src/client/huobi.rs:23:80 [INFO] [stdout] | [INFO] [stdout] 23 | async fn get_price(&self, pair_code: &str) -> Result> { [INFO] [stdout] | ________________________________________________________________________________^ [INFO] [stdout] 24 | | let params = [("symbol", get_pair(pair_code, "").to_lowercase())]; [INFO] [stdout] 25 | | let url = [INFO] [stdout] 26 | | reqwest::Url::parse_with_params("https://api.huobi.pro/market/detail/merged", ¶ms)?; [INFO] [stdout] ... | [INFO] [stdout] 34 | | }]) [INFO] [stdout] 35 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] note: ...which requires unsafety-checking `client::huobi::::get_price::{closure#0}`... [INFO] [stdout] --> src/client/huobi.rs:23:80 [INFO] [stdout] | [INFO] [stdout] 23 | async fn get_price(&self, pair_code: &str) -> Result> { [INFO] [stdout] | ________________________________________________________________________________^ [INFO] [stdout] 24 | | let params = [("symbol", get_pair(pair_code, "").to_lowercase())]; [INFO] [stdout] 25 | | let url = [INFO] [stdout] 26 | | reqwest::Url::parse_with_params("https://api.huobi.pro/market/detail/merged", ¶ms)?; [INFO] [stdout] ... | [INFO] [stdout] 34 | | }]) [INFO] [stdout] 35 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] note: ...which requires building MIR for `client::huobi::::get_price::{closure#0}`... [INFO] [stdout] --> src/client/huobi.rs:23:80 [INFO] [stdout] | [INFO] [stdout] 23 | async fn get_price(&self, pair_code: &str) -> Result> { [INFO] [stdout] | ________________________________________________________________________________^ [INFO] [stdout] 24 | | let params = [("symbol", get_pair(pair_code, "").to_lowercase())]; [INFO] [stdout] 25 | | let url = [INFO] [stdout] 26 | | reqwest::Url::parse_with_params("https://api.huobi.pro/market/detail/merged", ¶ms)?; [INFO] [stdout] ... | [INFO] [stdout] 34 | | }]) [INFO] [stdout] 35 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] note: ...which requires type-checking `client::huobi::::get_price::{closure#0}`... [INFO] [stdout] --> src/client/huobi.rs:23:80 [INFO] [stdout] | [INFO] [stdout] 23 | async fn get_price(&self, pair_code: &str) -> Result> { [INFO] [stdout] | ________________________________________________________________________________^ [INFO] [stdout] 24 | | let params = [("symbol", get_pair(pair_code, "").to_lowercase())]; [INFO] [stdout] 25 | | let url = [INFO] [stdout] 26 | | reqwest::Url::parse_with_params("https://api.huobi.pro/market/detail/merged", ¶ms)?; [INFO] [stdout] ... | [INFO] [stdout] 34 | | }]) [INFO] [stdout] 35 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] = note: ...which again requires type-checking `client::huobi::::get_price`, completing the cycle [INFO] [stdout] = note: cycle used when type-checking all item bodies [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0391]: cycle detected when type-checking `client::kucoin::::get_price` [INFO] [stdout] --> src/client/kucoin.rs:23:5 [INFO] [stdout] | [INFO] [stdout] 23 | async fn get_price(&self, pair_code: &str) -> Result> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] note: ...which requires generator glue MIR for `client::kucoin::::get_price::{closure#0}`... [INFO] [stdout] --> src/client/kucoin.rs:23:80 [INFO] [stdout] | [INFO] [stdout] 23 | async fn get_price(&self, pair_code: &str) -> Result> { [INFO] [stdout] | ________________________________________________________________________________^ [INFO] [stdout] 24 | | let params = [("symbol", get_pair(pair_code, "-"))]; [INFO] [stdout] 25 | | let url = reqwest::Url::parse_with_params( [INFO] [stdout] 26 | | "https://api.kucoin.com/api/v1/market/orderbook/level1", [INFO] [stdout] ... | [INFO] [stdout] 36 | | }]) [INFO] [stdout] 37 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] note: ...which requires elaborating drops for `client::kucoin::::get_price::{closure#0}`... [INFO] [stdout] --> src/client/kucoin.rs:23:80 [INFO] [stdout] | [INFO] [stdout] 23 | async fn get_price(&self, pair_code: &str) -> Result> { [INFO] [stdout] | ________________________________________________________________________________^ [INFO] [stdout] 24 | | let params = [("symbol", get_pair(pair_code, "-"))]; [INFO] [stdout] 25 | | let url = reqwest::Url::parse_with_params( [INFO] [stdout] 26 | | "https://api.kucoin.com/api/v1/market/orderbook/level1", [INFO] [stdout] ... | [INFO] [stdout] 36 | | }]) [INFO] [stdout] 37 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] note: ...which requires borrow-checking `client::kucoin::::get_price::{closure#0}`... [INFO] [stdout] --> src/client/kucoin.rs:23:80 [INFO] [stdout] | [INFO] [stdout] 23 | async fn get_price(&self, pair_code: &str) -> Result> { [INFO] [stdout] | ________________________________________________________________________________^ [INFO] [stdout] 24 | | let params = [("symbol", get_pair(pair_code, "-"))]; [INFO] [stdout] 25 | | let url = reqwest::Url::parse_with_params( [INFO] [stdout] 26 | | "https://api.kucoin.com/api/v1/market/orderbook/level1", [INFO] [stdout] ... | [INFO] [stdout] 36 | | }]) [INFO] [stdout] 37 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] note: ...which requires processing `client::kucoin::::get_price::{closure#0}`... [INFO] [stdout] --> src/client/kucoin.rs:23:80 [INFO] [stdout] | [INFO] [stdout] 23 | async fn get_price(&self, pair_code: &str) -> Result> { [INFO] [stdout] | ________________________________________________________________________________^ [INFO] [stdout] 24 | | let params = [("symbol", get_pair(pair_code, "-"))]; [INFO] [stdout] 25 | | let url = reqwest::Url::parse_with_params( [INFO] [stdout] 26 | | "https://api.kucoin.com/api/v1/market/orderbook/level1", [INFO] [stdout] ... | [INFO] [stdout] 36 | | }]) [INFO] [stdout] 37 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] note: ...which requires processing MIR for `client::kucoin::::get_price::{closure#0}`... [INFO] [stdout] --> src/client/kucoin.rs:23:80 [INFO] [stdout] | [INFO] [stdout] 23 | async fn get_price(&self, pair_code: &str) -> Result> { [INFO] [stdout] | ________________________________________________________________________________^ [INFO] [stdout] 24 | | let params = [("symbol", get_pair(pair_code, "-"))]; [INFO] [stdout] 25 | | let url = reqwest::Url::parse_with_params( [INFO] [stdout] 26 | | "https://api.kucoin.com/api/v1/market/orderbook/level1", [INFO] [stdout] ... | [INFO] [stdout] 36 | | }]) [INFO] [stdout] 37 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] note: ...which requires unsafety-checking `client::kucoin::::get_price::{closure#0}`... [INFO] [stdout] --> src/client/kucoin.rs:23:80 [INFO] [stdout] | [INFO] [stdout] 23 | async fn get_price(&self, pair_code: &str) -> Result> { [INFO] [stdout] | ________________________________________________________________________________^ [INFO] [stdout] 24 | | let params = [("symbol", get_pair(pair_code, "-"))]; [INFO] [stdout] 25 | | let url = reqwest::Url::parse_with_params( [INFO] [stdout] 26 | | "https://api.kucoin.com/api/v1/market/orderbook/level1", [INFO] [stdout] ... | [INFO] [stdout] 36 | | }]) [INFO] [stdout] 37 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] note: ...which requires building MIR for `client::kucoin::::get_price::{closure#0}`... [INFO] [stdout] --> src/client/kucoin.rs:23:80 [INFO] [stdout] | [INFO] [stdout] 23 | async fn get_price(&self, pair_code: &str) -> Result> { [INFO] [stdout] | ________________________________________________________________________________^ [INFO] [stdout] 24 | | let params = [("symbol", get_pair(pair_code, "-"))]; [INFO] [stdout] 25 | | let url = reqwest::Url::parse_with_params( [INFO] [stdout] 26 | | "https://api.kucoin.com/api/v1/market/orderbook/level1", [INFO] [stdout] ... | [INFO] [stdout] 36 | | }]) [INFO] [stdout] 37 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] note: ...which requires type-checking `client::kucoin::::get_price::{closure#0}`... [INFO] [stdout] --> src/client/kucoin.rs:23:80 [INFO] [stdout] | [INFO] [stdout] 23 | async fn get_price(&self, pair_code: &str) -> Result> { [INFO] [stdout] | ________________________________________________________________________________^ [INFO] [stdout] 24 | | let params = [("symbol", get_pair(pair_code, "-"))]; [INFO] [stdout] 25 | | let url = reqwest::Url::parse_with_params( [INFO] [stdout] 26 | | "https://api.kucoin.com/api/v1/market/orderbook/level1", [INFO] [stdout] ... | [INFO] [stdout] 36 | | }]) [INFO] [stdout] 37 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] = note: ...which again requires type-checking `client::kucoin::::get_price`, completing the cycle [INFO] [stdout] = note: cycle used when type-checking all item bodies [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0391]: cycle detected when type-checking `client::okx::::get_price` [INFO] [stdout] --> src/client/okx.rs:23:5 [INFO] [stdout] | [INFO] [stdout] 23 | async fn get_price(&self, pair_code: &str) -> Result> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] note: ...which requires generator glue MIR for `client::okx::::get_price::{closure#0}`... [INFO] [stdout] --> src/client/okx.rs:23:80 [INFO] [stdout] | [INFO] [stdout] 23 | async fn get_price(&self, pair_code: &str) -> Result> { [INFO] [stdout] | ________________________________________________________________________________^ [INFO] [stdout] 24 | | let params = [("instId", get_pair(pair_code, "-"))]; [INFO] [stdout] 25 | | let url = [INFO] [stdout] 26 | | reqwest::Url::parse_with_params("https://www.okx.com/api/v5/market/ticker", ¶ms)?; [INFO] [stdout] ... | [INFO] [stdout] 34 | | }]) [INFO] [stdout] 35 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] note: ...which requires elaborating drops for `client::okx::::get_price::{closure#0}`... [INFO] [stdout] --> src/client/okx.rs:23:80 [INFO] [stdout] | [INFO] [stdout] 23 | async fn get_price(&self, pair_code: &str) -> Result> { [INFO] [stdout] | ________________________________________________________________________________^ [INFO] [stdout] 24 | | let params = [("instId", get_pair(pair_code, "-"))]; [INFO] [stdout] 25 | | let url = [INFO] [stdout] 26 | | reqwest::Url::parse_with_params("https://www.okx.com/api/v5/market/ticker", ¶ms)?; [INFO] [stdout] ... | [INFO] [stdout] 34 | | }]) [INFO] [stdout] 35 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] note: ...which requires borrow-checking `client::okx::::get_price::{closure#0}`... [INFO] [stdout] --> src/client/okx.rs:23:80 [INFO] [stdout] | [INFO] [stdout] 23 | async fn get_price(&self, pair_code: &str) -> Result> { [INFO] [stdout] | ________________________________________________________________________________^ [INFO] [stdout] 24 | | let params = [("instId", get_pair(pair_code, "-"))]; [INFO] [stdout] 25 | | let url = [INFO] [stdout] 26 | | reqwest::Url::parse_with_params("https://www.okx.com/api/v5/market/ticker", ¶ms)?; [INFO] [stdout] ... | [INFO] [stdout] 34 | | }]) [INFO] [stdout] 35 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] note: ...which requires processing `client::okx::::get_price::{closure#0}`... [INFO] [stdout] --> src/client/okx.rs:23:80 [INFO] [stdout] | [INFO] [stdout] 23 | async fn get_price(&self, pair_code: &str) -> Result> { [INFO] [stdout] | ________________________________________________________________________________^ [INFO] [stdout] 24 | | let params = [("instId", get_pair(pair_code, "-"))]; [INFO] [stdout] 25 | | let url = [INFO] [stdout] 26 | | reqwest::Url::parse_with_params("https://www.okx.com/api/v5/market/ticker", ¶ms)?; [INFO] [stdout] ... | [INFO] [stdout] 34 | | }]) [INFO] [stdout] 35 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] note: ...which requires processing MIR for `client::okx::::get_price::{closure#0}`... [INFO] [stdout] --> src/client/okx.rs:23:80 [INFO] [stdout] | [INFO] [stdout] 23 | async fn get_price(&self, pair_code: &str) -> Result> { [INFO] [stdout] | ________________________________________________________________________________^ [INFO] [stdout] 24 | | let params = [("instId", get_pair(pair_code, "-"))]; [INFO] [stdout] 25 | | let url = [INFO] [stdout] 26 | | reqwest::Url::parse_with_params("https://www.okx.com/api/v5/market/ticker", ¶ms)?; [INFO] [stdout] ... | [INFO] [stdout] 34 | | }]) [INFO] [stdout] 35 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] note: ...which requires unsafety-checking `client::okx::::get_price::{closure#0}`... [INFO] [stdout] --> src/client/okx.rs:23:80 [INFO] [stdout] | [INFO] [stdout] 23 | async fn get_price(&self, pair_code: &str) -> Result> { [INFO] [stdout] | ________________________________________________________________________________^ [INFO] [stdout] 24 | | let params = [("instId", get_pair(pair_code, "-"))]; [INFO] [stdout] 25 | | let url = [INFO] [stdout] 26 | | reqwest::Url::parse_with_params("https://www.okx.com/api/v5/market/ticker", ¶ms)?; [INFO] [stdout] ... | [INFO] [stdout] 34 | | }]) [INFO] [stdout] 35 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] note: ...which requires building MIR for `client::okx::::get_price::{closure#0}`... [INFO] [stdout] --> src/client/okx.rs:23:80 [INFO] [stdout] | [INFO] [stdout] 23 | async fn get_price(&self, pair_code: &str) -> Result> { [INFO] [stdout] | ________________________________________________________________________________^ [INFO] [stdout] 24 | | let params = [("instId", get_pair(pair_code, "-"))]; [INFO] [stdout] 25 | | let url = [INFO] [stdout] 26 | | reqwest::Url::parse_with_params("https://www.okx.com/api/v5/market/ticker", ¶ms)?; [INFO] [stdout] ... | [INFO] [stdout] 34 | | }]) [INFO] [stdout] 35 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] note: ...which requires type-checking `client::okx::::get_price::{closure#0}`... [INFO] [stdout] --> src/client/okx.rs:23:80 [INFO] [stdout] | [INFO] [stdout] 23 | async fn get_price(&self, pair_code: &str) -> Result> { [INFO] [stdout] | ________________________________________________________________________________^ [INFO] [stdout] 24 | | let params = [("instId", get_pair(pair_code, "-"))]; [INFO] [stdout] 25 | | let url = [INFO] [stdout] 26 | | reqwest::Url::parse_with_params("https://www.okx.com/api/v5/market/ticker", ¶ms)?; [INFO] [stdout] ... | [INFO] [stdout] 34 | | }]) [INFO] [stdout] 35 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] = note: ...which again requires type-checking `client::okx::::get_price`, completing the cycle [INFO] [stdout] = note: cycle used when type-checking all item bodies [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0391]: cycle detected when type-checking `client::ripio::::get_price` [INFO] [stdout] --> src/client/ripio.rs:18:5 [INFO] [stdout] | [INFO] [stdout] 18 | async fn get_price(&self, pair_code: &str) -> Result> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] note: ...which requires generator glue MIR for `client::ripio::::get_price::{closure#0}`... [INFO] [stdout] --> src/client/ripio.rs:18:80 [INFO] [stdout] | [INFO] [stdout] 18 | async fn get_price(&self, pair_code: &str) -> Result> { [INFO] [stdout] | ________________________________________________________________________________^ [INFO] [stdout] 19 | | let response = reqwest::get(format!( [INFO] [stdout] 20 | | "https://api.exchange.ripio.com/api/v1/rate/{}", [INFO] [stdout] 21 | | get_pair(pair_code, "_") [INFO] [stdout] ... | [INFO] [stdout] 31 | | }]) [INFO] [stdout] 32 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] note: ...which requires elaborating drops for `client::ripio::::get_price::{closure#0}`... [INFO] [stdout] --> src/client/ripio.rs:18:80 [INFO] [stdout] | [INFO] [stdout] 18 | async fn get_price(&self, pair_code: &str) -> Result> { [INFO] [stdout] | ________________________________________________________________________________^ [INFO] [stdout] 19 | | let response = reqwest::get(format!( [INFO] [stdout] 20 | | "https://api.exchange.ripio.com/api/v1/rate/{}", [INFO] [stdout] 21 | | get_pair(pair_code, "_") [INFO] [stdout] ... | [INFO] [stdout] 31 | | }]) [INFO] [stdout] 32 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] note: ...which requires borrow-checking `client::ripio::::get_price::{closure#0}`... [INFO] [stdout] --> src/client/ripio.rs:18:80 [INFO] [stdout] | [INFO] [stdout] 18 | async fn get_price(&self, pair_code: &str) -> Result> { [INFO] [stdout] | ________________________________________________________________________________^ [INFO] [stdout] 19 | | let response = reqwest::get(format!( [INFO] [stdout] 20 | | "https://api.exchange.ripio.com/api/v1/rate/{}", [INFO] [stdout] 21 | | get_pair(pair_code, "_") [INFO] [stdout] ... | [INFO] [stdout] 31 | | }]) [INFO] [stdout] 32 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] note: ...which requires processing `client::ripio::::get_price::{closure#0}`... [INFO] [stdout] --> src/client/ripio.rs:18:80 [INFO] [stdout] | [INFO] [stdout] 18 | async fn get_price(&self, pair_code: &str) -> Result> { [INFO] [stdout] | ________________________________________________________________________________^ [INFO] [stdout] 19 | | let response = reqwest::get(format!( [INFO] [stdout] 20 | | "https://api.exchange.ripio.com/api/v1/rate/{}", [INFO] [stdout] 21 | | get_pair(pair_code, "_") [INFO] [stdout] ... | [INFO] [stdout] 31 | | }]) [INFO] [stdout] 32 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] note: ...which requires processing MIR for `client::ripio::::get_price::{closure#0}`... [INFO] [stdout] --> src/client/ripio.rs:18:80 [INFO] [stdout] | [INFO] [stdout] 18 | async fn get_price(&self, pair_code: &str) -> Result> { [INFO] [stdout] | ________________________________________________________________________________^ [INFO] [stdout] 19 | | let response = reqwest::get(format!( [INFO] [stdout] 20 | | "https://api.exchange.ripio.com/api/v1/rate/{}", [INFO] [stdout] 21 | | get_pair(pair_code, "_") [INFO] [stdout] ... | [INFO] [stdout] 31 | | }]) [INFO] [stdout] 32 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] note: ...which requires unsafety-checking `client::ripio::::get_price::{closure#0}`... [INFO] [stdout] --> src/client/ripio.rs:18:80 [INFO] [stdout] | [INFO] [stdout] 18 | async fn get_price(&self, pair_code: &str) -> Result> { [INFO] [stdout] | ________________________________________________________________________________^ [INFO] [stdout] 19 | | let response = reqwest::get(format!( [INFO] [stdout] 20 | | "https://api.exchange.ripio.com/api/v1/rate/{}", [INFO] [stdout] 21 | | get_pair(pair_code, "_") [INFO] [stdout] ... | [INFO] [stdout] 31 | | }]) [INFO] [stdout] 32 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] note: ...which requires building MIR for `client::ripio::::get_price::{closure#0}`... [INFO] [stdout] --> src/client/ripio.rs:18:80 [INFO] [stdout] | [INFO] [stdout] 18 | async fn get_price(&self, pair_code: &str) -> Result> { [INFO] [stdout] | ________________________________________________________________________________^ [INFO] [stdout] 19 | | let response = reqwest::get(format!( [INFO] [stdout] 20 | | "https://api.exchange.ripio.com/api/v1/rate/{}", [INFO] [stdout] 21 | | get_pair(pair_code, "_") [INFO] [stdout] ... | [INFO] [stdout] 31 | | }]) [INFO] [stdout] 32 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] note: ...which requires type-checking `client::ripio::::get_price::{closure#0}`... [INFO] [stdout] --> src/client/ripio.rs:18:80 [INFO] [stdout] | [INFO] [stdout] 18 | async fn get_price(&self, pair_code: &str) -> Result> { [INFO] [stdout] | ________________________________________________________________________________^ [INFO] [stdout] 19 | | let response = reqwest::get(format!( [INFO] [stdout] 20 | | "https://api.exchange.ripio.com/api/v1/rate/{}", [INFO] [stdout] 21 | | get_pair(pair_code, "_") [INFO] [stdout] ... | [INFO] [stdout] 31 | | }]) [INFO] [stdout] 32 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] = note: ...which again requires type-checking `client::ripio::::get_price`, completing the cycle [INFO] [stdout] = note: cycle used when type-checking all item bodies [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: aborting due to 13 previous errors [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] For more information about this error, try `rustc --explain E0391`. [INFO] [stdout] [INFO] [stderr] error: could not compile `volva` due to 14 previous errors [INFO] running `Command { std: "docker" "inspect" "9dd340cbda372dcc5505b08f480dd2f563aca203cc046442919a9ad60d6db0a0", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "9dd340cbda372dcc5505b08f480dd2f563aca203cc046442919a9ad60d6db0a0", kill_on_drop: false }` [INFO] [stdout] 9dd340cbda372dcc5505b08f480dd2f563aca203cc046442919a9ad60d6db0a0