[INFO] fetching crate ibflex 1.3.0... [INFO] linting ibflex-1.3.0 against nightly for clippy-nonminimal_bool-denied [INFO] extracting crate ibflex 1.3.0 into /workspace/builds/worker-6-tc1/source [INFO] started tweaking crates.io crate ibflex 1.3.0 [INFO] finished tweaking crates.io crate ibflex 1.3.0 [INFO] tweaked toml for crates.io crate ibflex 1.3.0 written to /workspace/builds/worker-6-tc1/source/Cargo.toml [INFO] validating manifest of crates.io crate ibflex 1.3.0 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 crates.io crate ibflex 1.3.0 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 serde-xml-rs v0.6.0 [INFO] [stderr] Downloaded test-log v0.2.12 [INFO] [stderr] Downloaded borsh-schema-derive-internal v0.10.3 [INFO] [stderr] Downloaded bytecheck v0.6.11 [INFO] [stderr] Downloaded predicates-core v1.0.6 [INFO] [stderr] Downloaded predicates-tree v1.0.9 [INFO] [stderr] Downloaded borsh-derive v0.10.3 [INFO] [stderr] Downloaded borsh-derive-internal v0.10.3 [INFO] [stderr] Downloaded cli_runner v0.2.1 [INFO] [stderr] Downloaded as-symbols v0.5.0 [INFO] [stderr] Downloaded env_logger v0.10.0 [INFO] [stderr] Downloaded is-terminal v0.4.8 [INFO] [stderr] Downloaded rstest_macros v0.18.2 [INFO] [stderr] Downloaded rkyv v0.7.42 [INFO] [stderr] Downloaded ahash v0.8.3 [INFO] [stderr] Downloaded rust_decimal v1.32.0 [INFO] [stderr] Downloaded serde_json v1.0.99 [INFO] [stderr] Downloaded uuid v1.4.0 [INFO] [stderr] Downloaded socket2 v0.5.4 [INFO] [stderr] Downloaded relative-path v1.9.0 [INFO] [stderr] Downloaded rstest v0.18.2 [INFO] [stderr] Downloaded borsh v0.10.3 [INFO] [stderr] Downloaded rkyv_derive v0.7.42 [INFO] [stderr] Downloaded predicates v3.0.3 [INFO] [stderr] Downloaded assert_cmd v2.0.12 [INFO] [stderr] Downloaded bstr v1.5.0 [INFO] [stderr] Downloaded rustix v0.38.1 [INFO] [stderr] Downloaded rustix v0.37.21 [INFO] [stderr] Downloaded futures-timer v3.0.2 [INFO] [stderr] Downloaded semver v1.0.17 [INFO] [stderr] Downloaded rend v0.4.0 [INFO] [stderr] Downloaded xml-rs v0.8.14 [INFO] [stderr] Downloaded bytecheck_derive v0.6.11 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-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] a4e9853d4c202d75774627a277a4ec7c8708fc6311cb93f991b72646e9fce775 [INFO] running `Command { std: "docker" "start" "-a" "a4e9853d4c202d75774627a277a4ec7c8708fc6311cb93f991b72646e9fce775", kill_on_drop: false }` [INFO] running `Command { std: "docker" "inspect" "a4e9853d4c202d75774627a277a4ec7c8708fc6311cb93f991b72646e9fce775", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "a4e9853d4c202d75774627a277a4ec7c8708fc6311cb93f991b72646e9fce775", kill_on_drop: false }` [INFO] [stdout] a4e9853d4c202d75774627a277a4ec7c8708fc6311cb93f991b72646e9fce775 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-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] 98d2d6f99d9d21e408417eb778d6a9fcc5956df1b80463a543dc852f97bc9eff [INFO] running `Command { std: "docker" "start" "-a" "98d2d6f99d9d21e408417eb778d6a9fcc5956df1b80463a543dc852f97bc9eff", kill_on_drop: false }` [INFO] [stderr] Compiling proc-macro2 v1.0.67 [INFO] [stderr] Compiling unicode-ident v1.0.9 [INFO] [stderr] Compiling quote v1.0.29 [INFO] [stderr] Compiling libc v0.2.147 [INFO] [stderr] Checking once_cell v1.18.0 [INFO] [stderr] Compiling futures-core v0.3.28 [INFO] [stderr] Compiling futures-task v0.3.28 [INFO] [stderr] Checking futures-sink v0.3.28 [INFO] [stderr] Compiling pkg-config v0.3.27 [INFO] [stderr] Compiling futures-channel v0.3.28 [INFO] [stderr] Compiling futures-util v0.3.28 [INFO] [stderr] Compiling serde v1.0.188 [INFO] [stderr] Checking futures-io v0.3.28 [INFO] [stderr] Checking log v0.4.20 [INFO] [stderr] Compiling openssl v0.10.55 [INFO] [stderr] Checking http v0.2.9 [INFO] [stderr] Checking anstyle v1.0.1 [INFO] [stderr] Compiling semver v1.0.17 [INFO] [stderr] Compiling rustix v0.38.1 [INFO] [stderr] Compiling native-tls v0.2.11 [INFO] [stderr] Compiling num-traits v0.2.15 [INFO] [stderr] Checking percent-encoding v2.3.0 [INFO] [stderr] Checking linux-raw-sys v0.4.3 [INFO] [stderr] Checking bitflags v2.3.3 [INFO] [stderr] Checking openssl-probe v0.1.5 [INFO] [stderr] Checking want v0.3.1 [INFO] [stderr] Checking anstyle-parse v0.2.1 [INFO] [stderr] Checking form_urlencoded v1.2.0 [INFO] [stderr] Checking tracing-core v0.1.31 [INFO] [stderr] Checking unicode-normalization v0.1.22 [INFO] [stderr] Checking aho-corasick v1.0.2 [INFO] [stderr] Compiling serde_json v1.0.99 [INFO] [stderr] Compiling thiserror v1.0.40 [INFO] [stderr] Compiling doc-comment v0.3.3 [INFO] [stderr] Checking predicates-core v1.0.6 [INFO] [stderr] Compiling openssl-sys v0.9.90 [INFO] [stderr] Compiling anyhow v1.0.75 [INFO] [stderr] Checking either v1.8.1 [INFO] [stderr] Checking unicode-bidi v0.3.13 [INFO] [stderr] Checking regex-syntax v0.7.2 [INFO] [stderr] Checking tracing v0.1.37 [INFO] [stderr] Compiling rustc_version v0.4.0 [INFO] [stderr] Checking anstream v0.5.0 [INFO] [stderr] Checking itertools v0.10.5 [INFO] [stderr] Checking csv-core v0.1.10 [INFO] [stderr] Checking num_cpus v1.16.0 [INFO] [stderr] Compiling syn v2.0.37 [INFO] [stderr] Checking mio v0.8.8 [INFO] [stderr] Checking socket2 v0.5.4 [INFO] [stderr] Checking socket2 v0.4.9 [INFO] [stderr] Checking idna v0.4.0 [INFO] [stderr] Compiling memchr v2.5.0 [INFO] [stderr] Checking clap_lex v0.5.0 [INFO] [stderr] Checking termtree v0.4.1 [INFO] [stderr] Checking http-body v0.4.5 [INFO] [stderr] Checking difflib v0.4.0 [INFO] [stderr] Checking termcolor v1.2.0 [INFO] [stderr] Compiling rust_decimal v1.32.0 [INFO] [stderr] Checking bstr v1.5.0 [INFO] [stderr] Checking clap_builder v4.4.4 [INFO] [stderr] Checking predicates-tree v1.0.9 [INFO] [stderr] Compiling rstest_macros v0.18.2 [INFO] [stderr] Checking wait-timeout v0.2.0 [INFO] [stderr] Checking encoding_rs v0.8.32 [INFO] [stderr] Checking base64 v0.21.2 [INFO] [stderr] Checking shell-words v1.1.0 [INFO] [stderr] Checking xml-rs v0.8.14 [INFO] [stderr] Checking is-terminal v0.4.8 [INFO] [stderr] Checking ipnet v2.8.0 [INFO] [stderr] Checking iana-time-zone v0.1.57 [INFO] [stderr] Checking arrayvec v0.7.4 [INFO] [stderr] Checking cli_runner v0.2.1 [INFO] [stderr] Compiling relative-path v1.9.0 [INFO] [stderr] Checking url v2.4.0 [INFO] [stderr] Compiling syn v1.0.109 [INFO] [stderr] Checking futures-timer v3.0.2 [INFO] [stderr] Checking predicates v3.0.3 [INFO] [stderr] Checking chrono v0.4.31 [INFO] [stderr] Checking regex v1.8.4 [INFO] [stderr] Checking assert_cmd v2.0.12 [INFO] [stderr] Checking env_logger v0.10.0 [INFO] [stderr] Compiling serde_derive v1.0.188 [INFO] [stderr] Compiling futures-macro v0.3.28 [INFO] [stderr] Compiling tokio-macros v2.1.0 [INFO] [stderr] Compiling openssl-macros v0.1.1 [INFO] [stderr] Compiling thiserror-impl v1.0.40 [INFO] [stderr] Compiling clap_derive v4.4.2 [INFO] [stderr] Checking tokio v1.32.0 [INFO] [stderr] Compiling test-log v0.2.12 [INFO] [stderr] Checking clap v4.4.4 [INFO] [stderr] Checking futures-executor v0.3.28 [INFO] [stderr] Checking futures v0.3.28 [INFO] [stderr] Checking rstest v0.18.2 [INFO] [stderr] Checking tokio-util v0.7.8 [INFO] [stderr] Checking tokio-native-tls v0.3.1 [INFO] [stderr] Checking h2 v0.3.20 [INFO] [stderr] Checking csv v1.2.2 [INFO] [stderr] Checking serde_urlencoded v0.7.1 [INFO] [stderr] Checking serde-xml-rs v0.6.0 [INFO] [stderr] Checking as-symbols v0.5.0 [INFO] [stderr] Checking hyper v0.14.27 [INFO] [stderr] Checking hyper-tls v0.5.0 [INFO] [stderr] Checking reqwest v0.11.18 [INFO] [stderr] Checking ibflex v1.3.0 (/opt/rustwide/workdir) [INFO] [stdout] warning: empty line after doc comment [INFO] [stdout] --> src/ledger_reg_output_parser.rs:12:1 [INFO] [stdout] | [INFO] [stdout] 12 | / /** [INFO] [stdout] 13 | | * Ledger Register row. [INFO] [stdout] 14 | | */ [INFO] [stdout] 15 | | // pub struct RegisterRow {} [INFO] [stdout] 16 | | [INFO] [stdout] | |_^ [INFO] [stdout] ... [INFO] [stdout] 21 | pub fn clean_up_register_output(lines: Vec<&str>) -> Vec { [INFO] [stdout] | ------------------------------- the comment documents this function [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#empty_line_after_doc_comments [INFO] [stdout] = note: `#[warn(clippy::empty_line_after_doc_comments)]` on by default [INFO] [stdout] = help: if the empty line is unintentional, remove it [INFO] [stdout] help: if the doc comment should not document function `clean_up_register_output` then comment it out [INFO] [stdout] | [INFO] [stdout] 12 - /** [INFO] [stdout] 12 + /* [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant field names in struct initialization [INFO] [stdout] --> src/ledger_reg_output_parser.rs:237:13 [INFO] [stdout] | [INFO] [stdout] 237 | date: date, [INFO] [stdout] | ^^^^^^^^^^ help: replace it with: `date` [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: empty line after doc comment [INFO] [stdout] --> src/ledger_reg_output_parser.rs:12:1 [INFO] [stdout] | [INFO] [stdout] 12 | / /** [INFO] [stdout] 13 | | * Ledger Register row. [INFO] [stdout] 14 | | */ [INFO] [stdout] 15 | | // pub struct RegisterRow {} [INFO] [stdout] 16 | | [INFO] [stdout] | |_^ [INFO] [stdout] ... [INFO] [stdout] 21 | pub fn clean_up_register_output(lines: Vec<&str>) -> Vec { [INFO] [stdout] | ------------------------------- the comment documents this function [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#empty_line_after_doc_comments [INFO] [stdout] = note: `#[warn(clippy::empty_line_after_doc_comments)]` on by default [INFO] [stdout] = help: if the empty line is unintentional, remove it [INFO] [stdout] help: if the doc comment should not document function `clean_up_register_output` then comment it out [INFO] [stdout] | [INFO] [stdout] 12 - /** [INFO] [stdout] 12 + /* [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: length comparison to zero [INFO] [stdout] --> src/compare.rs:36:8 [INFO] [stdout] | [INFO] [stdout] 36 | if ib_txs.len() == 0 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `ib_txs.is_empty()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stdout] = note: `#[warn(clippy::len_zero)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&Vec` instead of `&[_]` involves a new object where a slice will do [INFO] [stdout] --> src/compare.rs:122:31 [INFO] [stdout] | [INFO] [stdout] 122 | fn get_oldest_ib_date(ib_txs: &Vec, use_effective_date: bool) -> String { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stdout] = note: `#[warn(clippy::ptr_arg)]` on by default [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 122 - fn get_oldest_ib_date(ib_txs: &Vec, use_effective_date: bool) -> String { [INFO] [stdout] 122 + fn get_oldest_ib_date(ib_txs: &[CommonTransaction], use_effective_date: bool) -> String { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/compare.rs:130:48 [INFO] [stdout] | [INFO] [stdout] 130 | .min_by_key(|ibtx| get_comparison_date(&ibtx, use_effective_date)) [INFO] [stdout] | ^^^^^ help: change this to: `ibtx` [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: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/compare.rs:135:25 [INFO] [stdout] | [INFO] [stdout] 135 | get_comparison_date(&oldest_date_record, use_effective_date) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ help: change this to: `oldest_date_record` [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: redundant closure [INFO] [stdout] --> src/compare.rs:152:14 [INFO] [stdout] | [INFO] [stdout] 152 | .map(|sym| map_symbols(sym)) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ help: replace the closure with the function itself: `map_symbols` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stdout] = note: `#[warn(clippy::redundant_closure)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this boolean expression can be simplified [INFO] [stdout] --> src/compare.rs:309:17 [INFO] [stdout] | [INFO] [stdout] 309 | assert!(!actual.is_err()); [INFO] [stdout] | ^^^^^^^^^^^^^^^^ help: try: `actual.is_ok()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#nonminimal_bool [INFO] [stdout] = note: `#[warn(clippy::nonminimal_bool)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual implementation of `Option::map` [INFO] [stdout] --> src/download.rs:28:20 [INFO] [stdout] | [INFO] [stdout] 28 | token: match token { [INFO] [stdout] | ____________________^ [INFO] [stdout] 29 | | Some(tkn) => Some(tkn.to_owned()), [INFO] [stdout] 30 | | None => None, [INFO] [stdout] 31 | | }, [INFO] [stdout] | |_____________^ help: try: `token.as_ref().map(|tkn| tkn.to_owned())` [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: length comparison to zero [INFO] [stdout] --> src/compare.rs:36:8 [INFO] [stdout] | [INFO] [stdout] 36 | if ib_txs.len() == 0 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `ib_txs.is_empty()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stdout] = note: `#[warn(clippy::len_zero)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this assertion is always `false` [INFO] [stdout] --> src/download.rs:147:9 [INFO] [stdout] | [INFO] [stdout] 147 | assert!(false); [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: replace this with `panic!()` or `unreachable!()` [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assertions_on_constants [INFO] [stdout] = note: `#[warn(clippy::assertions_on_constants)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&Vec` instead of `&[_]` involves a new object where a slice will do [INFO] [stdout] --> src/compare.rs:122:31 [INFO] [stdout] | [INFO] [stdout] 122 | fn get_oldest_ib_date(ib_txs: &Vec, use_effective_date: bool) -> String { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stdout] = note: `#[warn(clippy::ptr_arg)]` on by default [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 122 - fn get_oldest_ib_date(ib_txs: &Vec, use_effective_date: bool) -> String { [INFO] [stdout] 122 + fn get_oldest_ib_date(ib_txs: &[CommonTransaction], use_effective_date: bool) -> String { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/compare.rs:130:48 [INFO] [stdout] | [INFO] [stdout] 130 | .min_by_key(|ibtx| get_comparison_date(&ibtx, use_effective_date)) [INFO] [stdout] | ^^^^^ help: change this to: `ibtx` [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: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/compare.rs:135:25 [INFO] [stdout] | [INFO] [stdout] 135 | get_comparison_date(&oldest_date_record, use_effective_date) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ help: change this to: `oldest_date_record` [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: redundant closure [INFO] [stdout] --> src/compare.rs:152:14 [INFO] [stdout] | [INFO] [stdout] 152 | .map(|sym| map_symbols(sym)) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ help: replace the closure with the function itself: `map_symbols` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stdout] = note: `#[warn(clippy::redundant_closure)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual implementation of `Option::map` [INFO] [stdout] --> src/download.rs:28:20 [INFO] [stdout] | [INFO] [stdout] 28 | token: match token { [INFO] [stdout] | ____________________^ [INFO] [stdout] 29 | | Some(tkn) => Some(tkn.to_owned()), [INFO] [stdout] 30 | | None => None, [INFO] [stdout] 31 | | }, [INFO] [stdout] | |_____________^ help: try: `token.as_ref().map(|tkn| tkn.to_owned())` [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: called `unwrap` on `have_tx` after checking its variant with `is_some` [INFO] [stdout] --> src/ledger_print_output_parser.rs:44:18 [INFO] [stdout] | [INFO] [stdout] 32 | if have_tx.is_some() { [INFO] [stdout] | -------------------- help: try: `if let Some() = have_tx` [INFO] [stdout] ... [INFO] [stdout] 44 | tx = have_tx.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: comparison to empty slice [INFO] [stdout] --> src/ledger_print_output_parser.rs:25:12 [INFO] [stdout] | [INFO] [stdout] 25 | if trimmed == "" { [INFO] [stdout] | ^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `trimmed.is_empty()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#comparison_to_empty [INFO] [stdout] = note: `#[warn(clippy::comparison_to_empty)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: comparison to empty slice [INFO] [stdout] --> src/ledger_print_output_parser.rs:36:16 [INFO] [stdout] | [INFO] [stdout] 36 | if tx.payee != "" { [INFO] [stdout] | ^^^^^^^^^^^^^^ help: using `!is_empty` is clearer and more explicit: `!tx.payee.is_empty()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#comparison_to_empty [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: comparison to empty slice [INFO] [stdout] --> src/ledger_print_output_parser.rs:53:12 [INFO] [stdout] | [INFO] [stdout] 53 | if posting.currency != "" { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ help: using `!is_empty` is clearer and more explicit: `!posting.currency.is_empty()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#comparison_to_empty [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this block may be rewritten with the `?` operator [INFO] [stdout] --> src/ledger_print_output_parser.rs:123:5 [INFO] [stdout] | [INFO] [stdout] 123 | / if date.is_none() { [INFO] [stdout] 124 | | return None; [INFO] [stdout] 125 | | } [INFO] [stdout] | |_____^ help: replace it with: `date?;` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#question_mark [INFO] [stdout] = note: `#[warn(clippy::question_mark)]` 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/ledger_print_output_parser.rs:156:44 [INFO] [stdout] | [INFO] [stdout] 156 | let result = NaiveDate::parse_from_str(&date_string, ISO_DATE_FORMAT); [INFO] [stdout] | ^^^^^^^^^^^^ help: change this to: `date_string` [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: manual implementation of `ok` [INFO] [stdout] --> src/ledger_print_output_parser.rs:157:5 [INFO] [stdout] | [INFO] [stdout] 157 | / match result { [INFO] [stdout] 158 | | Ok(date) => Some(date), [INFO] [stdout] 159 | | Err(_) => None, [INFO] [stdout] 160 | | } [INFO] [stdout] | |_____^ help: replace with: `result.ok()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_ok_err [INFO] [stdout] = note: `#[warn(clippy::manual_ok_err)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `unwrap` on `have_amount` after checking its variant with `is_some` [INFO] [stdout] --> src/ledger_print_output_parser.rs:176:28 [INFO] [stdout] | [INFO] [stdout] 175 | if have_amount.is_some() { [INFO] [stdout] | ------------------------ help: try: `if let Some() = have_amount` [INFO] [stdout] 176 | let amount_index = have_amount.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] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/ledger_print_output_parser.rs:190:39 [INFO] [stdout] | [INFO] [stdout] 190 | tx.amount = Decimal::from_str(&amount_parts[0]).expect("amount value"); [INFO] [stdout] | ^^^^^^^^^^^^^^^^ help: change this to: `amount_parts[0]` [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: called `unwrap` on `have_tx` after checking its variant with `is_some` [INFO] [stdout] --> src/ledger_print_output_parser.rs:44:18 [INFO] [stdout] | [INFO] [stdout] 32 | if have_tx.is_some() { [INFO] [stdout] | -------------------- help: try: `if let Some() = have_tx` [INFO] [stdout] ... [INFO] [stdout] 44 | tx = have_tx.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: comparison to empty slice [INFO] [stdout] --> src/ledger_print_output_parser.rs:25:12 [INFO] [stdout] | [INFO] [stdout] 25 | if trimmed == "" { [INFO] [stdout] | ^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `trimmed.is_empty()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#comparison_to_empty [INFO] [stdout] = note: `#[warn(clippy::comparison_to_empty)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: comparison to empty slice [INFO] [stdout] --> src/ledger_print_output_parser.rs:36:16 [INFO] [stdout] | [INFO] [stdout] 36 | if tx.payee != "" { [INFO] [stdout] | ^^^^^^^^^^^^^^ help: using `!is_empty` is clearer and more explicit: `!tx.payee.is_empty()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#comparison_to_empty [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: comparison to empty slice [INFO] [stdout] --> src/ledger_print_output_parser.rs:53:12 [INFO] [stdout] | [INFO] [stdout] 53 | if posting.currency != "" { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ help: using `!is_empty` is clearer and more explicit: `!posting.currency.is_empty()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#comparison_to_empty [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this block may be rewritten with the `?` operator [INFO] [stdout] --> src/ledger_print_output_parser.rs:123:5 [INFO] [stdout] | [INFO] [stdout] 123 | / if date.is_none() { [INFO] [stdout] 124 | | return None; [INFO] [stdout] 125 | | } [INFO] [stdout] | |_____^ help: replace it with: `date?;` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#question_mark [INFO] [stdout] = note: `#[warn(clippy::question_mark)]` 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/ledger_print_output_parser.rs:156:44 [INFO] [stdout] | [INFO] [stdout] 156 | let result = NaiveDate::parse_from_str(&date_string, ISO_DATE_FORMAT); [INFO] [stdout] | ^^^^^^^^^^^^ help: change this to: `date_string` [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: manual implementation of `ok` [INFO] [stdout] --> src/ledger_print_output_parser.rs:157:5 [INFO] [stdout] | [INFO] [stdout] 157 | / match result { [INFO] [stdout] 158 | | Ok(date) => Some(date), [INFO] [stdout] 159 | | Err(_) => None, [INFO] [stdout] 160 | | } [INFO] [stdout] | |_____^ help: replace with: `result.ok()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_ok_err [INFO] [stdout] = note: `#[warn(clippy::manual_ok_err)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `unwrap` on `have_amount` after checking its variant with `is_some` [INFO] [stdout] --> src/ledger_print_output_parser.rs:176:28 [INFO] [stdout] | [INFO] [stdout] 175 | if have_amount.is_some() { [INFO] [stdout] | ------------------------ help: try: `if let Some() = have_amount` [INFO] [stdout] 176 | let amount_index = have_amount.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] [INFO] [stdout] [INFO] [stdout] warning: useless conversion to the same type: `chrono::NaiveDateTime` [INFO] [stdout] --> src/ledger_reg_output_parser.rs:88:9 [INFO] [stdout] | [INFO] [stdout] 88 | NaiveDateTime::from(tx_date.and_hms_opt(0, 0, 0).unwrap()) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider removing `NaiveDateTime::from()`: `tx_date.and_hms_opt(0, 0, 0).unwrap()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_conversion [INFO] [stdout] = note: `#[warn(clippy::useless_conversion)]` 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/ledger_print_output_parser.rs:190:39 [INFO] [stdout] | [INFO] [stdout] 190 | tx.amount = Decimal::from_str(&amount_parts[0]).expect("amount value"); [INFO] [stdout] | ^^^^^^^^^^^^^^^^ help: change this to: `amount_parts[0]` [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: useless conversion to the same type: `chrono::NaiveDateTime` [INFO] [stdout] --> src/ledger_reg_output_parser.rs:88:9 [INFO] [stdout] | [INFO] [stdout] 88 | NaiveDateTime::from(tx_date.and_hms_opt(0, 0, 0).unwrap()) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider removing `NaiveDateTime::from()`: `tx_date.and_hms_opt(0, 0, 0).unwrap()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_conversion [INFO] [stdout] = note: `#[warn(clippy::useless_conversion)]` 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/ledger_runner.rs:72:39 [INFO] [stdout] | [INFO] [stdout] 72 | NaiveDate::parse_from_str(&date_value, ISO_DATE_FORMAT).expect("correct date") [INFO] [stdout] | ^^^^^^^^^^^ help: change this to: `date_value` [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: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/ledger_runner.rs:72:39 [INFO] [stdout] | [INFO] [stdout] 72 | NaiveDate::parse_from_str(&date_value, ISO_DATE_FORMAT).expect("correct date") [INFO] [stdout] | ^^^^^^^^^^^ help: change this to: `date_value` [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: this item has comments with 4 forward slashes (`////`). These look like doc comments, but they aren't [INFO] [stdout] --> src/ledger_runner.rs:154:1 [INFO] [stdout] | [INFO] [stdout] 154 | / //// [INFO] [stdout] 155 | | // Tests [INFO] [stdout] 156 | | //// [INFO] [stdout] ... | [INFO] [stdout] 159 | | mod tests { [INFO] [stdout] | |_^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#four_forward_slashes [INFO] [stdout] = note: `#[warn(clippy::four_forward_slashes)]` on by default [INFO] [stdout] help: turn these into doc comments by removing one `/` [INFO] [stdout] | [INFO] [stdout] 154 + /// [INFO] [stdout] 155 | // Tests [INFO] [stdout] 156 + /// [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: useless conversion to the same type: `std::str::SplitWhitespace<'_>` [INFO] [stdout] --> src/ledger_runner.rs:171:20 [INFO] [stdout] | [INFO] [stdout] 171 | let args = cmd [INFO] [stdout] | ____________________^ [INFO] [stdout] 172 | | .split_whitespace() [INFO] [stdout] 173 | | .into_iter() [INFO] [stdout] | |________________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_conversion [INFO] [stdout] help: consider removing `.into_iter()` [INFO] [stdout] | [INFO] [stdout] 171 ~ let args = cmd [INFO] [stdout] 172 + .split_whitespace() [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/model.rs:54:61 [INFO] [stdout] | [INFO] [stdout] 54 | let tx_date = NaiveDate::parse_from_str(&value.date_time.as_str(), ISO_DATE_FORMAT) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: change this to: `value.date_time.as_str()` [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: useless conversion to the same type: `chrono::NaiveDateTime` [INFO] [stdout] --> src/model.rs:56:21 [INFO] [stdout] | [INFO] [stdout] 56 | NaiveDateTime::from(tx_date.and_hms_opt(0, 0, 0).unwrap()) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider removing `NaiveDateTime::from()`: `tx_date.and_hms_opt(0, 0, 0).unwrap()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_conversion [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/model.rs:58:53 [INFO] [stdout] | [INFO] [stdout] 58 | 19 => NaiveDateTime::parse_from_str(&value.date_time.as_str(), "%Y-%m-%d;%H:%M:%S") [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: change this to: `value.date_time.as_str()` [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: writing `&String` instead of `&str` involves a new object where a slice will do [INFO] [stdout] --> src/model.rs:74:39 [INFO] [stdout] | [INFO] [stdout] 74 | fn get_simplified_tx_type(ib_tx_type: &String) -> String { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 74 ~ fn get_simplified_tx_type(ib_tx_type: &str) -> String { [INFO] [stdout] 75 ~ let tx_type = flex_enums::cash_action(ib_tx_type).to_owned(); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/model.rs:54:61 [INFO] [stdout] | [INFO] [stdout] 54 | let tx_date = NaiveDate::parse_from_str(&value.date_time.as_str(), ISO_DATE_FORMAT) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: change this to: `value.date_time.as_str()` [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: useless conversion to the same type: `chrono::NaiveDateTime` [INFO] [stdout] --> src/model.rs:56:21 [INFO] [stdout] | [INFO] [stdout] 56 | NaiveDateTime::from(tx_date.and_hms_opt(0, 0, 0).unwrap()) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider removing `NaiveDateTime::from()`: `tx_date.and_hms_opt(0, 0, 0).unwrap()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_conversion [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/model.rs:58:53 [INFO] [stdout] | [INFO] [stdout] 58 | 19 => NaiveDateTime::parse_from_str(&value.date_time.as_str(), "%Y-%m-%d;%H:%M:%S") [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: change this to: `value.date_time.as_str()` [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: writing `&String` instead of `&str` involves a new object where a slice will do [INFO] [stdout] --> src/model.rs:74:39 [INFO] [stdout] | [INFO] [stdout] 74 | fn get_simplified_tx_type(ib_tx_type: &String) -> String { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 74 ~ fn get_simplified_tx_type(ib_tx_type: &str) -> String { [INFO] [stdout] 75 ~ let tx_type = flex_enums::cash_action(ib_tx_type).to_owned(); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] Finished `dev` profile [unoptimized + debuginfo] target(s) in 38.30s [INFO] [stderr] warning: the following packages contain code that will be rejected by a future version of Rust: openssl v0.10.55 [INFO] [stderr] note: to see what the problems were, use the option `--future-incompat-report`, or run `cargo report future-incompatibilities --id 1` [INFO] running `Command { std: "docker" "inspect" "98d2d6f99d9d21e408417eb778d6a9fcc5956df1b80463a543dc852f97bc9eff", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "98d2d6f99d9d21e408417eb778d6a9fcc5956df1b80463a543dc852f97bc9eff", kill_on_drop: false }` [INFO] [stdout] 98d2d6f99d9d21e408417eb778d6a9fcc5956df1b80463a543dc852f97bc9eff