[INFO] cloning repository https://github.com/1999321/JupiterPnl [INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/1999321/JupiterPnl" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2F1999321%2FJupiterPnl", kill_on_drop: false }` [INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2F1999321%2FJupiterPnl'... [INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }` [INFO] [stdout] 93781131a7924026c8f09a4bb3984b47dd9bd2a7 [INFO] linting 1999321/JupiterPnl against nightly for clippy-nonminimal_bool-denied [INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2F1999321%2FJupiterPnl" "/workspace/builds/worker-3-tc1/source", kill_on_drop: false }` [INFO] [stderr] Cloning into '/workspace/builds/worker-3-tc1/source'... [INFO] [stderr] done. [INFO] started tweaking git repo https://github.com/1999321/JupiterPnl [INFO] finished tweaking git repo https://github.com/1999321/JupiterPnl [INFO] tweaked toml for git repo https://github.com/1999321/JupiterPnl written to /workspace/builds/worker-3-tc1/source/Cargo.toml [INFO] validating manifest of git repo https://github.com/1999321/JupiterPnl on toolchain nightly [INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+nightly" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }` [INFO] crate git repo https://github.com/1999321/JupiterPnl already has a lockfile, it will not be regenerated [INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+nightly" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }` [INFO] [stderr] Updating crates.io index [INFO] [stderr] Downloading crates ... [INFO] [stderr] Downloaded solana-transaction-status v2.3.6 [INFO] [stderr] Downloaded solana-curve25519 v2.3.6 [INFO] [stderr] Downloaded solana-sha256-hasher v2.3.0 [INFO] [stderr] Downloaded serde_path_to_error v0.1.17 [INFO] [stderr] Downloaded solana-fee-structure v2.3.0 [INFO] [stderr] Downloaded no-std-compat v0.4.1 [INFO] [stderr] Downloaded solana-rayon-threadlimit v2.3.6 [INFO] [stderr] Downloaded anchor-derive-serde v0.31.1 [INFO] [stderr] Downloaded anchor-derive-space v0.31.1 [INFO] [stderr] Downloaded solana-offchain-message v2.2.1 [INFO] [stderr] Downloaded solana-svm-feature-set v2.3.6 [INFO] [stderr] Downloaded webpki-root-certs v0.26.11 [INFO] [stderr] Downloaded solana-tls-utils v2.3.6 [INFO] [stderr] Downloaded nonzero_ext v0.3.0 [INFO] [stderr] Downloaded anchor-attribute-account v0.31.1 [INFO] [stderr] Downloaded anchor-attribute-access-control v0.31.1 [INFO] [stderr] Downloaded anchor-client v0.31.1 [INFO] [stderr] Downloaded solana-rpc-client v2.3.6 [INFO] [stderr] Downloaded anchor-syn v0.31.1 [INFO] [stderr] Downloaded raw-cpuid v11.5.0 [INFO] [stderr] Downloaded governor v0.6.3 [INFO] [stderr] Downloaded axum v0.8.4 [INFO] [stderr] Downloaded webpki-root-certs v1.0.2 [INFO] [stderr] Downloaded serde_with v3.14.0 [INFO] [stderr] Downloaded reqwest v0.12.22 [INFO] [stderr] Downloaded tower-http v0.6.6 [INFO] [stderr] Downloaded quinn-proto v0.11.12 [INFO] [stderr] Downloaded curve25519-dalek v4.1.3 [INFO] [stderr] Downloaded unicode-width v0.2.1 [INFO] [stderr] Downloaded webpki-roots v1.0.2 [INFO] [stderr] Downloaded nix v0.30.1 [INFO] [stderr] Downloaded serde_json v1.0.142 [INFO] [stderr] Downloaded rustls v0.23.31 [INFO] [stderr] Downloaded wide v0.7.33 [INFO] [stderr] Downloaded security-framework v3.2.0 [INFO] [stderr] Downloaded rustls-webpki v0.103.4 [INFO] [stderr] Downloaded spinning_top v0.3.0 [INFO] [stderr] Downloaded fiat-crypto v0.2.9 [INFO] [stderr] Downloaded safe_arch v0.7.4 [INFO] [stderr] Downloaded quinn v0.11.8 [INFO] [stderr] Downloaded solana-streamer v2.3.6 [INFO] [stderr] Downloaded solana-tpu-client v2.3.6 [INFO] [stderr] Downloaded rustls-platform-verifier v0.5.3 [INFO] [stderr] Downloaded solana-metrics v2.3.6 [INFO] [stderr] Downloaded solana-perf v2.3.6 [INFO] [stderr] Downloaded solana-udp-client v2.3.6 [INFO] [stderr] Downloaded solana-client v2.3.6 [INFO] [stderr] Downloaded solana-account-decoder v2.3.6 [INFO] [stderr] Downloaded anchor-attribute-event v0.31.1 [INFO] [stderr] Downloaded anchor-lang-idl-spec v0.1.0 [INFO] [stderr] Downloaded anchor-lang-idl v0.1.2 [INFO] [stderr] Downloaded anchor-attribute-program v0.31.1 [INFO] [stderr] Downloaded solana-quic-client v2.3.6 [INFO] [stderr] Downloaded solana-rpc-client-nonce-utils v2.3.6 [INFO] [stderr] Downloaded reqwest-middleware v0.4.2 [INFO] [stderr] Downloaded quanta v0.12.6 [INFO] [stderr] Downloaded solana-net-utils v2.3.6 [INFO] [stderr] Downloaded fastbloom v0.9.0 [INFO] [stderr] Downloaded rustls-native-certs v0.8.1 [INFO] [stderr] Downloaded tokio-rustls v0.26.2 [INFO] [stderr] Downloaded solana-transaction-metrics-tracker v2.3.6 [INFO] [stderr] Downloaded solana-bn254 v2.2.2 [INFO] [stderr] Downloaded cfg_eval v0.1.2 [INFO] [stderr] Downloaded serde_with_macros v3.14.0 [INFO] [stderr] Downloaded solana-sdk v2.3.1 [INFO] [stderr] Downloaded agave-feature-set v2.3.6 [INFO] [stderr] Downloaded solana-secp256k1-program v2.2.3 [INFO] [stderr] Downloaded solana-feature-set v2.2.5 [INFO] [stderr] Downloaded solana-transaction-context v2.3.6 [INFO] [stderr] Downloaded cc v1.2.31 [INFO] [stderr] Downloaded anchor-attribute-constant v0.31.1 [INFO] [stderr] Downloaded anchor-attribute-error v0.31.1 [INFO] [stderr] Downloaded anchor-derive-accounts v0.31.1 [INFO] [stderr] Downloaded anchor-lang v0.31.1 [INFO] [stderr] Downloaded solana-thin-client v2.3.6 [INFO] [stderr] Downloaded solana-pubsub-client v2.3.6 [INFO] [stderr] Downloaded solana-version v2.3.6 [INFO] [stderr] Downloaded solana-rpc-client-types v2.3.6 [INFO] [stderr] Downloaded solana-rpc-client-api v2.3.6 [INFO] [stderr] Downloaded solana-connection-cache v2.3.6 [INFO] [stderr] Downloaded futures-timer v3.0.3 [INFO] [stderr] Downloaded solana-measure v2.3.6 [INFO] [stderr] Downloaded rand_core v0.9.3 [INFO] [stderr] Downloaded quinn-udp v0.5.13 [INFO] [stderr] Downloaded solana-compute-budget-interface v2.2.2 [INFO] [stderr] Downloaded solana-epoch-rewards-hasher v2.2.1 [INFO] [stderr] Downloaded siphasher v1.0.1 [INFO] [stderr] Downloaded solana-client-traits v2.2.1 [INFO] [stderr] Downloaded solana-rent-collector v2.2.1 [INFO] [stderr] Downloaded solana-epoch-info v2.2.1 [INFO] [stderr] Downloaded solana-nonce-account v2.2.1 [INFO] [stderr] Downloaded solana-shred-version v2.2.1 [INFO] [stderr] Downloaded solana-account-decoder-client-types v2.3.6 [INFO] [stderr] Downloaded solana-poh-config v2.2.1 [INFO] [stderr] Downloaded solana-genesis-config v2.3.0 [INFO] [stderr] Downloaded agave-reserved-account-keys v2.3.6 [INFO] [stderr] Downloaded solana-precompiles v2.2.2 [INFO] [stderr] Downloaded solana-time-utils v2.2.1 [INFO] [stderr] Downloaded solana-ed25519-program v2.2.3 [INFO] [stderr] Downloaded solana-transaction-status-client-types v2.3.6 [INFO] [stderr] Downloaded axum-core v0.5.2 [INFO] [stderr] Downloaded solana-presigner v2.2.1 [INFO] [stderr] Downloaded solana-reserved-account-keys v2.2.2 [INFO] [stderr] Downloaded solana-system-transaction v2.2.1 [INFO] [stderr] Downloaded solana-validator-exit v2.2.1 [INFO] [stderr] Downloaded rustls-platform-verifier-android v0.1.1 [INFO] [stderr] Downloaded solana-packet v2.2.1 [INFO] [stderr] Downloaded solana-quic-definitions v2.3.1 [INFO] [stderr] Downloaded solana-cluster-type v2.2.1 [INFO] [stderr] Downloaded solana-inflation v2.2.1 [INFO] [stderr] Downloaded solana-rent-debits v2.2.1 [INFO] [stderr] Downloaded solana-secp256r1-program v2.2.4 [INFO] [stderr] Downloaded solana-serde v2.2.1 [INFO] [stderr] Downloaded solana-hard-forks v2.2.1 [INFO] [stderr] Downloaded solana-precompile-error v2.2.2 [INFO] [stderr] Downloaded bytemuck_derive v1.10.0 [INFO] [stderr] Downloaded solana-zk-sdk v2.3.6 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc1/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:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+nightly" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }` [INFO] [stdout] 4184d54cb1632f50e58241b28e7407fb06516bb4f526c8e404dbfaa2cacf7fb1 [INFO] running `Command { std: "docker" "start" "-a" "4184d54cb1632f50e58241b28e7407fb06516bb4f526c8e404dbfaa2cacf7fb1", kill_on_drop: false }` [INFO] running `Command { std: "docker" "inspect" "4184d54cb1632f50e58241b28e7407fb06516bb4f526c8e404dbfaa2cacf7fb1", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "4184d54cb1632f50e58241b28e7407fb06516bb4f526c8e404dbfaa2cacf7fb1", kill_on_drop: false }` [INFO] [stdout] 4184d54cb1632f50e58241b28e7407fb06516bb4f526c8e404dbfaa2cacf7fb1 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc1/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:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+nightly" "clippy" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }` [INFO] [stdout] f51df3aa1c74c14412b3260e13de7fb422e087c8fcfc91bc2e26692264b999f5 [INFO] running `Command { std: "docker" "start" "-a" "f51df3aa1c74c14412b3260e13de7fb422e087c8fcfc91bc2e26692264b999f5", kill_on_drop: false }` [INFO] [stderr] Compiling proc-macro2 v1.0.95 [INFO] [stderr] Compiling unicode-ident v1.0.18 [INFO] [stderr] Compiling libc v0.2.174 [INFO] [stderr] Checking cfg-if v1.0.1 [INFO] [stderr] Compiling version_check v0.9.5 [INFO] [stderr] Compiling typenum v1.18.0 [INFO] [stderr] Compiling serde v1.0.219 [INFO] [stderr] Compiling autocfg v1.5.0 [INFO] [stderr] Checking subtle v2.6.1 [INFO] [stderr] Compiling zerocopy v0.8.26 [INFO] [stderr] Compiling cfg_aliases v0.2.1 [INFO] [stderr] Checking cpufeatures v0.2.17 [INFO] [stderr] Compiling getrandom v0.3.3 [INFO] [stderr] Compiling hashbrown v0.15.4 [INFO] [stderr] Compiling equivalent v1.0.2 [INFO] [stderr] Compiling toml_datetime v0.6.11 [INFO] [stderr] Compiling winnow v0.7.12 [INFO] [stderr] Compiling once_cell v1.21.3 [INFO] [stderr] Compiling borsh v1.5.7 [INFO] [stderr] Checking five8_core v0.1.2 [INFO] [stderr] Checking five8 v0.2.1 [INFO] [stderr] Checking solana-sanitize v2.2.1 [INFO] [stderr] Compiling semver v1.0.26 [INFO] [stderr] Checking solana-atomic-u64 v2.2.1 [INFO] [stderr] Checking five8_const v0.1.4 [INFO] [stderr] Checking log v0.4.27 [INFO] [stderr] Checking lazy_static v1.5.0 [INFO] [stderr] Checking memchr v2.7.5 [INFO] [stderr] Compiling getrandom v0.1.16 [INFO] [stderr] Compiling bs58 v0.5.1 [INFO] [stderr] Checking opaque-debug v0.3.1 [INFO] [stderr] Compiling num-traits v0.2.19 [INFO] [stderr] Checking byteorder v1.5.0 [INFO] [stderr] Checking percent-encoding v2.3.1 [INFO] [stderr] Compiling generic-array v0.14.7 [INFO] [stderr] Compiling indexmap v2.10.0 [INFO] [stderr] Compiling ahash v0.8.12 [INFO] [stderr] Checking signature v1.6.4 [INFO] [stderr] Compiling thiserror v1.0.69 [INFO] [stderr] Checking solana-msg v2.2.1 [INFO] [stderr] Checking ed25519 v1.5.3 [INFO] [stderr] Compiling thiserror v2.0.12 [INFO] [stderr] Compiling lock_api v0.4.13 [INFO] [stderr] Compiling parking_lot_core v0.9.11 [INFO] [stderr] Checking solana-program-memory v2.3.1 [INFO] [stderr] Compiling rustc_version v0.4.1 [INFO] [stderr] Compiling serde_json v1.0.142 [INFO] [stderr] Checking keccak v0.1.5 [INFO] [stderr] Compiling feature-probe v0.1.1 [INFO] [stderr] Checking arrayref v0.3.9 [INFO] [stderr] Checking either v1.15.0 [INFO] [stderr] Checking derivation-path v0.2.0 [INFO] [stderr] Compiling crunchy v0.2.4 [INFO] [stderr] Checking qstring v0.7.2 [INFO] [stderr] Checking uriparse v0.6.4 [INFO] [stderr] Checking stable_deref_trait v1.2.0 [INFO] [stderr] Checking slab v0.4.10 [INFO] [stderr] Checking untrusted v0.9.0 [INFO] [stderr] Compiling bv v0.11.1 [INFO] [stderr] Checking tracing-core v0.1.34 [INFO] [stderr] Compiling openssl v0.10.73 [INFO] [stderr] Checking constant_time_eq v0.3.1 [INFO] [stderr] Checking arrayvec v0.7.6 [INFO] [stderr] Compiling quote v1.0.40 [INFO] [stderr] Checking futures-channel v0.3.31 [INFO] [stderr] Compiling curve25519-dalek v4.1.3 [INFO] [stderr] Checking futures-io v0.3.31 [INFO] [stderr] Checking futures-task v0.3.31 [INFO] [stderr] Checking tracing v0.1.41 [INFO] [stderr] Checking solana-derivation-path v2.2.1 [INFO] [stderr] Checking solana-seed-derivable v2.2.1 [INFO] [stderr] Checking writeable v0.6.1 [INFO] [stderr] Checking solana-decode-error v2.3.0 [INFO] [stderr] Checking num-integer v0.1.46 [INFO] [stderr] Compiling syn v2.0.104 [INFO] [stderr] Compiling syn v1.0.109 [INFO] [stderr] Compiling crossbeam-utils v0.8.21 [INFO] [stderr] Checking litemap v0.8.0 [INFO] [stderr] Compiling jobserver v0.1.33 [INFO] [stderr] Compiling anyhow v1.0.98 [INFO] [stderr] Compiling icu_normalizer_data v2.0.0 [INFO] [stderr] Compiling icu_properties_data v2.0.1 [INFO] [stderr] Checking base64 v0.12.3 [INFO] [stderr] Compiling rustls v0.23.31 [INFO] [stderr] Compiling digest v0.9.0 [INFO] [stderr] Compiling crypto-common v0.1.6 [INFO] [stderr] Compiling block-buffer v0.10.4 [INFO] [stderr] Checking form_urlencoded v1.2.1 [INFO] [stderr] Checking num-bigint v0.4.6 [INFO] [stderr] Compiling libsecp256k1-core v0.2.2 [INFO] [stderr] Checking itertools v0.12.1 [INFO] [stderr] Checking httpdate v1.0.3 [INFO] [stderr] Checking getrandom v0.2.16 [INFO] [stderr] Compiling cc v1.2.31 [INFO] [stderr] Checking rand_core v0.5.1 [INFO] [stderr] Checking rand_core v0.6.4 [INFO] [stderr] Checking block-buffer v0.9.0 [INFO] [stderr] Checking sha2 v0.9.9 [INFO] [stderr] Checking signal-hook-registry v1.4.5 [INFO] [stderr] Checking socket2 v0.6.0 [INFO] [stderr] Checking mio v1.0.4 [INFO] [stderr] Checking crypto-mac v0.8.0 [INFO] [stderr] Compiling digest v0.10.7 [INFO] [stderr] Compiling toml_edit v0.22.27 [INFO] [stderr] Checking hmac v0.8.1 [INFO] [stderr] Checking parking_lot v0.12.4 [INFO] [stderr] Checking hmac-drbg v0.3.0 [INFO] [stderr] Compiling sha2 v0.10.9 [INFO] [stderr] Checking inout v0.1.4 [INFO] [stderr] Checking solana-precompile-error v2.2.2 [INFO] [stderr] Checking sha3 v0.10.8 [INFO] [stderr] Checking hmac v0.12.1 [INFO] [stderr] Checking pbkdf2 v0.11.0 [INFO] [stderr] Checking alloc-no-stdlib v2.0.4 [INFO] [stderr] Compiling crc32fast v1.5.0 [INFO] [stderr] Checking cipher v0.4.4 [INFO] [stderr] Checking alloc-stdlib v0.2.2 [INFO] [stderr] Checking solana-seed-phrase v2.2.1 [INFO] [stderr] Compiling memoffset v0.9.1 [INFO] [stderr] Checking adler2 v2.0.1 [INFO] [stderr] Checking brotli-decompressor v5.0.0 [INFO] [stderr] Checking universal-hash v0.5.1 [INFO] [stderr] Checking miniz_oxide v0.8.9 [INFO] [stderr] Checking ppv-lite86 v0.2.21 [INFO] [stderr] Compiling libsecp256k1-gen-genmult v0.2.1 [INFO] [stderr] Compiling libsecp256k1-gen-ecmult v0.2.1 [INFO] [stderr] Checking solana-program-option v2.2.1 [INFO] [stderr] Checking aes v0.8.4 [INFO] [stderr] Checking ctr v0.9.2 [INFO] [stderr] Checking polyval v0.6.2 [INFO] [stderr] Compiling libsecp256k1 v0.6.0 [INFO] [stderr] Checking hashbrown v0.13.2 [INFO] [stderr] Checking aead v0.5.2 [INFO] [stderr] Compiling zstd-safe v7.2.4 [INFO] [stderr] Checking iri-string v0.7.8 [INFO] [stderr] Checking flate2 v1.1.2 [INFO] [stderr] Checking encoding_rs v0.8.35 [INFO] [stderr] Compiling strsim v0.11.1 [INFO] [stderr] Checking rand_chacha v0.3.1 [INFO] [stderr] Checking rand_chacha v0.2.2 [INFO] [stderr] Checking solana-time-utils v2.2.1 [INFO] [stderr] Checking solana-svm-feature-set v2.3.6 [INFO] [stderr] Checking crossbeam-epoch v0.9.18 [INFO] [stderr] Compiling unicode-segmentation v1.12.0 [INFO] [stderr] Checking rand v0.7.3 [INFO] [stderr] Compiling rustversion v1.0.21 [INFO] [stderr] Checking rand v0.8.5 [INFO] [stderr] Compiling rayon-core v1.12.1 [INFO] [stderr] Compiling portable-atomic v1.11.1 [INFO] [stderr] Compiling itoa v1.0.15 [INFO] [stderr] Compiling ryu v1.0.20 [INFO] [stderr] Checking crossbeam-deque v0.8.6 [INFO] [stderr] Compiling heck v0.3.3 [INFO] [stderr] Compiling ring v0.17.14 [INFO] [stderr] Compiling openssl-sys v0.9.109 [INFO] [stderr] Compiling blake3 v1.8.2 [INFO] [stderr] Compiling zstd-sys v2.0.15+zstd.1.5.7 [INFO] [stderr] Checking brotli v8.0.1 [INFO] [stderr] Checking crossbeam-channel v0.5.15 [INFO] [stderr] Checking powerfmt v0.2.0 [INFO] [stderr] Compiling solana-version v2.3.6 [INFO] [stderr] Compiling time-core v0.1.4 [INFO] [stderr] Compiling num-conv v0.1.0 [INFO] [stderr] Compiling unicode-xid v0.2.6 [INFO] [stderr] Checking minimal-lexical v0.2.1 [INFO] [stderr] Compiling native-tls v0.2.14 [INFO] [stderr] Compiling time-macros v0.2.22 [INFO] [stderr] Checking nom v7.1.3 [INFO] [stderr] Checking deranged v0.4.0 [INFO] [stderr] Checking gethostname v0.2.3 [INFO] [stderr] Compiling proc-macro-crate v3.3.0 [INFO] [stderr] Checking aho-corasick v1.1.3 [INFO] [stderr] Compiling nix v0.30.1 [INFO] [stderr] Checking regex-syntax v0.8.5 [INFO] [stderr] Checking data-encoding v2.9.0 [INFO] [stderr] Checking rayon v1.10.0 [INFO] [stderr] Checking rand_core v0.9.3 [INFO] [stderr] Compiling num-bigint v0.2.6 [INFO] [stderr] Checking solana-native-token v2.3.0 [INFO] [stderr] Checking rand_chacha v0.9.0 [INFO] [stderr] Checking concurrent-queue v2.5.0 [INFO] [stderr] Checking socket2 v0.5.10 [INFO] [stderr] Checking time v0.3.41 [INFO] [stderr] Compiling num-complex v0.2.4 [INFO] [stderr] Compiling num-rational v0.2.4 [INFO] [stderr] Compiling oid-registry v0.6.1 [INFO] [stderr] Compiling paste v1.0.15 [INFO] [stderr] Compiling rustls v0.21.12 [INFO] [stderr] Checking rand v0.9.2 [INFO] [stderr] Checking ark-std v0.4.0 [INFO] [stderr] Checking solana-big-mod-exp v2.2.1 [INFO] [stderr] Checking num_cpus v1.17.0 [INFO] [stderr] Compiling quinn-udp v0.5.13 [INFO] [stderr] Checking base64 v0.13.1 [INFO] [stderr] Checking solana-measure v2.3.6 [INFO] [stderr] Checking unicode-width v0.2.1 [INFO] [stderr] Checking rusticata-macros v4.1.0 [INFO] [stderr] Compiling solana-perf v2.3.6 [INFO] [stderr] Compiling synstructure v0.13.2 [INFO] [stderr] Compiling darling_core v0.20.11 [INFO] [stderr] Checking siphasher v1.0.1 [INFO] [stderr] Checking hashbrown v0.14.5 [INFO] [stderr] Checking tinyvec v1.9.0 [INFO] [stderr] Checking console v0.15.11 [INFO] [stderr] Checking solana-rayon-threadlimit v2.3.6 [INFO] [stderr] Checking regex-automata v0.4.9 [INFO] [stderr] Checking num-iter v0.1.45 [INFO] [stderr] Compiling borsh-derive-internal v0.10.4 [INFO] [stderr] Compiling borsh-schema-derive-internal v0.10.4 [INFO] [stderr] Compiling synstructure v0.12.6 [INFO] [stderr] Checking itertools v0.10.5 [INFO] [stderr] Compiling quinn v0.11.8 [INFO] [stderr] Checking number_prefix v0.4.0 [INFO] [stderr] Checking lru-slab v0.1.2 [INFO] [stderr] Checking rustc-hash v2.1.1 [INFO] [stderr] Compiling signal-hook v0.3.18 [INFO] [stderr] Checking num v0.2.1 [INFO] [stderr] Checking dashmap v5.5.3 [INFO] [stderr] Checking indicatif v0.17.11 [INFO] [stderr] Checking sha1 v0.10.6 [INFO] [stderr] Checking atty v0.2.14 [INFO] [stderr] Checking spinning_top v0.3.0 [INFO] [stderr] Checking futures-timer v3.0.3 [INFO] [stderr] Checking nonzero_ext v0.3.0 [INFO] [stderr] Checking termcolor v1.4.1 [INFO] [stderr] Checking humantime v2.2.0 [INFO] [stderr] Checking no-std-compat v0.4.1 [INFO] [stderr] Checking event-listener v2.5.3 [INFO] [stderr] Checking parking v2.2.1 [INFO] [stderr] Checking async-channel v1.9.0 [INFO] [stderr] Checking percentage v0.1.0 [INFO] [stderr] Checking event-listener v5.4.0 [INFO] [stderr] Checking pem v1.1.1 [INFO] [stderr] Checking solana-security-txt v1.1.1 [INFO] [stderr] Checking histogram v0.6.9 [INFO] [stderr] Checking webpki-roots v0.25.4 [INFO] [stderr] Checking memmap2 v0.5.10 [INFO] [stderr] Checking chrono v0.4.41 [INFO] [stderr] Checking siphasher v0.3.11 [INFO] [stderr] Checking solana-define-syscall v2.3.0 [INFO] [stderr] Checking base64 v0.21.7 [INFO] [stderr] Checking solana-validator-exit v2.2.1 [INFO] [stderr] Checking event-listener-strategy v0.5.4 [INFO] [stderr] Checking overload v0.1.1 [INFO] [stderr] Checking tracing-log v0.2.0 [INFO] [stderr] Checking sharded-slab v0.1.7 [INFO] [stderr] Checking thread_local v1.1.9 [INFO] [stderr] Checking matchit v0.8.4 [INFO] [stderr] Checking async-lock v3.4.0 [INFO] [stderr] Checking nu-ansi-term v0.46.0 [INFO] [stderr] Checking dashmap v6.1.0 [INFO] [stderr] Compiling serde_derive v1.0.219 [INFO] [stderr] Compiling zeroize_derive v1.4.2 [INFO] [stderr] Compiling bytemuck_derive v1.10.0 [INFO] [stderr] Compiling borsh-derive v1.5.7 [INFO] [stderr] Compiling curve25519-dalek-derive v0.1.1 [INFO] [stderr] Compiling solana-sdk-macro v2.2.1 [INFO] [stderr] Compiling thiserror-impl v1.0.69 [INFO] [stderr] Compiling thiserror-impl v2.0.12 [INFO] [stderr] Compiling displaydoc v0.2.5 [INFO] [stderr] Compiling tokio-macros v2.5.0 [INFO] [stderr] Compiling zerofrom-derive v0.1.6 [INFO] [stderr] Checking zeroize v1.8.1 [INFO] [stderr] Compiling yoke-derive v0.8.0 [INFO] [stderr] Compiling zerovec-derive v0.11.1 [INFO] [stderr] Checking curve25519-dalek v3.2.0 [INFO] [stderr] Compiling futures-macro v0.3.31 [INFO] [stderr] Compiling openssl-macros v0.1.1 [INFO] [stderr] Compiling num-derive v0.4.2 [INFO] [stderr] Checking rustls-pki-types v1.12.0 [INFO] [stderr] Checking merlin v3.0.0 [INFO] [stderr] Checking aes-gcm-siv v0.11.1 [INFO] [stderr] Compiling async-trait v0.1.88 [INFO] [stderr] Compiling asn1-rs-derive v0.4.0 [INFO] [stderr] Compiling asn1-rs-impl v0.1.0 [INFO] [stderr] Compiling cfg_eval v0.1.2 [INFO] [stderr] Checking rustls-webpki v0.103.4 [INFO] [stderr] Checking webpki-roots v1.0.2 [INFO] [stderr] Compiling spl-discriminator-syn v0.2.0 [INFO] [stderr] Checking asn1-rs v0.5.2 [INFO] [stderr] Checking regex v1.11.1 [INFO] [stderr] Checking bytemuck v1.23.1 [INFO] [stderr] Checking rustls-webpki v0.101.7 [INFO] [stderr] Checking safe_arch v0.7.4 [INFO] [stderr] Compiling darling_macro v0.20.11 [INFO] [stderr] Compiling spl-discriminator-derive v0.2.0 [INFO] [stderr] Checking futures-util v0.3.31 [INFO] [stderr] Compiling num_enum_derive v0.7.4 [INFO] [stderr] Checking zerofrom v0.1.6 [INFO] [stderr] Checking rustls-native-certs v0.8.1 [INFO] [stderr] Compiling ark-serialize-derive v0.4.2 [INFO] [stderr] Checking sct v0.7.1 [INFO] [stderr] Compiling dlopen2_derive v0.3.0 [INFO] [stderr] Compiling spl-program-error-derive v0.5.0 [INFO] [stderr] Checking yoke v0.8.0 [INFO] [stderr] Compiling darling v0.20.11 [INFO] [stderr] Compiling serde_with_macros v3.14.0 [INFO] [stderr] Checking zerovec v0.11.2 [INFO] [stderr] Checking zerotrie v0.2.2 [INFO] [stderr] Checking wide v0.7.33 [INFO] [stderr] Checking caps v0.5.5 [INFO] [stderr] Compiling derivative v2.2.0 [INFO] [stderr] Checking dlopen2 v0.5.0 [INFO] [stderr] Compiling ark-ff-asm v0.4.2 [INFO] [stderr] Checking ark-serialize v0.4.2 [INFO] [stderr] Compiling ark-ff-macros v0.4.2 [INFO] [stderr] Checking webpki-roots v0.24.0 [INFO] [stderr] Checking env_logger v0.9.3 [INFO] [stderr] Checking Inflector v0.11.4 [INFO] [stderr] Compiling anchor-derive-space v0.31.1 [INFO] [stderr] Checking solana-logger v2.3.1 [INFO] [stderr] Checking tracing-subscriber v0.3.19 [INFO] [stderr] Checking num_enum v0.7.4 [INFO] [stderr] Checking tinystr v0.8.1 [INFO] [stderr] Checking potential_utf v0.1.2 [INFO] [stderr] Checking icu_locale_core v2.0.0 [INFO] [stderr] Checking icu_collections v2.0.0 [INFO] [stderr] Checking der-parser v8.2.0 [INFO] [stderr] Checking ark-ff v0.4.2 [INFO] [stderr] Checking icu_provider v2.0.0 [INFO] [stderr] Checking icu_normalizer v2.0.0 [INFO] [stderr] Checking icu_properties v2.0.1 [INFO] [stderr] Checking fastbloom v0.9.0 [INFO] [stderr] Checking x509-parser v0.14.0 [INFO] [stderr] Checking futures-executor v0.3.31 [INFO] [stderr] Checking zstd v0.13.3 [INFO] [stderr] Checking futures v0.3.31 [INFO] [stderr] Checking idna_adapter v1.2.1 [INFO] [stderr] Checking idna v1.0.3 [INFO] [stderr] Checking url v2.5.4 [INFO] [stderr] Checking rustls-platform-verifier v0.5.3 [INFO] [stderr] Checking solana-hash v2.3.0 [INFO] [stderr] Checking bincode v1.3.3 [INFO] [stderr] Checking bitflags v2.9.1 [INFO] [stderr] Checking ed25519-dalek v1.0.1 [INFO] [stderr] Checking serde-big-array v0.5.1 [INFO] [stderr] Checking bytes v1.10.1 [INFO] [stderr] Checking solana-fee-calculator v2.2.1 [INFO] [stderr] Checking solana-short-vec v2.2.1 [INFO] [stderr] Checking serde_bytes v0.11.17 [INFO] [stderr] Checking solana-serde-varint v2.2.2 [INFO] [stderr] Checking serde_urlencoded v0.7.1 [INFO] [stderr] Checking solana-commitment-config v2.2.1 [INFO] [stderr] Checking solana-reward-info v2.2.1 [INFO] [stderr] Checking solana-inflation v2.2.1 [INFO] [stderr] Checking serde_with v3.14.0 [INFO] [stderr] Checking solana-sha256-hasher v2.3.0 [INFO] [stderr] Checking solana-cluster-type v2.2.1 [INFO] [stderr] Checking solana-keccak-hasher v2.2.1 [INFO] [stderr] Checking solana-blake3-hasher v2.2.1 [INFO] [stderr] Checking solana-serde v2.2.1 [INFO] [stderr] Checking solana-epoch-info v2.2.1 [INFO] [stderr] Checking raw-cpuid v11.5.0 [INFO] [stderr] Checking solana-signature v2.3.0 [INFO] [stderr] Checking ed25519-dalek-bip32 v0.2.0 [INFO] [stderr] Checking solana-hard-forks v2.2.1 [INFO] [stderr] Checking solana-poh-config v2.2.1 [INFO] [stderr] Checking serde_path_to_error v0.1.17 [INFO] [stderr] Checking solana-shred-version v2.2.1 [INFO] [stderr] Compiling toml v0.5.11 [INFO] [stderr] Compiling anchor-lang-idl-spec v0.1.0 [INFO] [stderr] Checking tokio v1.47.1 [INFO] [stderr] Checking http v1.3.1 [INFO] [stderr] Checking http v0.2.12 [INFO] [stderr] Checking quinn-proto v0.11.12 [INFO] [stderr] Checking jsonrpc-core v18.0.0 [INFO] [stderr] Checking solana-packet v2.2.1 [INFO] [stderr] Compiling proc-macro-crate v0.1.5 [INFO] [stderr] Checking tungstenite v0.20.1 [INFO] [stderr] Checking solana-curve25519 v2.3.6 [INFO] [stderr] Checking http-body v1.0.1 [INFO] [stderr] Compiling borsh-derive v0.10.4 [INFO] [stderr] Checking http-body-util v0.1.3 [INFO] [stderr] Checking axum-core v0.5.2 [INFO] [stderr] Checking borsh v0.10.4 [INFO] [stderr] Compiling anchor-syn v0.31.1 [INFO] [stderr] Compiling anchor-lang-idl v0.1.2 [INFO] [stderr] Checking quanta v0.12.6 [INFO] [stderr] Checking solana-pubkey v2.4.0 [INFO] [stderr] Checking solana-borsh v2.2.1 [INFO] [stderr] Checking kaigan v0.2.6 [INFO] [stderr] Checking governor v0.6.3 [INFO] [stderr] Checking solana-instruction v2.3.0 [INFO] [stderr] Checking solana-sdk-ids v2.2.1 [INFO] [stderr] Checking solana-nonce v2.2.1 [INFO] [stderr] Checking spl-generic-token v1.0.1 [INFO] [stderr] Checking solana-epoch-rewards-hasher v2.2.1 [INFO] [stderr] Checking solana-rent-debits v2.2.1 [INFO] [stderr] Checking solana-sysvar-id v2.2.1 [INFO] [stderr] Checking solana-epoch-schedule v2.2.1 [INFO] [stderr] Checking solana-clock v2.2.2 [INFO] [stderr] Checking solana-slot-hashes v2.2.1 [INFO] [stderr] Checking solana-rent v2.2.1 [INFO] [stderr] Checking solana-last-restart-slot v2.2.1 [INFO] [stderr] Checking solana-epoch-rewards v2.2.1 [INFO] [stderr] Checking solana-slot-history v2.2.1 [INFO] [stderr] Checking solana-transaction-error v2.2.1 [INFO] [stderr] Checking solana-program-error v2.2.2 [INFO] [stderr] Checking solana-system-interface v1.0.0 [INFO] [stderr] Checking solana-serialize-utils v2.2.1 [INFO] [stderr] Checking solana-bincode v2.2.1 [INFO] [stderr] Checking solana-feature-set v2.2.5 [INFO] [stderr] Checking agave-feature-set v2.3.6 [INFO] [stderr] Checking solana-address-lookup-table-interface v2.2.2 [INFO] [stderr] Checking solana-stable-layout v2.2.1 [INFO] [stderr] Checking solana-loader-v2-interface v2.2.1 [INFO] [stderr] Checking solana-signer v2.2.1 [INFO] [stderr] Checking solana-account-info v2.3.0 [INFO] [stderr] Checking solana-keypair v2.2.3 [INFO] [stderr] Checking solana-zk-sdk v2.3.6 [INFO] [stderr] Checking spl-discriminator v0.4.1 [INFO] [stderr] Checking solana-program-pack v2.2.1 [INFO] [stderr] Checking solana-cpi v2.2.1 [INFO] [stderr] Checking solana-instructions-sysvar v2.2.2 [INFO] [stderr] Checking solana-program-entrypoint v2.3.0 [INFO] [stderr] Checking solana-quic-definitions v2.3.1 [INFO] [stderr] Checking spl-program-error v0.7.0 [INFO] [stderr] Checking solana-tls-utils v2.3.6 [INFO] [stderr] Checking solana-presigner v2.2.1 [INFO] [stderr] Checking solana-stake-interface v1.2.1 [INFO] [stderr] Checking solana-message v2.4.0 [INFO] [stderr] Checking solana-vote-interface v2.2.6 [INFO] [stderr] Checking solana-loader-v4-interface v2.2.1 [INFO] [stderr] Checking solana-loader-v3-interface v5.0.0 [INFO] [stderr] Checking ark-poly v0.4.2 [INFO] [stderr] Checking spl-memo v6.0.0 [INFO] [stderr] Checking solana-offchain-message v2.2.1 [INFO] [stderr] Checking spl-associated-token-account-client v2.0.0 [INFO] [stderr] Checking solana-ed25519-program v2.2.3 [INFO] [stderr] Checking solana-reserved-account-keys v2.2.2 [INFO] [stderr] Checking solana-compute-budget-interface v2.2.2 [INFO] [stderr] Checking solana-secp256k1-program v2.2.3 [INFO] [stderr] Checking solana-secp256k1-recover v2.2.1 [INFO] [stderr] Checking solana-secp256r1-program v2.2.4 [INFO] [stderr] Checking agave-reserved-account-keys v2.3.6 [INFO] [stderr] Checking solana-example-mocks v2.2.1 [INFO] [stderr] Checking solana-fee-structure v2.3.0 [INFO] [stderr] Checking solana-precompiles v2.2.2 [INFO] [stderr] Checking solana-transaction v2.2.3 [INFO] [stderr] Checking solana-sysvar v2.2.2 [INFO] [stderr] Checking ark-ec v0.4.2 [INFO] [stderr] Checking solana-system-transaction v2.2.1 [INFO] [stderr] Checking solana-account v2.2.1 [INFO] [stderr] Checking spl-token v8.0.0 [INFO] [stderr] Checking spl-pod v0.5.1 [INFO] [stderr] Checking spl-token-confidential-transfer-proof-generation v0.4.0 [INFO] [stderr] Checking spl-token-confidential-transfer-ciphertext-arithmetic v0.3.0 [INFO] [stderr] Checking solana-account-decoder-client-types v2.3.6 [INFO] [stderr] Checking solana-transaction-context v2.3.6 [INFO] [stderr] Checking solana-feature-gate-interface v2.2.2 [INFO] [stderr] Checking solana-client-traits v2.2.1 [INFO] [stderr] Checking solana-genesis-config v2.3.0 [INFO] [stderr] Checking solana-nonce-account v2.2.1 [INFO] [stderr] Checking tokio-util v0.7.15 [INFO] [stderr] Checking tower v0.5.2 [INFO] [stderr] Checking tokio-native-tls v0.3.1 [INFO] [stderr] Checking tokio-rustls v0.26.2 [INFO] [stderr] Checking async-compression v0.4.27 [INFO] [stderr] Checking solana-net-utils v2.3.6 [INFO] [stderr] Checking tokio-rustls v0.24.1 [INFO] [stderr] Checking solana-program v2.3.0 [INFO] [stderr] Checking tokio-stream v0.1.17 [INFO] [stderr] Checking spl-type-length-value v0.8.0 [INFO] [stderr] Checking spl-token-confidential-transfer-proof-extraction v0.3.0 [INFO] [stderr] Checking spl-token-group-interface v0.6.0 [INFO] [stderr] Checking solana-config-program-client v0.0.2 [INFO] [stderr] Checking tokio-tungstenite v0.20.1 [INFO] [stderr] Checking solana-rent-collector v2.2.1 [INFO] [stderr] Checking spl-tlv-account-resolution v0.10.0 [INFO] [stderr] Checking spl-token-metadata-interface v0.7.0 [INFO] [stderr] Checking spl-elgamal-registry v0.2.0 [INFO] [stderr] Checking tower-http v0.6.6 [INFO] [stderr] Checking spl-transfer-hook-interface v0.10.0 [INFO] [stderr] Checking h2 v0.4.11 [INFO] [stderr] Checking solana-transaction-status-client-types v2.3.6 [INFO] [stderr] Checking spl-token-2022 v8.0.1 [INFO] [stderr] Compiling anchor-attribute-access-control v0.31.1 [INFO] [stderr] Compiling anchor-attribute-program v0.31.1 [INFO] [stderr] Compiling anchor-derive-serde v0.31.1 [INFO] [stderr] Compiling anchor-derive-accounts v0.31.1 [INFO] [stderr] Compiling anchor-attribute-account v0.31.1 [INFO] [stderr] Compiling anchor-attribute-constant v0.31.1 [INFO] [stderr] Compiling anchor-attribute-event v0.31.1 [INFO] [stderr] Compiling anchor-attribute-error v0.31.1 [INFO] [stderr] Checking ark-bn254 v0.4.0 [INFO] [stderr] Checking solana-bn254 v2.2.2 [INFO] [stderr] Checking solana-rpc-client-types v2.3.6 [INFO] [stderr] Checking solana-sdk v2.3.1 [INFO] [stderr] Checking anchor-lang v0.31.1 [INFO] [stderr] Checking solana-account-decoder v2.3.6 [INFO] [stderr] Checking spl-associated-token-account v7.0.0 [INFO] [stderr] Checking solana-pubsub-client v2.3.6 [INFO] [stderr] Checking hyper v1.6.0 [INFO] [stderr] Checking solana-transaction-status v2.3.6 [INFO] [stderr] Checking hyper-util v0.1.16 [INFO] [stderr] Checking hyper-rustls v0.27.7 [INFO] [stderr] Checking hyper-tls v0.6.0 [INFO] [stderr] Checking axum v0.8.4 [INFO] [stderr] Checking reqwest v0.12.22 [INFO] [stderr] Checking solana-metrics v2.3.6 [INFO] [stderr] Checking reqwest-middleware v0.4.2 [INFO] [stderr] Checking solana-connection-cache v2.3.6 [INFO] [stderr] Checking solana-rpc-client-api v2.3.6 [INFO] [stderr] Checking solana-rpc-client v2.3.6 [INFO] [stderr] Checking solana-transaction-metrics-tracker v2.3.6 [INFO] [stderr] Checking solana-streamer v2.3.6 [INFO] [stderr] Checking solana-tpu-client v2.3.6 [INFO] [stderr] Checking solana-thin-client v2.3.6 [INFO] [stderr] Checking solana-rpc-client-nonce-utils v2.3.6 [INFO] [stderr] Checking solana-quic-client v2.3.6 [INFO] [stderr] Checking solana-udp-client v2.3.6 [INFO] [stderr] Checking solana-client v2.3.6 [INFO] [stderr] Checking anchor-client v0.31.1 [INFO] [stderr] Checking jupiter v0.1.0 (/opt/rustwide/workdir) [INFO] [stdout] warning: redundant field names in struct initialization [INFO] [stdout] --> src/handle/handle_tx.rs:144:13 [INFO] [stdout] | [INFO] [stdout] 144 | mint: mint, // Placeholder, should be set appropriately [INFO] [stdout] | ^^^^^^^^^^ help: replace it with: `mint` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stdout] = note: `#[warn(clippy::redundant_field_names)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant field names in struct initialization [INFO] [stdout] --> src/handle/handle_tx.rs:145:13 [INFO] [stdout] | [INFO] [stdout] 145 | amount: amount, // Placeholder, should be set appropriately [INFO] [stdout] | ^^^^^^^^^^^^^^ help: replace it with: `amount` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant field names in struct initialization [INFO] [stdout] --> src/handle/handle_tx.rs:146:13 [INFO] [stdout] | [INFO] [stdout] 146 | usd_value: usd_value, // Placeholder, should be calculated based on the swap data [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ help: replace it with: `usd_value` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant field names in struct initialization [INFO] [stdout] --> src/handle/handle_tx.rs:147:13 [INFO] [stdout] | [INFO] [stdout] 147 | buy_amount: buy_amount, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `buy_amount` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant field names in struct initialization [INFO] [stdout] --> src/handle/handle_tx.rs:148:13 [INFO] [stdout] | [INFO] [stdout] 148 | sell_amount: sell_amount, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `sell_amount` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant field names in struct initialization [INFO] [stdout] --> src/handle/handle_tx.rs:149:13 [INFO] [stdout] | [INFO] [stdout] 149 | buy_usd_value: buy_usd_value, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `buy_usd_value` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant field names in struct initialization [INFO] [stdout] --> src/handle/handle_tx.rs:150:13 [INFO] [stdout] | [INFO] [stdout] 150 | sell_usd_value: sell_usd_value, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `sell_usd_value` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant field names in struct initialization [INFO] [stdout] --> src/handle/handle_tx.rs:144:13 [INFO] [stdout] | [INFO] [stdout] 144 | mint: mint, // Placeholder, should be set appropriately [INFO] [stdout] | ^^^^^^^^^^ help: replace it with: `mint` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stdout] = note: `#[warn(clippy::redundant_field_names)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant field names in struct initialization [INFO] [stdout] --> src/handle/handle_tx.rs:145:13 [INFO] [stdout] | [INFO] [stdout] 145 | amount: amount, // Placeholder, should be set appropriately [INFO] [stdout] | ^^^^^^^^^^^^^^ help: replace it with: `amount` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant field names in struct initialization [INFO] [stdout] --> src/handle/handle_tx.rs:146:13 [INFO] [stdout] | [INFO] [stdout] 146 | usd_value: usd_value, // Placeholder, should be calculated based on the swap data [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ help: replace it with: `usd_value` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant field names in struct initialization [INFO] [stdout] --> src/handle/handle_tx.rs:147:13 [INFO] [stdout] | [INFO] [stdout] 147 | buy_amount: buy_amount, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `buy_amount` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant field names in struct initialization [INFO] [stdout] --> src/handle/handle_tx.rs:148:13 [INFO] [stdout] | [INFO] [stdout] 148 | sell_amount: sell_amount, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `sell_amount` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant field names in struct initialization [INFO] [stdout] --> src/handle/handle_tx.rs:149:13 [INFO] [stdout] | [INFO] [stdout] 149 | buy_usd_value: buy_usd_value, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `buy_usd_value` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant field names in struct initialization [INFO] [stdout] --> src/handle/handle_tx.rs:150:13 [INFO] [stdout] | [INFO] [stdout] 150 | sell_usd_value: sell_usd_value, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `sell_usd_value` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you should consider adding a `Default` implementation for `JupiterV6Indexer` [INFO] [stdout] --> src/tx/jupiterv6_indexer.rs:32:5 [INFO] [stdout] | [INFO] [stdout] 32 | / pub fn new() -> Self { [INFO] [stdout] 33 | | let client = Arc::new(RpcClient::new_with_commitment(RPC_URL.to_string(), CommitmentConfig::finalized())); [INFO] [stdout] 34 | | let _jupiter_v6_id = Pubkey::from_str(JUPITER_V6_ID).expect("Failed to parse Jupiter V6 ID"); [INFO] [stdout] ... | [INFO] [stdout] 44 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default [INFO] [stdout] = note: `#[warn(clippy::new_without_default)]` on by default [INFO] [stdout] help: try adding this [INFO] [stdout] | [INFO] [stdout] 30 + impl Default for JupiterV6Indexer { [INFO] [stdout] 31 + fn default() -> Self { [INFO] [stdout] 32 + Self::new() [INFO] [stdout] 33 + } [INFO] [stdout] 34 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/tx/jupiterv6_indexer.rs:198:17 [INFO] [stdout] | [INFO] [stdout] 198 | return pnl; [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] = note: `#[warn(clippy::needless_return)]` on by default [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 198 - return pnl; [INFO] [stdout] 198 + pnl [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/tx/jupiterv6_indexer.rs:203:17 [INFO] [stdout] | [INFO] [stdout] 203 | return Pnl::default(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 203 - return Pnl::default(); [INFO] [stdout] 203 + Pnl::default() [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `__Pubkey` which implements the `Copy` trait [INFO] [stdout] --> src/tx/jupiterv6_indexer.rs:52:125 [INFO] [stdout] | [INFO] [stdout] 52 | ...bkey, TokenAccountsFilter::Mint(token_pubkey.clone())); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ help: try dereferencing it: `*token_pubkey` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] = note: `#[warn(clippy::clone_on_copy)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/tx/jupiterv6_indexer.rs:68:57 [INFO] [stdout] | [INFO] [stdout] 68 | let associated_token_account = Pubkey::from_str(&associated_token_account); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: change this to: `associated_token_account` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] = note: `#[warn(clippy::needless_borrow)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: matching on `Some` with `ok()` is redundant [INFO] [stdout] --> src/tx/jupiterv6_indexer.rs:108:33 [INFO] [stdout] | [INFO] [stdout] 108 | / ... if let Some(tx) = client.get_transaction_with_config( [INFO] [stdout] 109 | | ... &sig, [INFO] [stdout] 110 | | ... RpcTransactionConfig { [INFO] [stdout] 111 | | ... encoding: Some(UiTransactionEncoding::JsonParsed), [INFO] [stdout] ... | [INFO] [stdout] 114 | | ... }, [INFO] [stdout] 115 | | ... ).ok() { [INFO] [stdout] | |____________________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_result_ok [INFO] [stdout] = note: `#[warn(clippy::match_result_ok)]` on by default [INFO] [stdout] help: consider matching on `Ok(tx)` and removing the call to `ok` instead [INFO] [stdout] | [INFO] [stdout] 108 ~ if let Ok(tx) = client.get_transaction_with_config( [INFO] [stdout] 109 + &sig, [INFO] [stdout] 110 + RpcTransactionConfig { [INFO] [stdout] 111 + encoding: Some(UiTransactionEncoding::JsonParsed), [INFO] [stdout] 112 + commitment: Some(CommitmentConfig::finalized()), [INFO] [stdout] 113 ~ max_supported_transaction_version: Some(1), // 关键:声明支持的事务版本;事务版本 0 是 Solana 当前默认的事务版本,表示使用基础的事务格式。 [INFO] [stdout] 114 + }, [INFO] [stdout] 115 ~ ) { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `Signature` which implements the `Copy` trait [INFO] [stdout] --> src/tx/jupiterv6_indexer.rs:149:31 [INFO] [stdout] | [INFO] [stdout] 149 | let sig = entry.key().clone(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ help: try dereferencing it: `*entry.key()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `__Pubkey` which implements the `Copy` trait [INFO] [stdout] --> src/tx/jupiterv6_indexer.rs:170:40 [INFO] [stdout] | [INFO] [stdout] 170 | let token_pubkey = token_pubkey.clone(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ help: try dereferencing it: `*token_pubkey` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `Signature` which implements the `Copy` trait [INFO] [stdout] --> src/tx/jupiterv6_indexer.rs:175:39 [INFO] [stdout] | [INFO] [stdout] 175 | ... let sig = swap_sum_info.sig.clone(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `swap_sum_info.sig` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: consider using `sort_by_key` [INFO] [stdout] --> src/tx/jupiterv6_indexer.rs:195:17 [INFO] [stdout] | [INFO] [stdout] 195 | sort_swap_items.sort_by(|a,b| a.timestamp.cmp(&b.timestamp)); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_sort_by [INFO] [stdout] = note: `#[warn(clippy::unnecessary_sort_by)]` on by default [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 195 - sort_swap_items.sort_by(|a,b| a.timestamp.cmp(&b.timestamp)); [INFO] [stdout] 195 + sort_swap_items.sort_by_key(|a| a.timestamp); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `__Pubkey` which implements the `Copy` trait [INFO] [stdout] --> src/tx/jupiterv6_indexer.rs:197:36 [INFO] [stdout] | [INFO] [stdout] 197 | let pnl = Pnl::new(token_pubkey.clone(), sort_swap_items).await; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ help: try dereferencing it: `*token_pubkey` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `unwrap` on `data` after checking its variant with `is_ok` [INFO] [stdout] --> src/tx/inner_tx.rs:49:56 [INFO] [stdout] | [INFO] [stdout] 48 | ... if data.is_ok() { [INFO] [stdout] | --------------- help: try: `if let Ok() = data` [INFO] [stdout] 49 | ... let data = data.unwrap(); [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_unwrap [INFO] [stdout] = note: `#[warn(clippy::unnecessary_unwrap)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you seem to be trying to use `match` for destructuring a single pattern. Consider using `if let` [INFO] [stdout] --> src/tx/inner_tx.rs:32:21 [INFO] [stdout] | [INFO] [stdout] 32 | / match inner_instruction { [INFO] [stdout] 33 | | solana_transaction_status::UiInstruction::Parsed(instruction_parsed) => { [INFO] [stdout] 34 | | match instruction_parsed { [INFO] [stdout] 35 | | solana_transaction_status::UiParsedInstruction::Parsed(parsed_instruction) => { [INFO] [stdout] ... | [INFO] [stdout] 91 | | } [INFO] [stdout] | |_____________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stdout] = note: `#[warn(clippy::single_match)]` on by default [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 32 ~ if let solana_transaction_status::UiInstruction::Parsed(instruction_parsed) = inner_instruction { [INFO] [stdout] 33 + match instruction_parsed { [INFO] [stdout] 34 + solana_transaction_status::UiParsedInstruction::Parsed(parsed_instruction) => { [INFO] [stdout] 35 ~ // 处理解析后的指令 [INFO] [stdout] 36 + if parsed_instruction.program == "spl-associated-token-account" || parsed_instruction.program == "spl-token" || parsed_instruction.program_id == "JUP6LkbZbjS1jKKwapdHNy74zcZ3tLUZoi5QNyVTaV4" { [INFO] [stdout] 37 + [INFO] [stdout] 38 + } [INFO] [stdout] 39 + }, [INFO] [stdout] 40 ~ // 用于描述那些无法被 RPC 节点完全解析的指令,但提供了指令的基本信息和原始字节数据 [INFO] [stdout] 41 + solana_transaction_status::UiParsedInstruction::PartiallyDecoded(parsed_instruction) => { [INFO] [stdout] 42 ~ // 处理解析后的指令 [INFO] [stdout] 43 + if parsed_instruction.program_id == "JUP6LkbZbjS1jKKwapdHNy74zcZ3tLUZoi5QNyVTaV4" { [INFO] [stdout] 44 + //let data = hex::decode("e445a52e51cb9a1d40c6cde8260871e2a5d5ca9e04cf5db590b714ba2fe32cb159133fc1c192b72257fd07d39cb0401e069b8857feab8184fb687f634618c035dac439dc1aeb3b5598a0f00000000001602c6103000000001d8ccf87ac0147bae756eb963a2ef6244c9691569a8ec08f0020a2eb8fbdb5a121c88d1000000000"); [INFO] [stdout] 45 + let data = bs58::decode(&parsed_instruction.data) [INFO] [stdout] 46 + .into_vec(); [INFO] [stdout] 47 + if data.is_ok() { [INFO] [stdout] 48 + let data = data.unwrap(); [INFO] [stdout] 49 + let (_, buffer) = data.split_at(DISCRIMINATOR_SIZE); [INFO] [stdout] 50 + // println!("buffer: {:?} {:?}", buffer.len(), SwapInstruction::try_from_slice(buffer.split_at(8).1)); [INFO] [stdout] 51 + // println!("Discriminator: {:?}", discriminator); [INFO] [stdout] 52 + // println!("Discriminator as hex: {:?}", SwapInstruction::DISCRIMINATOR); [INFO] [stdout] 53 + // let res = SwapInstruction::DISCRIMINATOR.eq(discriminator).then( [INFO] [stdout] 54 + // || SwapInstruction::try_from_slice(buffer) [INFO] [stdout] 55 + // ); [INFO] [stdout] 56 + let res = SwapInstruction::try_from_slice(buffer.split_at(8).1); [INFO] [stdout] 57 + match res { [INFO] [stdout] 58 + Ok(swap_instruction) => { [INFO] [stdout] 59 + [INFO] [stdout] 60 + #[cfg(test)] [INFO] [stdout] 61 + println!("Parsed Jupiter V6 Swap Instruction: {:?}", swap_instruction); [INFO] [stdout] 62 + [INFO] [stdout] 63 + swap_instructions.push(swap_instruction); [INFO] [stdout] 64 + }, [INFO] [stdout] 65 + _ => { [INFO] [stdout] 66 + println!("Failed to parse Jupiter V6 Swap Instruction: {:?}", data); [INFO] [stdout] 67 + } [INFO] [stdout] 68 + } [INFO] [stdout] 69 + // let swap_ix = anchor_lang::prelude::borsh::try_from_slice_with_schema::(&data.unwrap()); [INFO] [stdout] 70 + // //let swap_ix = solana_sdk::borsh0_10::try_from_slice_unchecked::(&data.unwrap()); [INFO] [stdout] 71 + // println!("Parsed Jupiter V6 Swap Instruction: {:?}", swap_ix); [INFO] [stdout] 72 + // match swap_ix { [INFO] [stdout] 73 + // Ok(swap_instruction) => { [INFO] [stdout] 74 + // swap_instructions.push( [INFO] [stdout] 75 + // swap_instruction [INFO] [stdout] 76 + // ) [INFO] [stdout] 77 + // }, [INFO] [stdout] 78 + // Err(_) => { [INFO] [stdout] 79 + [INFO] [stdout] 80 + // } [INFO] [stdout] 81 + // } [INFO] [stdout] 82 + } [INFO] [stdout] 83 + } [INFO] [stdout] 84 + } [INFO] [stdout] 85 + } [INFO] [stdout] 86 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/tx/post_balance.rs:22:17 [INFO] [stdout] | [INFO] [stdout] 22 | / if let OptionSerializer::Some(this_user) = balance.owner.as_ref() { [INFO] [stdout] 23 | | if Pubkey::from_str_const(this_user) == *user { [INFO] [stdout] 24 | | user_balances.push( [INFO] [stdout] 25 | | UserBalanceInfo { [INFO] [stdout] ... | [INFO] [stdout] 33 | | } [INFO] [stdout] | |_________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] = note: `#[warn(clippy::collapsible_if)]` on by default [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 22 ~ if let OptionSerializer::Some(this_user) = balance.owner.as_ref() [INFO] [stdout] 23 ~ && Pubkey::from_str_const(this_user) == *user { [INFO] [stdout] 24 | user_balances.push( [INFO] [stdout] ... [INFO] [stdout] 31 | ); [INFO] [stdout] 32 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/tx/post_balance.rs:26:62 [INFO] [stdout] | [INFO] [stdout] 26 | ... user: Pubkey::from_str_const(&this_user), [INFO] [stdout] | ^^^^^^^^^^ help: change this to: `this_user` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you should consider adding a `Default` implementation for `JupiterV6Indexer` [INFO] [stdout] --> src/tx/jupiterv6_indexer.rs:32:5 [INFO] [stdout] | [INFO] [stdout] 32 | / pub fn new() -> Self { [INFO] [stdout] 33 | | let client = Arc::new(RpcClient::new_with_commitment(RPC_URL.to_string(), CommitmentConfig::finalized())); [INFO] [stdout] 34 | | let _jupiter_v6_id = Pubkey::from_str(JUPITER_V6_ID).expect("Failed to parse Jupiter V6 ID"); [INFO] [stdout] ... | [INFO] [stdout] 44 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default [INFO] [stdout] = note: `#[warn(clippy::new_without_default)]` on by default [INFO] [stdout] help: try adding this [INFO] [stdout] | [INFO] [stdout] 30 + impl Default for JupiterV6Indexer { [INFO] [stdout] 31 + fn default() -> Self { [INFO] [stdout] 32 + Self::new() [INFO] [stdout] 33 + } [INFO] [stdout] 34 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/tx/jupiterv6_indexer.rs:198:17 [INFO] [stdout] | [INFO] [stdout] 198 | return pnl; [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] = note: `#[warn(clippy::needless_return)]` on by default [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 198 - return pnl; [INFO] [stdout] 198 + pnl [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/tx/jupiterv6_indexer.rs:203:17 [INFO] [stdout] | [INFO] [stdout] 203 | return Pnl::default(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 203 - return Pnl::default(); [INFO] [stdout] 203 + Pnl::default() [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: matching on `Some` with `ok()` is redundant [INFO] [stdout] --> src/handle/base_token.rs:80:9 [INFO] [stdout] | [INFO] [stdout] 80 | / if let Some(res) = reqwest::Client::new() [INFO] [stdout] 81 | | .get(url) [INFO] [stdout] 82 | | .send() [INFO] [stdout] 83 | | .await [INFO] [stdout] 84 | | .map_err(|e| eprintln!("Error fetching price: {}", e)) [INFO] [stdout] 85 | | .ok() { [INFO] [stdout] | |_____________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_result_ok [INFO] [stdout] help: consider matching on `Ok(res)` and removing the call to `ok` instead [INFO] [stdout] | [INFO] [stdout] 80 ~ if let Ok(res) = reqwest::Client::new() [INFO] [stdout] 81 + .get(url) [INFO] [stdout] 82 + .send() [INFO] [stdout] 83 + .await [INFO] [stdout] 84 ~ .map_err(|e| eprintln!("Error fetching price: {}", e)) { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: matching on `Some` with `ok()` is redundant [INFO] [stdout] --> src/handle/base_token.rs:116:9 [INFO] [stdout] | [INFO] [stdout] 116 | / if let Some(res) = reqwest::Client::new() [INFO] [stdout] 117 | | .get(url) [INFO] [stdout] 118 | | .send() [INFO] [stdout] 119 | | .await [INFO] [stdout] 120 | | .map_err(|e| eprintln!("Error fetching price: {}", e)) [INFO] [stdout] 121 | | .ok() { [INFO] [stdout] | |_____________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_result_ok [INFO] [stdout] help: consider matching on `Ok(res)` and removing the call to `ok` instead [INFO] [stdout] | [INFO] [stdout] 116 ~ if let Ok(res) = reqwest::Client::new() [INFO] [stdout] 117 + .get(url) [INFO] [stdout] 118 + .send() [INFO] [stdout] 119 + .await [INFO] [stdout] 120 ~ .map_err(|e| eprintln!("Error fetching price: {}", e)) { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/handle/base_token.rs:126:25 [INFO] [stdout] | [INFO] [stdout] 126 | / if let Some(parsed_price) = price.parsed.first() { [INFO] [stdout] 127 | | if let Ok(price_in_int) = parsed_price.price.price.parse::() { [INFO] [stdout] 128 | | return Some(DecimalAmount::new(price_in_int, 8)); // Assuming 6 decimals for Pyth prices [INFO] [stdout] 129 | | } [INFO] [stdout] 130 | | } [INFO] [stdout] | |_________________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 126 ~ if let Some(parsed_price) = price.parsed.first() [INFO] [stdout] 127 ~ && let Ok(price_in_int) = parsed_price.price.price.parse::() { [INFO] [stdout] 128 | return Some(DecimalAmount::new(price_in_int, 8)); // Assuming 6 decimals for Pyth prices [INFO] [stdout] 129 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `__Pubkey` which implements the `Copy` trait [INFO] [stdout] --> src/tx/jupiterv6_indexer.rs:52:125 [INFO] [stdout] | [INFO] [stdout] 52 | ...bkey, TokenAccountsFilter::Mint(token_pubkey.clone())); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ help: try dereferencing it: `*token_pubkey` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] = note: `#[warn(clippy::clone_on_copy)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary use of `get(output_mint).is_none()` [INFO] [stdout] --> src/handle/handle_tx.rs:82:33 [INFO] [stdout] | [INFO] [stdout] 82 | if token_prices.get(output_mint).is_none() { [INFO] [stdout] | -------------^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: replace it with: `!token_prices.contains_key(output_mint)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_get_then_check [INFO] [stdout] = note: `#[warn(clippy::unnecessary_get_then_check)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `__Pubkey` which implements the `Copy` trait [INFO] [stdout] --> src/handle/handle_tx.rs:85:45 [INFO] [stdout] | [INFO] [stdout] 85 | token_prices.insert(output_mint.clone(), price); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ help: try dereferencing it: `*output_mint` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary use of `get(input_mint).is_none()` [INFO] [stdout] --> src/handle/handle_tx.rs:119:33 [INFO] [stdout] | [INFO] [stdout] 119 | if token_prices.get(input_mint).is_none() { [INFO] [stdout] | -------------^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: replace it with: `!token_prices.contains_key(input_mint)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_get_then_check [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `__Pubkey` which implements the `Copy` trait [INFO] [stdout] --> src/handle/handle_tx.rs:122:45 [INFO] [stdout] | [INFO] [stdout] 122 | token_prices.insert(input_mint.clone(), price); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ help: try dereferencing it: `*input_mint` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/tx/jupiterv6_indexer.rs:68:57 [INFO] [stdout] | [INFO] [stdout] 68 | let associated_token_account = Pubkey::from_str(&associated_token_account); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: change this to: `associated_token_account` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] = note: `#[warn(clippy::needless_borrow)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: matching on `Some` with `ok()` is redundant [INFO] [stdout] --> src/tx/jupiterv6_indexer.rs:108:33 [INFO] [stdout] | [INFO] [stdout] 108 | / ... if let Some(tx) = client.get_transaction_with_config( [INFO] [stdout] 109 | | ... &sig, [INFO] [stdout] 110 | | ... RpcTransactionConfig { [INFO] [stdout] 111 | | ... encoding: Some(UiTransactionEncoding::JsonParsed), [INFO] [stdout] ... | [INFO] [stdout] 114 | | ... }, [INFO] [stdout] 115 | | ... ).ok() { [INFO] [stdout] | |____________________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_result_ok [INFO] [stdout] = note: `#[warn(clippy::match_result_ok)]` on by default [INFO] [stdout] help: consider matching on `Ok(tx)` and removing the call to `ok` instead [INFO] [stdout] | [INFO] [stdout] 108 ~ if let Ok(tx) = client.get_transaction_with_config( [INFO] [stdout] 109 + &sig, [INFO] [stdout] 110 + RpcTransactionConfig { [INFO] [stdout] 111 + encoding: Some(UiTransactionEncoding::JsonParsed), [INFO] [stdout] 112 + commitment: Some(CommitmentConfig::finalized()), [INFO] [stdout] 113 ~ max_supported_transaction_version: Some(1), // 关键:声明支持的事务版本;事务版本 0 是 Solana 当前默认的事务版本,表示使用基础的事务格式。 [INFO] [stdout] 114 + }, [INFO] [stdout] 115 ~ ) { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `Signature` which implements the `Copy` trait [INFO] [stdout] --> src/tx/jupiterv6_indexer.rs:149:31 [INFO] [stdout] | [INFO] [stdout] 149 | let sig = entry.key().clone(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ help: try dereferencing it: `*entry.key()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `__Pubkey` which implements the `Copy` trait [INFO] [stdout] --> src/tx/jupiterv6_indexer.rs:170:40 [INFO] [stdout] | [INFO] [stdout] 170 | let token_pubkey = token_pubkey.clone(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ help: try dereferencing it: `*token_pubkey` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `Signature` which implements the `Copy` trait [INFO] [stdout] --> src/tx/jupiterv6_indexer.rs:175:39 [INFO] [stdout] | [INFO] [stdout] 175 | ... let sig = swap_sum_info.sig.clone(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `swap_sum_info.sig` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: consider using `sort_by_key` [INFO] [stdout] --> src/tx/jupiterv6_indexer.rs:195:17 [INFO] [stdout] | [INFO] [stdout] 195 | sort_swap_items.sort_by(|a,b| a.timestamp.cmp(&b.timestamp)); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_sort_by [INFO] [stdout] = note: `#[warn(clippy::unnecessary_sort_by)]` on by default [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 195 - sort_swap_items.sort_by(|a,b| a.timestamp.cmp(&b.timestamp)); [INFO] [stdout] 195 + sort_swap_items.sort_by_key(|a| a.timestamp); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `__Pubkey` which implements the `Copy` trait [INFO] [stdout] --> src/tx/jupiterv6_indexer.rs:197:36 [INFO] [stdout] | [INFO] [stdout] 197 | let pnl = Pnl::new(token_pubkey.clone(), sort_swap_items).await; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ help: try dereferencing it: `*token_pubkey` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you seem to be trying to use `match` for an equality check. Consider using `if` [INFO] [stdout] --> src/handle/handle_swap_item.rs:43:13 [INFO] [stdout] | [INFO] [stdout] 43 | / match item.sell_amount == 0.0 { [INFO] [stdout] 44 | | false => { [INFO] [stdout] 45 | | if item.sell_amount > sum_amount { [INFO] [stdout] 46 | | sum_sell_amount += sum_amount; [INFO] [stdout] ... | [INFO] [stdout] 58 | | } [INFO] [stdout] | |_____________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 43 ~ if item.sell_amount == 0.0 == false { [INFO] [stdout] 44 + if item.sell_amount > sum_amount { [INFO] [stdout] 45 + sum_sell_amount += sum_amount; [INFO] [stdout] 46 + sum_sell_usd_value += sum_amount * item.sell_usd_value / item.sell_amount; [INFO] [stdout] 47 + sum_amount = 0.0; [INFO] [stdout] 48 + } else { [INFO] [stdout] 49 + sum_sell_amount += item.sell_amount; [INFO] [stdout] 50 + sum_sell_usd_value += item.sell_usd_value; [INFO] [stdout] 51 + sum_amount -= item.sell_amount; [INFO] [stdout] 52 + } [INFO] [stdout] 53 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `to_string` applied to a type that implements `Display` in `format!` args [INFO] [stdout] --> src/handle/handle_swap_item.rs:70:21 [INFO] [stdout] | [INFO] [stdout] 70 | mint.to_string() [INFO] [stdout] | ^^^^^^^^^^^^ help: remove this [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#to_string_in_format_args [INFO] [stdout] = note: `#[warn(clippy::to_string_in_format_args)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `unwrap` on `data` after checking its variant with `is_ok` [INFO] [stdout] --> src/tx/inner_tx.rs:49:56 [INFO] [stdout] | [INFO] [stdout] 48 | ... if data.is_ok() { [INFO] [stdout] | --------------- help: try: `if let Ok() = data` [INFO] [stdout] 49 | ... let data = data.unwrap(); [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_unwrap [INFO] [stdout] = note: `#[warn(clippy::unnecessary_unwrap)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual implementation of `Option::map` [INFO] [stdout] --> src/handle/handle_swap_item.rs:77:48 [INFO] [stdout] | [INFO] [stdout] 77 | pnl.unrealized_profit_loss_value = if let Some(price) = current_price { [INFO] [stdout] | ________________________________________________^ [INFO] [stdout] 78 | | Some(sum_amount * (price - sum_buy_usd_value / sum_buy_amount)) [INFO] [stdout] 79 | | } else { [INFO] [stdout] 80 | | None [INFO] [stdout] 81 | | }; [INFO] [stdout] | |_____________^ help: try: `current_price.map(|price| sum_amount * (price - sum_buy_usd_value / sum_buy_amount))` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_map [INFO] [stdout] = note: `#[warn(clippy::manual_map)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you seem to be trying to use `match` for destructuring a single pattern. Consider using `if let` [INFO] [stdout] --> src/tx/inner_tx.rs:32:21 [INFO] [stdout] | [INFO] [stdout] 32 | / match inner_instruction { [INFO] [stdout] 33 | | solana_transaction_status::UiInstruction::Parsed(instruction_parsed) => { [INFO] [stdout] 34 | | match instruction_parsed { [INFO] [stdout] 35 | | solana_transaction_status::UiParsedInstruction::Parsed(parsed_instruction) => { [INFO] [stdout] ... | [INFO] [stdout] 91 | | } [INFO] [stdout] | |_____________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stdout] = note: `#[warn(clippy::single_match)]` on by default [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 32 ~ if let solana_transaction_status::UiInstruction::Parsed(instruction_parsed) = inner_instruction { [INFO] [stdout] 33 + match instruction_parsed { [INFO] [stdout] 34 + solana_transaction_status::UiParsedInstruction::Parsed(parsed_instruction) => { [INFO] [stdout] 35 ~ // 处理解析后的指令 [INFO] [stdout] 36 + if parsed_instruction.program == "spl-associated-token-account" || parsed_instruction.program == "spl-token" || parsed_instruction.program_id == "JUP6LkbZbjS1jKKwapdHNy74zcZ3tLUZoi5QNyVTaV4" { [INFO] [stdout] 37 + [INFO] [stdout] 38 + } [INFO] [stdout] 39 + }, [INFO] [stdout] 40 ~ // 用于描述那些无法被 RPC 节点完全解析的指令,但提供了指令的基本信息和原始字节数据 [INFO] [stdout] 41 + solana_transaction_status::UiParsedInstruction::PartiallyDecoded(parsed_instruction) => { [INFO] [stdout] 42 ~ // 处理解析后的指令 [INFO] [stdout] 43 + if parsed_instruction.program_id == "JUP6LkbZbjS1jKKwapdHNy74zcZ3tLUZoi5QNyVTaV4" { [INFO] [stdout] 44 + //let data = hex::decode("e445a52e51cb9a1d40c6cde8260871e2a5d5ca9e04cf5db590b714ba2fe32cb159133fc1c192b72257fd07d39cb0401e069b8857feab8184fb687f634618c035dac439dc1aeb3b5598a0f00000000001602c6103000000001d8ccf87ac0147bae756eb963a2ef6244c9691569a8ec08f0020a2eb8fbdb5a121c88d1000000000"); [INFO] [stdout] 45 + let data = bs58::decode(&parsed_instruction.data) [INFO] [stdout] 46 + .into_vec(); [INFO] [stdout] 47 + if data.is_ok() { [INFO] [stdout] 48 + let data = data.unwrap(); [INFO] [stdout] 49 + let (_, buffer) = data.split_at(DISCRIMINATOR_SIZE); [INFO] [stdout] 50 + // println!("buffer: {:?} {:?}", buffer.len(), SwapInstruction::try_from_slice(buffer.split_at(8).1)); [INFO] [stdout] 51 + // println!("Discriminator: {:?}", discriminator); [INFO] [stdout] 52 + // println!("Discriminator as hex: {:?}", SwapInstruction::DISCRIMINATOR); [INFO] [stdout] 53 + // let res = SwapInstruction::DISCRIMINATOR.eq(discriminator).then( [INFO] [stdout] 54 + // || SwapInstruction::try_from_slice(buffer) [INFO] [stdout] 55 + // ); [INFO] [stdout] 56 + let res = SwapInstruction::try_from_slice(buffer.split_at(8).1); [INFO] [stdout] 57 + match res { [INFO] [stdout] 58 + Ok(swap_instruction) => { [INFO] [stdout] 59 + [INFO] [stdout] 60 + #[cfg(test)] [INFO] [stdout] 61 + println!("Parsed Jupiter V6 Swap Instruction: {:?}", swap_instruction); [INFO] [stdout] 62 + [INFO] [stdout] 63 + swap_instructions.push(swap_instruction); [INFO] [stdout] 64 + }, [INFO] [stdout] 65 + _ => { [INFO] [stdout] 66 + println!("Failed to parse Jupiter V6 Swap Instruction: {:?}", data); [INFO] [stdout] 67 + } [INFO] [stdout] 68 + } [INFO] [stdout] 69 + // let swap_ix = anchor_lang::prelude::borsh::try_from_slice_with_schema::(&data.unwrap()); [INFO] [stdout] 70 + // //let swap_ix = solana_sdk::borsh0_10::try_from_slice_unchecked::(&data.unwrap()); [INFO] [stdout] 71 + // println!("Parsed Jupiter V6 Swap Instruction: {:?}", swap_ix); [INFO] [stdout] 72 + // match swap_ix { [INFO] [stdout] 73 + // Ok(swap_instruction) => { [INFO] [stdout] 74 + // swap_instructions.push( [INFO] [stdout] 75 + // swap_instruction [INFO] [stdout] 76 + // ) [INFO] [stdout] 77 + // }, [INFO] [stdout] 78 + // Err(_) => { [INFO] [stdout] 79 + [INFO] [stdout] 80 + // } [INFO] [stdout] 81 + // } [INFO] [stdout] 82 + } [INFO] [stdout] 83 + } [INFO] [stdout] 84 + } [INFO] [stdout] 85 + } [INFO] [stdout] 86 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `impl` can be derived [INFO] [stdout] --> src/handle/handle_swap_item.rs:110:1 [INFO] [stdout] | [INFO] [stdout] 110 | / impl Default for Pnl { [INFO] [stdout] 111 | | fn default() -> Self { [INFO] [stdout] 112 | | Pnl { [INFO] [stdout] 113 | | average_cost: None, [INFO] [stdout] ... | [INFO] [stdout] 119 | | } [INFO] [stdout] | |_^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#derivable_impls [INFO] [stdout] = note: `#[warn(clippy::derivable_impls)]` on by default [INFO] [stdout] help: replace the manual implementation with a derive attribute [INFO] [stdout] | [INFO] [stdout] 6 + #[derive(Default)] [INFO] [stdout] 7 | pub struct Pnl { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/tx/post_balance.rs:22:17 [INFO] [stdout] | [INFO] [stdout] 22 | / if let OptionSerializer::Some(this_user) = balance.owner.as_ref() { [INFO] [stdout] 23 | | if Pubkey::from_str_const(this_user) == *user { [INFO] [stdout] 24 | | user_balances.push( [INFO] [stdout] 25 | | UserBalanceInfo { [INFO] [stdout] ... | [INFO] [stdout] 33 | | } [INFO] [stdout] | |_________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] = note: `#[warn(clippy::collapsible_if)]` on by default [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 22 ~ if let OptionSerializer::Some(this_user) = balance.owner.as_ref() [INFO] [stdout] 23 ~ && Pubkey::from_str_const(this_user) == *user { [INFO] [stdout] 24 | user_balances.push( [INFO] [stdout] ... [INFO] [stdout] 31 | ); [INFO] [stdout] 32 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/tx/post_balance.rs:26:62 [INFO] [stdout] | [INFO] [stdout] 26 | ... user: Pubkey::from_str_const(&this_user), [INFO] [stdout] | ^^^^^^^^^^ help: change this to: `this_user` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: matching on `Some` with `ok()` is redundant [INFO] [stdout] --> src/handle/base_token.rs:80:9 [INFO] [stdout] | [INFO] [stdout] 80 | / if let Some(res) = reqwest::Client::new() [INFO] [stdout] 81 | | .get(url) [INFO] [stdout] 82 | | .send() [INFO] [stdout] 83 | | .await [INFO] [stdout] 84 | | .map_err(|e| eprintln!("Error fetching price: {}", e)) [INFO] [stdout] 85 | | .ok() { [INFO] [stdout] | |_____________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_result_ok [INFO] [stdout] help: consider matching on `Ok(res)` and removing the call to `ok` instead [INFO] [stdout] | [INFO] [stdout] 80 ~ if let Ok(res) = reqwest::Client::new() [INFO] [stdout] 81 + .get(url) [INFO] [stdout] 82 + .send() [INFO] [stdout] 83 + .await [INFO] [stdout] 84 ~ .map_err(|e| eprintln!("Error fetching price: {}", e)) { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: matching on `Some` with `ok()` is redundant [INFO] [stdout] --> src/handle/base_token.rs:116:9 [INFO] [stdout] | [INFO] [stdout] 116 | / if let Some(res) = reqwest::Client::new() [INFO] [stdout] 117 | | .get(url) [INFO] [stdout] 118 | | .send() [INFO] [stdout] 119 | | .await [INFO] [stdout] 120 | | .map_err(|e| eprintln!("Error fetching price: {}", e)) [INFO] [stdout] 121 | | .ok() { [INFO] [stdout] | |_____________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_result_ok [INFO] [stdout] help: consider matching on `Ok(res)` and removing the call to `ok` instead [INFO] [stdout] | [INFO] [stdout] 116 ~ if let Ok(res) = reqwest::Client::new() [INFO] [stdout] 117 + .get(url) [INFO] [stdout] 118 + .send() [INFO] [stdout] 119 + .await [INFO] [stdout] 120 ~ .map_err(|e| eprintln!("Error fetching price: {}", e)) { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/handle/base_token.rs:126:25 [INFO] [stdout] | [INFO] [stdout] 126 | / if let Some(parsed_price) = price.parsed.first() { [INFO] [stdout] 127 | | if let Ok(price_in_int) = parsed_price.price.price.parse::() { [INFO] [stdout] 128 | | return Some(DecimalAmount::new(price_in_int, 8)); // Assuming 6 decimals for Pyth prices [INFO] [stdout] 129 | | } [INFO] [stdout] 130 | | } [INFO] [stdout] | |_________________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 126 ~ if let Some(parsed_price) = price.parsed.first() [INFO] [stdout] 127 ~ && let Ok(price_in_int) = parsed_price.price.price.parse::() { [INFO] [stdout] 128 | return Some(DecimalAmount::new(price_in_int, 8)); // Assuming 6 decimals for Pyth prices [INFO] [stdout] 129 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary use of `get(output_mint).is_none()` [INFO] [stdout] --> src/handle/handle_tx.rs:82:33 [INFO] [stdout] | [INFO] [stdout] 82 | if token_prices.get(output_mint).is_none() { [INFO] [stdout] | -------------^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: replace it with: `!token_prices.contains_key(output_mint)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_get_then_check [INFO] [stdout] = note: `#[warn(clippy::unnecessary_get_then_check)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `__Pubkey` which implements the `Copy` trait [INFO] [stdout] --> src/handle/handle_tx.rs:85:45 [INFO] [stdout] | [INFO] [stdout] 85 | token_prices.insert(output_mint.clone(), price); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ help: try dereferencing it: `*output_mint` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary use of `get(input_mint).is_none()` [INFO] [stdout] --> src/handle/handle_tx.rs:119:33 [INFO] [stdout] | [INFO] [stdout] 119 | if token_prices.get(input_mint).is_none() { [INFO] [stdout] | -------------^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: replace it with: `!token_prices.contains_key(input_mint)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_get_then_check [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `__Pubkey` which implements the `Copy` trait [INFO] [stdout] --> src/handle/handle_tx.rs:122:45 [INFO] [stdout] | [INFO] [stdout] 122 | token_prices.insert(input_mint.clone(), price); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ help: try dereferencing it: `*input_mint` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you seem to be trying to use `match` for an equality check. Consider using `if` [INFO] [stdout] --> src/handle/handle_swap_item.rs:43:13 [INFO] [stdout] | [INFO] [stdout] 43 | / match item.sell_amount == 0.0 { [INFO] [stdout] 44 | | false => { [INFO] [stdout] 45 | | if item.sell_amount > sum_amount { [INFO] [stdout] 46 | | sum_sell_amount += sum_amount; [INFO] [stdout] ... | [INFO] [stdout] 58 | | } [INFO] [stdout] | |_____________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 43 ~ if item.sell_amount == 0.0 == false { [INFO] [stdout] 44 + if item.sell_amount > sum_amount { [INFO] [stdout] 45 + sum_sell_amount += sum_amount; [INFO] [stdout] 46 + sum_sell_usd_value += sum_amount * item.sell_usd_value / item.sell_amount; [INFO] [stdout] 47 + sum_amount = 0.0; [INFO] [stdout] 48 + } else { [INFO] [stdout] 49 + sum_sell_amount += item.sell_amount; [INFO] [stdout] 50 + sum_sell_usd_value += item.sell_usd_value; [INFO] [stdout] 51 + sum_amount -= item.sell_amount; [INFO] [stdout] 52 + } [INFO] [stdout] 53 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `to_string` applied to a type that implements `Display` in `format!` args [INFO] [stdout] --> src/handle/handle_swap_item.rs:70:21 [INFO] [stdout] | [INFO] [stdout] 70 | mint.to_string() [INFO] [stdout] | ^^^^^^^^^^^^ help: remove this [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#to_string_in_format_args [INFO] [stdout] = note: `#[warn(clippy::to_string_in_format_args)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual implementation of `Option::map` [INFO] [stdout] --> src/handle/handle_swap_item.rs:77:48 [INFO] [stdout] | [INFO] [stdout] 77 | pnl.unrealized_profit_loss_value = if let Some(price) = current_price { [INFO] [stdout] | ________________________________________________^ [INFO] [stdout] 78 | | Some(sum_amount * (price - sum_buy_usd_value / sum_buy_amount)) [INFO] [stdout] 79 | | } else { [INFO] [stdout] 80 | | None [INFO] [stdout] 81 | | }; [INFO] [stdout] | |_____________^ help: try: `current_price.map(|price| sum_amount * (price - sum_buy_usd_value / sum_buy_amount))` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_map [INFO] [stdout] = note: `#[warn(clippy::manual_map)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `impl` can be derived [INFO] [stdout] --> src/handle/handle_swap_item.rs:110:1 [INFO] [stdout] | [INFO] [stdout] 110 | / impl Default for Pnl { [INFO] [stdout] 111 | | fn default() -> Self { [INFO] [stdout] 112 | | Pnl { [INFO] [stdout] 113 | | average_cost: None, [INFO] [stdout] ... | [INFO] [stdout] 119 | | } [INFO] [stdout] | |_^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#derivable_impls [INFO] [stdout] = note: `#[warn(clippy::derivable_impls)]` on by default [INFO] [stdout] help: replace the manual implementation with a derive attribute [INFO] [stdout] | [INFO] [stdout] 6 + #[derive(Default)] [INFO] [stdout] 7 | pub struct Pnl { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] Finished `dev` profile [unoptimized + debuginfo] target(s) in 2m 26s [INFO] running `Command { std: "docker" "inspect" "f51df3aa1c74c14412b3260e13de7fb422e087c8fcfc91bc2e26692264b999f5", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "f51df3aa1c74c14412b3260e13de7fb422e087c8fcfc91bc2e26692264b999f5", kill_on_drop: false }` [INFO] [stdout] f51df3aa1c74c14412b3260e13de7fb422e087c8fcfc91bc2e26692264b999f5