[INFO] cloning repository https://github.com/BoiseState/bookdata-tools [INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/BoiseState/bookdata-tools" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FBoiseState%2Fbookdata-tools", kill_on_drop: false }` [INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FBoiseState%2Fbookdata-tools'... [INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }` [INFO] [stdout] c3f11f2de3fd64ea966e85141f6ae8b74e3a5407 [INFO] linting BoiseState/bookdata-tools against nightly for clippy-nonminimal_bool-denied [INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FBoiseState%2Fbookdata-tools" "/workspace/builds/worker-4-tc1/source", kill_on_drop: false }` [INFO] [stderr] Cloning into '/workspace/builds/worker-4-tc1/source'... [INFO] [stderr] done. [INFO] started tweaking git repo https://github.com/BoiseState/bookdata-tools [INFO] finished tweaking git repo https://github.com/BoiseState/bookdata-tools [INFO] tweaked toml for git repo https://github.com/BoiseState/bookdata-tools written to /workspace/builds/worker-4-tc1/source/Cargo.toml [INFO] validating manifest of git repo https://github.com/BoiseState/bookdata-tools 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/BoiseState/bookdata-tools 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 test-log-macros v0.2.18 [INFO] [stderr] Downloaded peg-runtime v0.8.5 [INFO] [stderr] Downloaded peg v0.8.5 [INFO] [stderr] Downloaded test-log v0.2.18 [INFO] [stderr] Downloaded libz-rs-sys v0.5.2 [INFO] [stderr] Downloaded friendly v0.2.0 [INFO] [stderr] Downloaded peg-macros v0.8.5 [INFO] [stderr] Downloaded colored v1.9.4 [INFO] [stderr] Downloaded flatbuffers v25.9.23 [INFO] [stderr] Downloaded arrow-csv v57.0.0 [INFO] [stderr] Downloaded arrow-arith v57.0.0 [INFO] [stderr] Downloaded arrow v57.0.0 [INFO] [stderr] Downloaded zlib-rs v0.5.2 [INFO] [stderr] Downloaded clap_builder v4.5.52 [INFO] [stderr] Downloaded arrow-cast v57.0.0 [INFO] [stderr] Downloaded arrow-ipc v57.0.0 [INFO] [stderr] Downloaded arrow-buffer v57.0.0 [INFO] [stderr] Downloaded arrow-array v57.0.0 [INFO] [stderr] Downloaded arrow-schema v57.0.0 [INFO] [stderr] Downloaded arrow-select v57.0.0 [INFO] [stderr] Downloaded arrow-json v57.0.0 [INFO] [stderr] Downloaded arrow-ord v57.0.0 [INFO] [stderr] Downloaded arrow-string v57.0.0 [INFO] [stderr] Downloaded clap v4.5.52 [INFO] [stderr] Downloaded arrow-data v57.0.0 [INFO] [stderr] Downloaded arrow-row v57.0.0 [INFO] [stderr] Downloaded parquet v57.0.0 [INFO] [stderr] Downloaded relative-path v2.0.1 [INFO] [stderr] Downloaded happylog v0.3.0-b8 [INFO] [stderr] Downloaded parquet_derive v57.0.0 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-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] 0a6b1baa44471a3d006d86cebf290357460fcf5e5a6a1e9453f6ef9712082751 [INFO] running `Command { std: "docker" "start" "-a" "0a6b1baa44471a3d006d86cebf290357460fcf5e5a6a1e9453f6ef9712082751", kill_on_drop: false }` [INFO] running `Command { std: "docker" "inspect" "0a6b1baa44471a3d006d86cebf290357460fcf5e5a6a1e9453f6ef9712082751", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "0a6b1baa44471a3d006d86cebf290357460fcf5e5a6a1e9453f6ef9712082751", kill_on_drop: false }` [INFO] [stdout] 0a6b1baa44471a3d006d86cebf290357460fcf5e5a6a1e9453f6ef9712082751 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-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] c087cd074da10955fdf1fc91ceb0067d25c8166496786cb6565ef2d9c50aae95 [INFO] running `Command { std: "docker" "start" "-a" "c087cd074da10955fdf1fc91ceb0067d25c8166496786cb6565ef2d9c50aae95", kill_on_drop: false }` [INFO] [stderr] Checking foldhash v0.2.0 [INFO] [stderr] Compiling ahash v0.8.12 [INFO] [stderr] Checking arrow-schema v57.0.0 [INFO] [stderr] Compiling jobserver v0.1.34 [INFO] [stderr] Compiling num-traits v0.2.19 [INFO] [stderr] Checking lexical-util v1.0.7 [INFO] [stderr] Checking getrandom v0.3.4 [INFO] [stderr] Compiling serde_core v1.0.228 [INFO] [stderr] Compiling syn v2.0.110 [INFO] [stderr] Checking log v0.4.28 [INFO] [stderr] Checking chrono v0.4.42 [INFO] [stderr] Checking num-complex v0.4.6 [INFO] [stderr] Compiling flatbuffers v25.9.23 [INFO] [stderr] Checking atoi v2.0.0 [INFO] [stderr] Compiling aho-corasick v1.1.4 [INFO] [stderr] Checking zlib-rs v0.5.2 [INFO] [stderr] Checking hashbrown v0.16.0 [INFO] [stderr] Compiling portable-atomic v1.11.1 [INFO] [stderr] Compiling zstd-safe v7.2.4 [INFO] [stderr] Compiling cc v1.2.46 [INFO] [stderr] Checking csv-core v0.1.13 [INFO] [stderr] Checking is-terminal v0.4.17 [INFO] [stderr] Checking simdutf8 v0.1.5 [INFO] [stderr] Checking lexical-parse-integer v1.0.6 [INFO] [stderr] Checking lexical-write-integer v1.0.6 [INFO] [stderr] Compiling iana-time-zone v0.1.64 [INFO] [stderr] Compiling integer-encoding v3.0.4 [INFO] [stderr] Checking clap_builder v4.5.52 [INFO] [stderr] Checking colored v1.9.4 [INFO] [stderr] Checking console v0.16.1 [INFO] [stderr] Checking indexmap v2.12.0 [INFO] [stderr] Checking ordered-float v2.10.1 [INFO] [stderr] Checking getrandom v0.2.16 [INFO] [stderr] Checking lexical-write-float v1.0.6 [INFO] [stderr] Compiling rustix v1.1.2 [INFO] [stderr] Checking lexical-parse-float v1.0.6 [INFO] [stderr] Compiling num-integer v0.1.46 [INFO] [stderr] Checking libz-rs-sys v0.5.2 [INFO] [stderr] Compiling twox-hash v2.1.2 [INFO] [stderr] Compiling thrift v0.17.0 [INFO] [stderr] Checking simd-adler32 v0.3.7 [INFO] [stderr] Checking flate2 v1.1.5 [INFO] [stderr] Compiling bytes v1.11.0 [INFO] [stderr] Compiling peg-runtime v0.8.5 [INFO] [stderr] Compiling regex-automata v0.4.13 [INFO] [stderr] Compiling num-bigint v0.4.6 [INFO] [stderr] Checking lexical-core v1.0.6 [INFO] [stderr] Checking indicatif v0.18.3 [INFO] [stderr] Checking zopfli v0.8.3 [INFO] [stderr] Checking lz4_flex v0.11.5 [INFO] [stderr] Compiling peg-macros v0.8.5 [INFO] [stderr] Checking rand_core v0.6.4 [INFO] [stderr] Checking fern v0.6.2 [INFO] [stderr] Checking env_filter v0.1.4 [INFO] [stderr] Checking crossbeam-channel v0.5.15 [INFO] [stderr] Checking crossbeam-queue v0.3.12 [INFO] [stderr] Checking unsafe-libyaml v0.2.11 [INFO] [stderr] Checking serde_json v1.0.145 [INFO] [stderr] Checking csv v1.4.0 [INFO] [stderr] Checking env_logger v0.11.8 [INFO] [stderr] Checking rand v0.8.5 [INFO] [stderr] Compiling zstd-sys v2.0.16+zstd.1.5.7 [INFO] [stderr] Compiling libmimalloc-sys v0.1.44 [INFO] [stderr] Checking zip v6.0.0 [INFO] [stderr] Checking unicode-normalization v0.1.25 [INFO] [stderr] Checking friendly v0.2.0 [INFO] [stderr] Checking crossbeam v0.8.4 [INFO] [stderr] Checking quick-xml v0.38.4 [INFO] [stderr] Checking cpu-time v1.0.0 [INFO] [stderr] Checking os_pipe v1.2.3 [INFO] [stderr] Checking relative-path v2.0.1 [INFO] [stderr] Checking quickcheck v1.0.3 [INFO] [stderr] Checking peg v0.8.5 [INFO] [stderr] Checking mimalloc v0.1.48 [INFO] [stderr] Checking tempfile v3.23.0 [INFO] [stderr] Compiling zerocopy-derive v0.8.27 [INFO] [stderr] Compiling structmeta-derive v0.3.0 [INFO] [stderr] Compiling clap_derive v4.5.49 [INFO] [stderr] Compiling serde_derive v1.0.228 [INFO] [stderr] Compiling num_enum_derive v0.7.5 [INFO] [stderr] Compiling thiserror-impl v2.0.17 [INFO] [stderr] Compiling test-log-macros v0.2.18 [INFO] [stderr] Compiling enum_dispatch v0.3.13 [INFO] [stderr] Compiling regex v1.12.2 [INFO] [stderr] Checking test-log v0.2.18 [INFO] [stderr] Checking num_enum v0.7.5 [INFO] [stderr] Compiling structmeta v0.3.0 [INFO] [stderr] Checking zerocopy v0.8.27 [INFO] [stderr] Checking thiserror v2.0.17 [INFO] [stderr] Compiling parse-display-derive v0.10.0 [INFO] [stderr] Checking clap v4.5.52 [INFO] [stderr] Checking happylog v0.3.0-b8 [INFO] [stderr] Checking parse-display v0.10.0 [INFO] [stderr] Checking half v2.7.1 [INFO] [stderr] Checking zstd v0.13.3 [INFO] [stderr] Checking serde v1.0.228 [INFO] [stderr] Checking arrow-buffer v57.0.0 [INFO] [stderr] Checking arrow-data v57.0.0 [INFO] [stderr] Checking serde_yaml v0.9.34+deprecated [INFO] [stderr] Checking arrow-array v57.0.0 [INFO] [stderr] Compiling parquet v57.0.0 [INFO] [stderr] Checking arrow-select v57.0.0 [INFO] [stderr] Checking arrow-arith v57.0.0 [INFO] [stderr] Checking arrow-row v57.0.0 [INFO] [stderr] Checking arrow-cast v57.0.0 [INFO] [stderr] Checking arrow-ipc v57.0.0 [INFO] [stderr] Checking arrow-string v57.0.0 [INFO] [stderr] Checking arrow-ord v57.0.0 [INFO] [stderr] Checking arrow-csv v57.0.0 [INFO] [stderr] Checking arrow-json v57.0.0 [INFO] [stderr] Checking arrow v57.0.0 [INFO] [stderr] Compiling parquet_derive v57.0.0 [INFO] [stderr] Checking bookdata v3.0.0 (/opt/rustwide/workdir) [INFO] [stdout] warning: statics have by default a `'static` lifetime [INFO] [stdout] --> src/cleaning/isbns.rs:38:18 [INFO] [stdout] | [INFO] [stdout] 38 | static IGNORES: &'static [&'static str] = &[ [INFO] [stdout] | -^^^^^^^--------------- help: consider removing `'static`: `&[&'static str]` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_static_lifetimes [INFO] [stdout] = note: `#[warn(clippy::redundant_static_lifetimes)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: statics have by default a `'static` lifetime [INFO] [stdout] --> src/cleaning/isbns.rs:38:28 [INFO] [stdout] | [INFO] [stdout] 38 | static IGNORES: &'static [&'static str] = &[ [INFO] [stdout] | -^^^^^^^---- help: consider removing `'static`: `&str` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_static_lifetimes [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constants have by default a `'static` lifetime [INFO] [stdout] --> src/goodreads/author.rs:9:18 [INFO] [stdout] | [INFO] [stdout] 9 | const OUT_FILE: &'static str = "gr-author-info.parquet"; [INFO] [stdout] | -^^^^^^^---- help: consider removing `'static`: `&str` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_static_lifetimes [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constants have by default a `'static` lifetime [INFO] [stdout] --> src/goodreads/book.rs:12:17 [INFO] [stdout] | [INFO] [stdout] 12 | const ID_FILE: &'static str = "gr-book-ids.parquet"; [INFO] [stdout] | -^^^^^^^---- help: consider removing `'static`: `&str` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_static_lifetimes [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constants have by default a `'static` lifetime [INFO] [stdout] --> src/goodreads/book.rs:13:19 [INFO] [stdout] | [INFO] [stdout] 13 | const INFO_FILE: &'static str = "gr-book-info.parquet"; [INFO] [stdout] | -^^^^^^^---- help: consider removing `'static`: `&str` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_static_lifetimes [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constants have by default a `'static` lifetime [INFO] [stdout] --> src/goodreads/book.rs:14:21 [INFO] [stdout] | [INFO] [stdout] 14 | const SERIES_FILE: &'static str = "gr-book-series.parquet"; [INFO] [stdout] | -^^^^^^^---- help: consider removing `'static`: `&str` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_static_lifetimes [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constants have by default a `'static` lifetime [INFO] [stdout] --> src/goodreads/book.rs:15:21 [INFO] [stdout] | [INFO] [stdout] 15 | const AUTHOR_FILE: &'static str = "gr-book-authors.parquet"; [INFO] [stdout] | -^^^^^^^---- help: consider removing `'static`: `&str` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_static_lifetimes [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: statics have by default a `'static` lifetime [INFO] [stdout] --> src/cleaning/isbns.rs:38:18 [INFO] [stdout] | [INFO] [stdout] 38 | static IGNORES: &'static [&'static str] = &[ [INFO] [stdout] | -^^^^^^^--------------- help: consider removing `'static`: `&[&'static str]` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_static_lifetimes [INFO] [stdout] = note: `#[warn(clippy::redundant_static_lifetimes)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constants have by default a `'static` lifetime [INFO] [stdout] --> src/goodreads/genres.rs:11:18 [INFO] [stdout] | [INFO] [stdout] 11 | const OUT_FILE: &'static str = "gr-book-genres.parquet"; [INFO] [stdout] | -^^^^^^^---- help: consider removing `'static`: `&str` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_static_lifetimes [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: statics have by default a `'static` lifetime [INFO] [stdout] --> src/cleaning/isbns.rs:38:28 [INFO] [stdout] | [INFO] [stdout] 38 | static IGNORES: &'static [&'static str] = &[ [INFO] [stdout] | -^^^^^^^---- help: consider removing `'static`: `&str` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_static_lifetimes [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constants have by default a `'static` lifetime [INFO] [stdout] --> src/goodreads/genres.rs:12:20 [INFO] [stdout] | [INFO] [stdout] 12 | const GENRE_FILE: &'static str = "gr-genres.parquet"; [INFO] [stdout] | -^^^^^^^---- help: consider removing `'static`: `&str` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_static_lifetimes [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constants have by default a `'static` lifetime [INFO] [stdout] --> src/goodreads/review.rs:16:18 [INFO] [stdout] | [INFO] [stdout] 16 | const OUT_FILE: &'static str = "gr-reviews.parquet"; [INFO] [stdout] | -^^^^^^^---- help: consider removing `'static`: `&str` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_static_lifetimes [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constants have by default a `'static` lifetime [INFO] [stdout] --> src/goodreads/users.rs:8:17 [INFO] [stdout] | [INFO] [stdout] 8 | const UID_COL: &'static str = "user"; [INFO] [stdout] | -^^^^^^^---- help: consider removing `'static`: `&str` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_static_lifetimes [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constants have by default a `'static` lifetime [INFO] [stdout] --> src/goodreads/users.rs:9:19 [INFO] [stdout] | [INFO] [stdout] 9 | const UHASH_COL: &'static str = "user_hash"; [INFO] [stdout] | -^^^^^^^---- help: consider removing `'static`: `&str` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_static_lifetimes [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constants have by default a `'static` lifetime [INFO] [stdout] --> src/goodreads/work.rs:9:18 [INFO] [stdout] | [INFO] [stdout] 9 | const OUT_FILE: &'static str = "gr-work-info.parquet"; [INFO] [stdout] | -^^^^^^^---- help: consider removing `'static`: `&str` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_static_lifetimes [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constants have by default a `'static` lifetime [INFO] [stdout] --> src/ids/codes.rs:43:20 [INFO] [stdout] | [INFO] [stdout] 43 | const NAMESPACES: &'static [&'static NS<'static>] = &[ [INFO] [stdout] | -^^^^^^^----------------------- help: consider removing `'static`: `&[&'static NS<'static>]` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_static_lifetimes [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constants have by default a `'static` lifetime [INFO] [stdout] --> src/ids/codes.rs:43:30 [INFO] [stdout] | [INFO] [stdout] 43 | const NAMESPACES: &'static [&'static NS<'static>] = &[ [INFO] [stdout] | -^^^^^^^------------ help: consider removing `'static`: `&NS<'static>` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_static_lifetimes [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constants have by default a `'static` lifetime [INFO] [stdout] --> src/parsing/dates.rs:8:21 [INFO] [stdout] | [INFO] [stdout] 8 | const GR_DATE_FMT: &'static str = "%A %B %d %H:%M:%S %z %Y"; [INFO] [stdout] | -^^^^^^^---- help: consider removing `'static`: `&str` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_static_lifetimes [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constants have by default a `'static` lifetime [INFO] [stdout] --> src/util/unicode/tables.rs:9:21 [INFO] [stdout] | [INFO] [stdout] 9 | pub const BY_NAME: &'static [(&'static str, &'static [(char, char)])] = &[ [INFO] [stdout] | -^^^^^^^------------------------------------------ help: consider removing `'static`: `&[(&'static str, &'static [(char, char)])]` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_static_lifetimes [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constants have by default a `'static` lifetime [INFO] [stdout] --> src/util/unicode/tables.rs:9:32 [INFO] [stdout] | [INFO] [stdout] 9 | pub const BY_NAME: &'static [(&'static str, &'static [(char, char)])] = &[ [INFO] [stdout] | -^^^^^^^---- help: consider removing `'static`: `&str` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_static_lifetimes [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constants have by default a `'static` lifetime [INFO] [stdout] --> src/util/unicode/tables.rs:9:46 [INFO] [stdout] | [INFO] [stdout] 9 | pub const BY_NAME: &'static [(&'static str, &'static [(char, char)])] = &[ [INFO] [stdout] | -^^^^^^^--------------- help: consider removing `'static`: `&[(char, char)]` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_static_lifetimes [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constants have by default a `'static` lifetime [INFO] [stdout] --> src/util/unicode/tables.rs:14:29 [INFO] [stdout] | [INFO] [stdout] 14 | pub const NONSPACING_MARK: &'static [(char, char)] = &[ [INFO] [stdout] | -^^^^^^^--------------- help: consider removing `'static`: `&[(char, char)]` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_static_lifetimes [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constants have by default a `'static` lifetime [INFO] [stdout] --> src/util/unicode/tables.rs:353:30 [INFO] [stdout] | [INFO] [stdout] 353 | pub const UPPERCASE_LETTER: &'static [(char, char)] = &[ [INFO] [stdout] | -^^^^^^^--------------- help: consider removing `'static`: `&[(char, char)]` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_static_lifetimes [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constants have by default a `'static` lifetime [INFO] [stdout] --> src/goodreads/author.rs:9:18 [INFO] [stdout] | [INFO] [stdout] 9 | const OUT_FILE: &'static str = "gr-author-info.parquet"; [INFO] [stdout] | -^^^^^^^---- help: consider removing `'static`: `&str` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_static_lifetimes [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constants have by default a `'static` lifetime [INFO] [stdout] --> src/goodreads/book.rs:12:17 [INFO] [stdout] | [INFO] [stdout] 12 | const ID_FILE: &'static str = "gr-book-ids.parquet"; [INFO] [stdout] | -^^^^^^^---- help: consider removing `'static`: `&str` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_static_lifetimes [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constants have by default a `'static` lifetime [INFO] [stdout] --> src/goodreads/book.rs:13:19 [INFO] [stdout] | [INFO] [stdout] 13 | const INFO_FILE: &'static str = "gr-book-info.parquet"; [INFO] [stdout] | -^^^^^^^---- help: consider removing `'static`: `&str` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_static_lifetimes [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constants have by default a `'static` lifetime [INFO] [stdout] --> src/goodreads/book.rs:14:21 [INFO] [stdout] | [INFO] [stdout] 14 | const SERIES_FILE: &'static str = "gr-book-series.parquet"; [INFO] [stdout] | -^^^^^^^---- help: consider removing `'static`: `&str` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_static_lifetimes [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constants have by default a `'static` lifetime [INFO] [stdout] --> src/goodreads/book.rs:15:21 [INFO] [stdout] | [INFO] [stdout] 15 | const AUTHOR_FILE: &'static str = "gr-book-authors.parquet"; [INFO] [stdout] | -^^^^^^^---- help: consider removing `'static`: `&str` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_static_lifetimes [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constants have by default a `'static` lifetime [INFO] [stdout] --> src/goodreads/genres.rs:11:18 [INFO] [stdout] | [INFO] [stdout] 11 | const OUT_FILE: &'static str = "gr-book-genres.parquet"; [INFO] [stdout] | -^^^^^^^---- help: consider removing `'static`: `&str` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_static_lifetimes [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constants have by default a `'static` lifetime [INFO] [stdout] --> src/goodreads/genres.rs:12:20 [INFO] [stdout] | [INFO] [stdout] 12 | const GENRE_FILE: &'static str = "gr-genres.parquet"; [INFO] [stdout] | -^^^^^^^---- help: consider removing `'static`: `&str` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_static_lifetimes [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constants have by default a `'static` lifetime [INFO] [stdout] --> src/goodreads/review.rs:16:18 [INFO] [stdout] | [INFO] [stdout] 16 | const OUT_FILE: &'static str = "gr-reviews.parquet"; [INFO] [stdout] | -^^^^^^^---- help: consider removing `'static`: `&str` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_static_lifetimes [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constants have by default a `'static` lifetime [INFO] [stdout] --> src/goodreads/users.rs:8:17 [INFO] [stdout] | [INFO] [stdout] 8 | const UID_COL: &'static str = "user"; [INFO] [stdout] | -^^^^^^^---- help: consider removing `'static`: `&str` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_static_lifetimes [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constants have by default a `'static` lifetime [INFO] [stdout] --> src/goodreads/users.rs:9:19 [INFO] [stdout] | [INFO] [stdout] 9 | const UHASH_COL: &'static str = "user_hash"; [INFO] [stdout] | -^^^^^^^---- help: consider removing `'static`: `&str` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_static_lifetimes [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constants have by default a `'static` lifetime [INFO] [stdout] --> src/goodreads/work.rs:9:18 [INFO] [stdout] | [INFO] [stdout] 9 | const OUT_FILE: &'static str = "gr-work-info.parquet"; [INFO] [stdout] | -^^^^^^^---- help: consider removing `'static`: `&str` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_static_lifetimes [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constants have by default a `'static` lifetime [INFO] [stdout] --> src/ids/codes.rs:43:20 [INFO] [stdout] | [INFO] [stdout] 43 | const NAMESPACES: &'static [&'static NS<'static>] = &[ [INFO] [stdout] | -^^^^^^^----------------------- help: consider removing `'static`: `&[&'static NS<'static>]` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_static_lifetimes [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constants have by default a `'static` lifetime [INFO] [stdout] --> src/ids/codes.rs:43:30 [INFO] [stdout] | [INFO] [stdout] 43 | const NAMESPACES: &'static [&'static NS<'static>] = &[ [INFO] [stdout] | -^^^^^^^------------ help: consider removing `'static`: `&NS<'static>` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_static_lifetimes [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constants have by default a `'static` lifetime [INFO] [stdout] --> src/parsing/dates.rs:8:21 [INFO] [stdout] | [INFO] [stdout] 8 | const GR_DATE_FMT: &'static str = "%A %B %d %H:%M:%S %z %Y"; [INFO] [stdout] | -^^^^^^^---- help: consider removing `'static`: `&str` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_static_lifetimes [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constants have by default a `'static` lifetime [INFO] [stdout] --> src/util/unicode/tables.rs:9:21 [INFO] [stdout] | [INFO] [stdout] 9 | pub const BY_NAME: &'static [(&'static str, &'static [(char, char)])] = &[ [INFO] [stdout] | -^^^^^^^------------------------------------------ help: consider removing `'static`: `&[(&'static str, &'static [(char, char)])]` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_static_lifetimes [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constants have by default a `'static` lifetime [INFO] [stdout] --> src/util/unicode/tables.rs:9:32 [INFO] [stdout] | [INFO] [stdout] 9 | pub const BY_NAME: &'static [(&'static str, &'static [(char, char)])] = &[ [INFO] [stdout] | -^^^^^^^---- help: consider removing `'static`: `&str` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_static_lifetimes [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constants have by default a `'static` lifetime [INFO] [stdout] --> src/util/unicode/tables.rs:9:46 [INFO] [stdout] | [INFO] [stdout] 9 | pub const BY_NAME: &'static [(&'static str, &'static [(char, char)])] = &[ [INFO] [stdout] | -^^^^^^^--------------- help: consider removing `'static`: `&[(char, char)]` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_static_lifetimes [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constants have by default a `'static` lifetime [INFO] [stdout] --> src/util/unicode/tables.rs:14:29 [INFO] [stdout] | [INFO] [stdout] 14 | pub const NONSPACING_MARK: &'static [(char, char)] = &[ [INFO] [stdout] | -^^^^^^^--------------- help: consider removing `'static`: `&[(char, char)]` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_static_lifetimes [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constants have by default a `'static` lifetime [INFO] [stdout] --> src/util/unicode/tables.rs:353:30 [INFO] [stdout] | [INFO] [stdout] 353 | pub const UPPERCASE_LETTER: &'static [(char, char)] = &[ [INFO] [stdout] | -^^^^^^^--------------- help: consider removing `'static`: `&[(char, char)]` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_static_lifetimes [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `fn_name` is never read [INFO] [stdout] --> src/ids/codes.rs:17:9 [INFO] [stdout] | [INFO] [stdout] 13 | pub struct NS<'a> { [INFO] [stdout] | -- field in this struct [INFO] [stdout] ... [INFO] [stdout] 17 | pub fn_name: &'a str, [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `NAMESPACES` is never used [INFO] [stdout] --> src/ids/codes.rs:43:7 [INFO] [stdout] | [INFO] [stdout] 43 | const NAMESPACES: &'static [&'static NS<'static>] = &[ [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated function `by_name` is never used [INFO] [stdout] --> src/ids/codes.rs:105:12 [INFO] [stdout] | [INFO] [stdout] 104 | impl NS<'static> { [INFO] [stdout] | ---------------- associated function in this implementation [INFO] [stdout] 105 | pub fn by_name(name: &str) -> Option<&'static NS<'static>> { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `ns_of_book_code` is never used [INFO] [stdout] --> src/ids/codes.rs:117:8 [INFO] [stdout] | [INFO] [stdout] 117 | pub fn ns_of_book_code(code: i32) -> Option<&'static NS<'static>> { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `prefix` is never read [INFO] [stdout] --> src/marc/book_fields.rs:41:5 [INFO] [stdout] | [INFO] [stdout] 39 | pub struct BookOutput { [INFO] [stdout] | ---------- field in this struct [INFO] [stdout] 40 | n_books: u32, [INFO] [stdout] 41 | prefix: String, [INFO] [stdout] | ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the borrowed expression implements the required traits [INFO] [stdout] --> src/arrow/reader.rs:45:29 [INFO] [stdout] | [INFO] [stdout] 45 | let reader = File::open(&path)?; [INFO] [stdout] | ^^^^^ help: change this to: `path` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrows_for_generic_args [INFO] [stdout] = note: `#[warn(clippy::needless_borrows_for_generic_args)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `map(..).flatten()` on `Option` [INFO] [stdout] --> src/arrow/reader.rs:89:44 [INFO] [stdout] | [INFO] [stdout] 89 | let next = self.batch.as_mut().map(|i| i.next()).flatten(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try replacing `map` with `and_then` and remove the `.flatten()`: `and_then(|i| i.next())` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_flatten [INFO] [stdout] = note: `#[warn(clippy::map_flatten)]` 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/arrow/reader.rs:139:26 [INFO] [stdout] | [INFO] [stdout] 139 | measure_and_send(&send, Ok(batch), &meter)?; [INFO] [stdout] | ^^^^^ help: change this to: `send` [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: name `ISBN` contains a capitalized acronym [INFO] [stdout] --> src/cleaning/isbns.rs:20:12 [INFO] [stdout] | [INFO] [stdout] 20 | pub struct ISBN { [INFO] [stdout] | ^^^^ help: consider making the acronym lowercase, except the initial letter: `Isbn` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#upper_case_acronyms [INFO] [stdout] = note: `#[warn(clippy::upper_case_acronyms)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the loop variable `i` is only used to index `bytes` [INFO] [stdout] --> src/cleaning/isbns.rs:98:14 [INFO] [stdout] | [INFO] [stdout] 98 | for i in 0..bytes.len() { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stdout] = note: `#[warn(clippy::needless_range_loop)]` on by default [INFO] [stdout] help: consider using an iterator [INFO] [stdout] | [INFO] [stdout] 98 - for i in 0..bytes.len() { [INFO] [stdout] 98 + for in &bytes { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the loop variable `i` is only used to index `bytes` [INFO] [stdout] --> src/cleaning/isbns.rs:118:14 [INFO] [stdout] | [INFO] [stdout] 118 | for i in 0..bytes.len() { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stdout] help: consider using an iterator [INFO] [stdout] | [INFO] [stdout] 118 - for i in 0..bytes.len() { [INFO] [stdout] 118 + for in &bytes { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the following explicit lifetimes could be elided: 'a [INFO] [stdout] --> src/cleaning/names/mod.rs:43:13 [INFO] [stdout] | [INFO] [stdout] 43 | fn preclean<'a>(name: &'a str) -> Option<&'a str> { [INFO] [stdout] | ^^ ^^ ^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stdout] = note: `#[warn(clippy::needless_lifetimes)]` on by default [INFO] [stdout] help: elide the lifetimes [INFO] [stdout] | [INFO] [stdout] 43 - fn preclean<'a>(name: &'a str) -> Option<&'a str> { [INFO] [stdout] 43 + fn preclean(name: &str) -> Option<&str> { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the following explicit lifetimes could be elided: 'a [INFO] [stdout] --> src/cleaning/names/mod.rs:67:19 [INFO] [stdout] | [INFO] [stdout] 67 | pub fn clean_name<'a>(name: &'a str) -> String { [INFO] [stdout] | ^^ ^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stdout] help: elide the lifetimes [INFO] [stdout] | [INFO] [stdout] 67 - pub fn clean_name<'a>(name: &'a str) -> String { [INFO] [stdout] 67 + pub fn clean_name(name: &str) -> String { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the loop variable `i` is only used to index `data` [INFO] [stdout] --> src/cli/bx/extract.rs:39:18 [INFO] [stdout] | [INFO] [stdout] 39 | for i in 0..data.len() { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stdout] help: consider using an iterator [INFO] [stdout] | [INFO] [stdout] 39 - for i in 0..data.len() { [INFO] [stdout] 39 + for in &mut data { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `write!()` with a format string that ends in a single newline [INFO] [stdout] --> src/cli/bx/extract.rs:64:9 [INFO] [stdout] | [INFO] [stdout] 64 | write!(out, "user,isbn,rating\n")?; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#write_with_newline [INFO] [stdout] = note: `#[warn(clippy::write_with_newline)]` on by default [INFO] [stdout] help: use `writeln!` instead [INFO] [stdout] | [INFO] [stdout] 64 - write!(out, "user,isbn,rating\n")?; [INFO] [stdout] 64 + writeln!(out, "user,isbn,rating")?; [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual `RangeInclusive::contains` implementation [INFO] [stdout] --> src/cli/bx/extract.rs:73:29 [INFO] [stdout] | [INFO] [stdout] 73 | isbn.retain(|c| (c >= '0' && c <= '9') || c == 'X'); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ help: use: `('0'..='9').contains(&c)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_range_contains [INFO] [stdout] = note: `#[warn(clippy::manual_range_contains)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: length comparison to zero [INFO] [stdout] --> src/cli/bx/extract.rs:75:16 [INFO] [stdout] | [INFO] [stdout] 75 | if isbn.len() > 0 { [INFO] [stdout] | ^^^^^^^^^^^^^^ help: using `!is_empty` is clearer and more explicit: `!isbn.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: using `write!()` with a format string that ends in a single newline [INFO] [stdout] --> src/cli/bx/extract.rs:76:17 [INFO] [stdout] | [INFO] [stdout] 76 | write!(out, "{},{},{}\n", user, isbn, rating)?; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#write_with_newline [INFO] [stdout] help: use `writeln!` instead [INFO] [stdout] | [INFO] [stdout] 76 - write!(out, "{},{},{}\n", user, isbn, rating)?; [INFO] [stdout] 76 + writeln!(out, "{},{},{}", user, isbn, rating)?; [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the borrowed expression implements the required traits [INFO] [stdout] --> src/cli/cluster_gender/clusters.rs:70:27 [INFO] [stdout] | [INFO] [stdout] 70 | let file = File::open(&path)?; [INFO] [stdout] | ^^^^^ help: change this to: `path` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrows_for_generic_args [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of `filter_map` with an identity function [INFO] [stdout] --> src/cli/cluster_gender/clusters.rs:89:31 [INFO] [stdout] | [INFO] [stdout] 89 | ids.extend(col.iter().filter_map(identity)); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ help: try: `flatten()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#filter_map_identity [INFO] [stdout] = note: `#[warn(clippy::filter_map_identity)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the borrowed expression implements the required traits [INFO] [stdout] --> src/cli/index_names.rs:92:40 [INFO] [stdout] | [INFO] [stdout] 92 | let mut writer = TableWriter::open(&path)?; [INFO] [stdout] | ^^^^^ help: change this to: `path` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrows_for_generic_args [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you are using an explicit closure for copying elements [INFO] [stdout] --> src/cli/index_names.rs:109:33 [INFO] [stdout] | [INFO] [stdout] 109 | let mut ids: Vec = index.get(name).unwrap().iter().map(|i| *i).collect(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider calling the dedicated `copied` method: `index.get(name).unwrap().iter().copied()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_clone [INFO] [stdout] = note: `#[warn(clippy::map_clone)]` 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/cli/index_names.rs:115:40 [INFO] [stdout] | [INFO] [stdout] 115 | clean_name: clean_name(&name), [INFO] [stdout] | ^^^^^ help: change this to: `name` [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: all variants have the same prefix: `Scan` [INFO] [stdout] --> src/cli/openlib.rs:20:1 [INFO] [stdout] | [INFO] [stdout] 20 | / enum DataType { [INFO] [stdout] 21 | | /// Parse OpenLibrary works. [INFO] [stdout] 22 | | /// [INFO] [stdout] 23 | | /// Authors must be processed first. [INFO] [stdout] ... | [INFO] [stdout] 32 | | ScanAuthors(Input), [INFO] [stdout] 33 | | } [INFO] [stdout] | |_^ [INFO] [stdout] | [INFO] [stdout] = help: remove the prefixes and use full paths to the variants instead of glob imports [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#enum_variant_names [INFO] [stdout] = note: `#[warn(clippy::enum_variant_names)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this boolean expression can be simplified [INFO] [stdout] --> src/cli/openlib.rs:57:12 [INFO] [stdout] | [INFO] [stdout] 57 | if !line.is_ok() { [INFO] [stdout] | ^^^^^^^^^^^^^ help: try: `line.is_err()` [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: name `CLI` contains a capitalized acronym [INFO] [stdout] --> src/cli/mod.rs:84:12 [INFO] [stdout] | [INFO] [stdout] 84 | pub struct CLI { [INFO] [stdout] | ^^^ help: consider making the acronym lowercase, except the initial letter: `Cli` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#upper_case_acronyms [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `fn_name` is never read [INFO] [stdout] --> src/ids/codes.rs:17:9 [INFO] [stdout] | [INFO] [stdout] 13 | pub struct NS<'a> { [INFO] [stdout] | -- field in this struct [INFO] [stdout] ... [INFO] [stdout] 17 | pub fn_name: &'a str, [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated function `by_name` is never used [INFO] [stdout] --> src/ids/codes.rs:105:12 [INFO] [stdout] | [INFO] [stdout] 104 | impl NS<'static> { [INFO] [stdout] | ---------------- associated function in this implementation [INFO] [stdout] 105 | pub fn by_name(name: &str) -> Option<&'static NS<'static>> { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `prefix` is never read [INFO] [stdout] --> src/marc/book_fields.rs:41:5 [INFO] [stdout] | [INFO] [stdout] 39 | pub struct BookOutput { [INFO] [stdout] | ---------- field in this struct [INFO] [stdout] 40 | n_books: u32, [INFO] [stdout] 41 | prefix: String, [INFO] [stdout] | ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the borrowed expression implements the required traits [INFO] [stdout] --> src/arrow/reader.rs:45:29 [INFO] [stdout] | [INFO] [stdout] 45 | let reader = File::open(&path)?; [INFO] [stdout] | ^^^^^ help: change this to: `path` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrows_for_generic_args [INFO] [stdout] = note: `#[warn(clippy::needless_borrows_for_generic_args)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `map(..).flatten()` on `Option` [INFO] [stdout] --> src/arrow/reader.rs:89:44 [INFO] [stdout] | [INFO] [stdout] 89 | let next = self.batch.as_mut().map(|i| i.next()).flatten(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try replacing `map` with `and_then` and remove the `.flatten()`: `and_then(|i| i.next())` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_flatten [INFO] [stdout] = note: `#[warn(clippy::map_flatten)]` 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/arrow/reader.rs:139:26 [INFO] [stdout] | [INFO] [stdout] 139 | measure_and_send(&send, Ok(batch), &meter)?; [INFO] [stdout] | ^^^^^ help: change this to: `send` [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: name `ISBN` contains a capitalized acronym [INFO] [stdout] --> src/cleaning/isbns.rs:20:12 [INFO] [stdout] | [INFO] [stdout] 20 | pub struct ISBN { [INFO] [stdout] | ^^^^ help: consider making the acronym lowercase, except the initial letter: `Isbn` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#upper_case_acronyms [INFO] [stdout] = note: `#[warn(clippy::upper_case_acronyms)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant closure [INFO] [stdout] --> src/goodreads/book.rs:125:22 [INFO] [stdout] | [INFO] [stdout] 125 | .map(|s| clean_asin_chars(s)) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ help: replace the closure with the function itself: `clean_asin_chars` [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: redundant closure [INFO] [stdout] --> src/goodreads/book.rs:128:22 [INFO] [stdout] | [INFO] [stdout] 128 | .map(|s| clean_asin_chars(s)) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ help: replace the closure with the function itself: `clean_asin_chars` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant closure [INFO] [stdout] --> src/goodreads/book.rs:131:22 [INFO] [stdout] | [INFO] [stdout] 131 | .map(|s| clean_asin_chars(s)) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ help: replace the closure with the function itself: `clean_asin_chars` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the loop variable `i` is only used to index `bytes` [INFO] [stdout] --> src/cleaning/isbns.rs:98:14 [INFO] [stdout] | [INFO] [stdout] 98 | for i in 0..bytes.len() { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stdout] = note: `#[warn(clippy::needless_range_loop)]` on by default [INFO] [stdout] help: consider using an iterator [INFO] [stdout] | [INFO] [stdout] 98 - for i in 0..bytes.len() { [INFO] [stdout] 98 + for in &bytes { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the loop variable `i` is only used to index `bytes` [INFO] [stdout] --> src/cleaning/isbns.rs:118:14 [INFO] [stdout] | [INFO] [stdout] 118 | for i in 0..bytes.len() { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stdout] help: consider using an iterator [INFO] [stdout] | [INFO] [stdout] 118 - for i in 0..bytes.len() { [INFO] [stdout] 118 + for in &bytes { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the following explicit lifetimes could be elided: 'a [INFO] [stdout] --> src/cleaning/names/mod.rs:43:13 [INFO] [stdout] | [INFO] [stdout] 43 | fn preclean<'a>(name: &'a str) -> Option<&'a str> { [INFO] [stdout] | ^^ ^^ ^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stdout] = note: `#[warn(clippy::needless_lifetimes)]` on by default [INFO] [stdout] help: elide the lifetimes [INFO] [stdout] | [INFO] [stdout] 43 - fn preclean<'a>(name: &'a str) -> Option<&'a str> { [INFO] [stdout] 43 + fn preclean(name: &str) -> Option<&str> { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the following explicit lifetimes could be elided: 'a [INFO] [stdout] --> src/cleaning/names/mod.rs:67:19 [INFO] [stdout] | [INFO] [stdout] 67 | pub fn clean_name<'a>(name: &'a str) -> String { [INFO] [stdout] | ^^ ^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stdout] help: elide the lifetimes [INFO] [stdout] | [INFO] [stdout] 67 - pub fn clean_name<'a>(name: &'a str) -> String { [INFO] [stdout] 67 + pub fn clean_name(name: &str) -> 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/cleaning/strings.rs:19:28 [INFO] [stdout] | [INFO] [stdout] 19 | let res = norm_unicode(&text); [INFO] [stdout] | ^^^^^ help: change this to: `text` [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/cleaning/strings.rs:26:28 [INFO] [stdout] | [INFO] [stdout] 26 | let res = norm_unicode(&text); [INFO] [stdout] | ^^^^^ help: change this to: `text` [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/cleaning/strings.rs:33:28 [INFO] [stdout] | [INFO] [stdout] 33 | let res = norm_unicode(&text); [INFO] [stdout] | ^^^^^ help: change this to: `text` [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: methods called `from_*` usually take no `self` [INFO] [stdout] --> src/ids/codes.rs:93:22 [INFO] [stdout] | [INFO] [stdout] 93 | pub fn from_code(&'a self, n: i32) -> Option { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: consider choosing a less ambiguous name [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#wrong_self_convention [INFO] [stdout] = note: `#[warn(clippy::wrong_self_convention)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual implementation of `Iterator::find` [INFO] [stdout] --> src/ids/codes.rs:106:9 [INFO] [stdout] | [INFO] [stdout] 106 | / for ns in NAMESPACES { [INFO] [stdout] 107 | | if ns.name() == name { [INFO] [stdout] 108 | | return Some(ns); [INFO] [stdout] ... | [INFO] [stdout] 112 | | None [INFO] [stdout] | |____________^ help: replace with an iterator: `NAMESPACES.iter().find(|&ns| ns.name() == name).map(|v| v as _)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_find [INFO] [stdout] = note: `#[warn(clippy::manual_find)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you are using an explicit closure for copying elements [INFO] [stdout] --> src/ids/index.rs:102:9 [INFO] [stdout] | [INFO] [stdout] 102 | self.map.get(key).map(|i| *i) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider calling the dedicated `copied` method: `self.map.get(key).copied()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_clone [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the loop variable `i` is only used to index `data` [INFO] [stdout] --> src/cli/bx/extract.rs:39:18 [INFO] [stdout] | [INFO] [stdout] 39 | for i in 0..data.len() { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stdout] help: consider using an iterator [INFO] [stdout] | [INFO] [stdout] 39 - for i in 0..data.len() { [INFO] [stdout] 39 + for in &mut data { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `write!()` with a format string that ends in a single newline [INFO] [stdout] --> src/cli/bx/extract.rs:64:9 [INFO] [stdout] | [INFO] [stdout] 64 | write!(out, "user,isbn,rating\n")?; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#write_with_newline [INFO] [stdout] = note: `#[warn(clippy::write_with_newline)]` on by default [INFO] [stdout] help: use `writeln!` instead [INFO] [stdout] | [INFO] [stdout] 64 - write!(out, "user,isbn,rating\n")?; [INFO] [stdout] 64 + writeln!(out, "user,isbn,rating")?; [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: explicit call to `.into_iter()` in function argument accepting `IntoIterator` [INFO] [stdout] --> src/ids/index.rs:195:44 [INFO] [stdout] | [INFO] [stdout] 195 | for pair in ic.into_iter().zip(kc.into_iter()) { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] note: this parameter accepts any `IntoIterator`, so you don't need to call `.into_iter()` [INFO] [stdout] --> /rustc/3645249d79dfb136b5d8de3ce153d19d6698d92d/library/core/src/iter/traits/iterator.rs:629:11 [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] help: consider removing the `.into_iter()` [INFO] [stdout] | [INFO] [stdout] 195 - for pair in ic.into_iter().zip(kc.into_iter()) { [INFO] [stdout] 195 + for pair in ic.into_iter().zip(&*kc) { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual `RangeInclusive::contains` implementation [INFO] [stdout] --> src/cli/bx/extract.rs:73:29 [INFO] [stdout] | [INFO] [stdout] 73 | isbn.retain(|c| (c >= '0' && c <= '9') || c == 'X'); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ help: use: `('0'..='9').contains(&c)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_range_contains [INFO] [stdout] = note: `#[warn(clippy::manual_range_contains)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: length comparison to zero [INFO] [stdout] --> src/cli/bx/extract.rs:75:16 [INFO] [stdout] | [INFO] [stdout] 75 | if isbn.len() > 0 { [INFO] [stdout] | ^^^^^^^^^^^^^^ help: using `!is_empty` is clearer and more explicit: `!isbn.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: using `write!()` with a format string that ends in a single newline [INFO] [stdout] --> src/cli/bx/extract.rs:76:17 [INFO] [stdout] | [INFO] [stdout] 76 | write!(out, "{},{},{}\n", user, isbn, rating)?; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#write_with_newline [INFO] [stdout] help: use `writeln!` instead [INFO] [stdout] | [INFO] [stdout] 76 - write!(out, "{},{},{}\n", user, isbn, rating)?; [INFO] [stdout] 76 + writeln!(out, "{},{},{}", user, isbn, rating)?; [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: length comparison to zero [INFO] [stdout] --> src/io/object/chunks.rs:84:12 [INFO] [stdout] | [INFO] [stdout] 84 | if self.chunk.len() > 0 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ help: using `!is_empty` is clearer and more explicit: `!self.chunk.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] [INFO] [stdout] [INFO] [stdout] warning: current MSRV (Minimum Supported Rust Version) is `1.59.0` but this item is stable since `1.63.0` [INFO] [stdout] --> src/io/object/thread.rs:16:12 [INFO] [stdout] | [INFO] [stdout] 16 | Scoped(ScopedJoinHandle<'scope, Result>), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#incompatible_msrv [INFO] [stdout] = note: `#[warn(clippy::incompatible_msrv)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: current MSRV (Minimum Supported Rust Version) is `1.59.0` but this item is stable since `1.63.0` [INFO] [stdout] --> src/io/object/thread.rs:87:24 [INFO] [stdout] | [INFO] [stdout] 87 | scope: &'scope Scope<'scope, 'env>, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#incompatible_msrv [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: current MSRV (Minimum Supported Rust Version) is `1.59.0` but this item is stable since `1.63.0` [INFO] [stdout] --> src/io/object/thread.rs:99:23 [INFO] [stdout] | [INFO] [stdout] 99 | let h = scope.spawn(move || ferry(receiver, thunk()?, rpb)); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#incompatible_msrv [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: returning the result of a `let` binding from a block [INFO] [stdout] --> src/io/object/thread.rs:181:9 [INFO] [stdout] | [INFO] [stdout] 177 | / let res = match self.handle { [INFO] [stdout] 178 | | WorkHandle::Static(h) => h.join().map_err(std::panic::resume_unwind)?, [INFO] [stdout] 179 | | WorkHandle::Scoped(h) => h.join().map_err(std::panic::resume_unwind)?, [INFO] [stdout] 180 | | }; [INFO] [stdout] | |__________- unnecessary `let` binding [INFO] [stdout] 181 | res [INFO] [stdout] | ^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#let_and_return [INFO] [stdout] = note: `#[warn(clippy::let_and_return)]` on by default [INFO] [stdout] help: return the expression directly [INFO] [stdout] | [INFO] [stdout] 177 ~ [INFO] [stdout] 178 ~ match self.handle { [INFO] [stdout] 179 + WorkHandle::Static(h) => h.join().map_err(std::panic::resume_unwind)?, [INFO] [stdout] 180 + WorkHandle::Scoped(h) => h.join().map_err(std::panic::resume_unwind)?, [INFO] [stdout] 181 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: current MSRV (Minimum Supported Rust Version) is `1.59.0` but this item is stable since `1.63.0` [INFO] [stdout] --> src/io/object/thread.rs:179:40 [INFO] [stdout] | [INFO] [stdout] 179 | WorkHandle::Scoped(h) => h.join().map_err(std::panic::resume_unwind)?, [INFO] [stdout] | ^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#incompatible_msrv [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the borrowed expression implements the required traits [INFO] [stdout] --> src/layout/path.rs:25:33 [INFO] [stdout] | [INFO] [stdout] 25 | let path = resolve_path(&self)?; [INFO] [stdout] | ^^^^^ help: change this to: `self` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrows_for_generic_args [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: current MSRV (Minimum Supported Rust Version) is `1.59.0` but this item is stable since `1.63.0` [INFO] [stdout] --> src/layout/workdir.rs:11:12 [INFO] [stdout] | [INFO] [stdout] 11 | if dvc.try_exists()? { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#incompatible_msrv [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: current MSRV (Minimum Supported Rust Version) is `1.59.0` but this item is stable since `1.63.0` [INFO] [stdout] --> src/layout/workdir.rs:13:19 [INFO] [stdout] | [INFO] [stdout] 13 | if config.try_exists()? { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#incompatible_msrv [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the borrowed expression implements the required traits [INFO] [stdout] --> src/cli/cluster_gender/clusters.rs:70:27 [INFO] [stdout] | [INFO] [stdout] 70 | let file = File::open(&path)?; [INFO] [stdout] | ^^^^^ help: change this to: `path` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrows_for_generic_args [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of `filter_map` with an identity function [INFO] [stdout] --> src/cli/cluster_gender/clusters.rs:89:31 [INFO] [stdout] | [INFO] [stdout] 89 | ids.extend(col.iter().filter_map(identity)); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ help: try: `flatten()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#filter_map_identity [INFO] [stdout] = note: `#[warn(clippy::filter_map_identity)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: length comparison to zero [INFO] [stdout] --> src/marc/book_fields.rs:95:40 [INFO] [stdout] | [INFO] [stdout] 95 | ... if isbn.tags.len() > 0 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ help: using `!is_empty` is clearer and more explicit: `!isbn.tags.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] [INFO] [stdout] [INFO] [stdout] warning: useless conversion to the same type: `u8` [INFO] [stdout] --> src/marc/flat_fields.rs:55:19 [INFO] [stdout] | [INFO] [stdout] 55 | ind1: 0.into(), [INFO] [stdout] | ^^^^^^^^ help: consider removing `.into()`: `0` [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: useless conversion to the same type: `u8` [INFO] [stdout] --> src/marc/flat_fields.rs:56:19 [INFO] [stdout] | [INFO] [stdout] 56 | ind2: 0.into(), [INFO] [stdout] | ^^^^^^^^ help: consider removing `.into()`: `0` [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: useless conversion to the same type: `u8` [INFO] [stdout] --> src/marc/flat_fields.rs:57:22 [INFO] [stdout] | [INFO] [stdout] 57 | sf_code: 0.into(), [INFO] [stdout] | ^^^^^^^^ help: consider removing `.into()`: `0` [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: useless conversion to the same type: `u8` [INFO] [stdout] --> src/marc/flat_fields.rs:68:23 [INFO] [stdout] | [INFO] [stdout] 68 | ind1: 0.into(), [INFO] [stdout] | ^^^^^^^^ help: consider removing `.into()`: `0` [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: useless conversion to the same type: `u8` [INFO] [stdout] --> src/marc/flat_fields.rs:69:23 [INFO] [stdout] | [INFO] [stdout] 69 | ind2: 0.into(), [INFO] [stdout] | ^^^^^^^^ help: consider removing `.into()`: `0` [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: useless conversion to the same type: `u8` [INFO] [stdout] --> src/marc/flat_fields.rs:70:26 [INFO] [stdout] | [INFO] [stdout] 70 | sf_code: 0.into(), [INFO] [stdout] | ^^^^^^^^ help: consider removing `.into()`: `0` [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: you seem to be trying to use `match` for an equality check. Consider using `if` [INFO] [stdout] --> src/marc/parse.rs:57:17 [INFO] [stdout] | [INFO] [stdout] 57 | / match name.into_inner() { [INFO] [stdout] 58 | | b"record" => { [INFO] [stdout] 59 | | let rec = read_record(&mut reader)?; [INFO] [stdout] 60 | | output.write_object(rec)?; [INFO] [stdout] ... | [INFO] [stdout] 63 | | _ => (), [INFO] [stdout] 64 | | } [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] 57 ~ if name.into_inner() == b"record" { [INFO] [stdout] 58 + let rec = read_record(&mut reader)?; [INFO] [stdout] 59 + output.write_object(rec)?; [INFO] [stdout] 60 + nrecs += 1; [INFO] [stdout] 61 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: current MSRV (Minimum Supported Rust Version) is `1.59.0` but this item is stable since `1.63.0` [INFO] [stdout] --> src/marc/parse.rs:86:32 [INFO] [stdout] | [INFO] [stdout] 86 | let nrecs: Result = scope(|outer| { [INFO] [stdout] | ^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#incompatible_msrv [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: length comparison to zero [INFO] [stdout] --> src/marc/parse.rs:111:16 [INFO] [stdout] | [INFO] [stdout] 111 | if accum.len() > 0 { [INFO] [stdout] | ^^^^^^^^^^^^^^^ help: using `!is_empty` is clearer and more explicit: `!accum.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] [INFO] [stdout] [INFO] [stdout] warning: current MSRV (Minimum Supported Rust Version) is `1.59.0` but this item is stable since `1.63.0` [INFO] [stdout] --> src/marc/parse.rs:117:36 [INFO] [stdout] | [INFO] [stdout] 117 | let nrecs: Result = scope(|inner| { [INFO] [stdout] | ^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#incompatible_msrv [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: current MSRV (Minimum Supported Rust Version) is `1.59.0` but this item is stable since `1.63.0` [INFO] [stdout] --> src/marc/parse.rs:127:34 [INFO] [stdout] | [INFO] [stdout] 127 | let mut workers: Vec>> = [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#incompatible_msrv [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: current MSRV (Minimum Supported Rust Version) is `1.59.0` but this item is stable since `1.63.0` [INFO] [stdout] --> src/marc/parse.rs:136:36 [INFO] [stdout] | [INFO] [stdout] 136 | workers.push(inner.spawn(move || { [INFO] [stdout] | ____________________________________^ [INFO] [stdout] 137 | | let mut out = out; [INFO] [stdout] 138 | | let mut nrecs = 0; [INFO] [stdout] 139 | | while let Some(chunk) = measure_and_recv(&rx, &fill) { [INFO] [stdout] ... | [INFO] [stdout] 147 | | Ok(nrecs) [INFO] [stdout] 148 | | })); [INFO] [stdout] | |__________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#incompatible_msrv [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: current MSRV (Minimum Supported Rust Version) is `1.59.0` but this item is stable since `1.63.0` [INFO] [stdout] --> src/marc/parse.rs:153:28 [INFO] [stdout] | [INFO] [stdout] 153 | nrecs += h.join().map_err(std::panic::resume_unwind)??; [INFO] [stdout] | ^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#incompatible_msrv [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the borrowed expression implements the required traits [INFO] [stdout] --> src/cli/index_names.rs:92:40 [INFO] [stdout] | [INFO] [stdout] 92 | let mut writer = TableWriter::open(&path)?; [INFO] [stdout] | ^^^^^ help: change this to: `path` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrows_for_generic_args [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you are using an explicit closure for copying elements [INFO] [stdout] --> src/cli/index_names.rs:109:33 [INFO] [stdout] | [INFO] [stdout] 109 | let mut ids: Vec = index.get(name).unwrap().iter().map(|i| *i).collect(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider calling the dedicated `copied` method: `index.get(name).unwrap().iter().copied()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_clone [INFO] [stdout] = note: `#[warn(clippy::map_clone)]` 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/cli/index_names.rs:115:40 [INFO] [stdout] | [INFO] [stdout] 115 | clean_name: clean_name(&name), [INFO] [stdout] | ^^^^^ help: change this to: `name` [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: all variants have the same prefix: `Scan` [INFO] [stdout] --> src/cli/openlib.rs:20:1 [INFO] [stdout] | [INFO] [stdout] 20 | / enum DataType { [INFO] [stdout] 21 | | /// Parse OpenLibrary works. [INFO] [stdout] 22 | | /// [INFO] [stdout] 23 | | /// Authors must be processed first. [INFO] [stdout] ... | [INFO] [stdout] 32 | | ScanAuthors(Input), [INFO] [stdout] 33 | | } [INFO] [stdout] | |_^ [INFO] [stdout] | [INFO] [stdout] = help: remove the prefixes and use full paths to the variants instead of glob imports [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#enum_variant_names [INFO] [stdout] = note: `#[warn(clippy::enum_variant_names)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the following explicit lifetimes could be elided: 'a [INFO] [stdout] --> src/marc/record.rs:69:25 [INFO] [stdout] | [INFO] [stdout] 69 | pub fn marc_control<'a>(&'a self) -> Option<&'a str> { [INFO] [stdout] | ^^ ^^ ^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stdout] help: elide the lifetimes [INFO] [stdout] | [INFO] [stdout] 69 - pub fn marc_control<'a>(&'a self) -> Option<&'a str> { [INFO] [stdout] 69 + pub fn marc_control(&self) -> Option<&str> { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the following explicit lifetimes could be elided: 'a [INFO] [stdout] --> src/marc/record.rs:80:17 [INFO] [stdout] | [INFO] [stdout] 80 | pub fn lccn<'a>(&'a self) -> Option<&'a str> { [INFO] [stdout] | ^^ ^^ ^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stdout] help: elide the lifetimes [INFO] [stdout] | [INFO] [stdout] 80 - pub fn lccn<'a>(&'a self) -> Option<&'a str> { [INFO] [stdout] 80 + pub fn lccn(&self) -> Option<&str> { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this boolean expression can be simplified [INFO] [stdout] --> src/cli/openlib.rs:57:12 [INFO] [stdout] | [INFO] [stdout] 57 | if !line.is_ok() { [INFO] [stdout] | ^^^^^^^^^^^^^ help: try: `line.is_err()` [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: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/openlib/author.rs:37:30 [INFO] [stdout] | [INFO] [stdout] 37 | name: clean_name(&n), [INFO] [stdout] | ^^ help: change this to: `n` [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/openlib/author.rs:45:30 [INFO] [stdout] | [INFO] [stdout] 45 | name: clean_name(&n), [INFO] [stdout] | ^^ help: change this to: `n` [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/openlib/author.rs:53:30 [INFO] [stdout] | [INFO] [stdout] 53 | name: clean_name(&n), [INFO] [stdout] | ^^ help: change this to: `n` [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: name `OLKS` contains a capitalized acronym [INFO] [stdout] --> src/openlib/key.rs:6:12 [INFO] [stdout] | [INFO] [stdout] 6 | pub struct OLKS { [INFO] [stdout] | ^^^^ help: consider making the acronym lowercase, except the initial letter: `Olks` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#upper_case_acronyms [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: name `CLI` contains a capitalized acronym [INFO] [stdout] --> src/cli/mod.rs:84:12 [INFO] [stdout] | [INFO] [stdout] 84 | pub struct CLI { [INFO] [stdout] | ^^^ help: consider making the acronym lowercase, except the initial letter: `Cli` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#upper_case_acronyms [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the following explicit lifetimes could be elided: 'a [INFO] [stdout] --> src/openlib/source.rs:78:16 [INFO] [stdout] | [INFO] [stdout] 78 | pub fn key<'a>(&'a self) -> Option<&'a str> { [INFO] [stdout] | ^^ ^^ ^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stdout] help: elide the lifetimes [INFO] [stdout] | [INFO] [stdout] 78 - pub fn key<'a>(&'a self) -> Option<&'a str> { [INFO] [stdout] 78 + pub fn key(&self) -> Option<&str> { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: an implementation of `From` is preferred since it gives you `Into<_>` for free where the reverse isn't true [INFO] [stdout] --> src/openlib/source.rs:145:1 [INFO] [stdout] | [INFO] [stdout] 145 | impl Into for Text { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: `impl From for Foreign` is allowed by the orphan rules, for more information see [INFO] [stdout] https://doc.rust-lang.org/reference/items/implementations.html#trait-implementation-coherence [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#from_over_into [INFO] [stdout] = note: `#[warn(clippy::from_over_into)]` on by default [INFO] [stdout] help: replace the `Into` implementation with `From` [INFO] [stdout] | [INFO] [stdout] 145 ~ impl From for String { [INFO] [stdout] 146 ~ fn from(val: Text) -> Self { [INFO] [stdout] 147 ~ match val { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: casting to the same type is unnecessary (`u32` -> `u32`) [INFO] [stdout] --> src/openlib/work.rs:41:17 [INFO] [stdout] | [INFO] [stdout] 41 | id: value.entity as u32, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ help: try: `value.entity` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_cast [INFO] [stdout] = note: `#[warn(clippy::unnecessary_cast)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant closure [INFO] [stdout] --> src/goodreads/book.rs:125:22 [INFO] [stdout] | [INFO] [stdout] 125 | .map(|s| clean_asin_chars(s)) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ help: replace the closure with the function itself: `clean_asin_chars` [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: redundant closure [INFO] [stdout] --> src/goodreads/book.rs:128:22 [INFO] [stdout] | [INFO] [stdout] 128 | .map(|s| clean_asin_chars(s)) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ help: replace the closure with the function itself: `clean_asin_chars` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant closure [INFO] [stdout] --> src/goodreads/book.rs:131:22 [INFO] [stdout] | [INFO] [stdout] 131 | .map(|s| clean_asin_chars(s)) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ help: replace the closure with the function itself: `clean_asin_chars` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the following explicit lifetimes could be elided: 'a [INFO] [stdout] --> src/parsing/mod.rs:15:17 [INFO] [stdout] | [INFO] [stdout] 15 | pub fn trim_opt<'a>(s: &'a str) -> Option<&'a str> { [INFO] [stdout] | ^^ ^^ ^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stdout] help: elide the lifetimes [INFO] [stdout] | [INFO] [stdout] 15 - pub fn trim_opt<'a>(s: &'a str) -> Option<&'a str> { [INFO] [stdout] 15 + pub fn trim_opt(s: &str) -> Option<&str> { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/parsing/mod.rs:26:5 [INFO] [stdout] | [INFO] [stdout] 26 | return trim_opt(s).map(|s| s.to_owned()); [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] 26 - return trim_opt(s).map(|s| s.to_owned()); [INFO] [stdout] 26 + trim_opt(s).map(|s| s.to_owned()) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the following explicit lifetimes could be elided: 'a [INFO] [stdout] --> src/tsv.rs:1:20 [INFO] [stdout] | [INFO] [stdout] 1 | pub fn split_first<'a>(line: &'a str) -> Option<(&'a str, &'a str)> { [INFO] [stdout] | ^^ ^^ ^^ ^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stdout] help: elide the lifetimes [INFO] [stdout] | [INFO] [stdout] 1 - pub fn split_first<'a>(line: &'a str) -> Option<(&'a str, &'a str)> { [INFO] [stdout] 1 + pub fn split_first(line: &str) -> Option<(&str, &str)> { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: useless conversion to the same type: `i64` [INFO] [stdout] --> src/util/process.rs:30:38 [INFO] [stdout] | [INFO] [stdout] 30 | let dus = Duration::microseconds(tv.tv_usec.into()); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ help: consider removing `.into()`: `tv.tv_usec` [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: methods called `from_*` usually take no `self` [INFO] [stdout] --> src/ids/codes.rs:93:22 [INFO] [stdout] | [INFO] [stdout] 93 | pub fn from_code(&'a self, n: i32) -> Option { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: consider choosing a less ambiguous name [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#wrong_self_convention [INFO] [stdout] = note: `#[warn(clippy::wrong_self_convention)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual implementation of `Iterator::find` [INFO] [stdout] --> src/ids/codes.rs:106:9 [INFO] [stdout] | [INFO] [stdout] 106 | / for ns in NAMESPACES { [INFO] [stdout] 107 | | if ns.name() == name { [INFO] [stdout] 108 | | return Some(ns); [INFO] [stdout] ... | [INFO] [stdout] 112 | | None [INFO] [stdout] | |____________^ help: replace with an iterator: `NAMESPACES.iter().find(|&ns| ns.name() == name).map(|v| v as _)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_find [INFO] [stdout] = note: `#[warn(clippy::manual_find)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual `!RangeInclusive::contains` implementation [INFO] [stdout] --> src/ids/codes.rs:139:7 [INFO] [stdout] | [INFO] [stdout] 139 | code < NS_MULT_BASE || code > 10*NS_MULT_BASE || code / NS_MULT_BASE == 8 [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use: `!(NS_MULT_BASE..=10*NS_MULT_BASE).contains(&code)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_range_contains [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you are using an explicit closure for copying elements [INFO] [stdout] --> src/ids/index.rs:102:9 [INFO] [stdout] | [INFO] [stdout] 102 | self.map.get(key).map(|i| *i) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider calling the dedicated `copied` method: `self.map.get(key).copied()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_clone [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: explicit call to `.into_iter()` in function argument accepting `IntoIterator` [INFO] [stdout] --> src/ids/index.rs:195:44 [INFO] [stdout] | [INFO] [stdout] 195 | for pair in ic.into_iter().zip(kc.into_iter()) { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] note: this parameter accepts any `IntoIterator`, so you don't need to call `.into_iter()` [INFO] [stdout] --> /rustc/3645249d79dfb136b5d8de3ce153d19d6698d92d/library/core/src/iter/traits/iterator.rs:629:11 [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] help: consider removing the `.into_iter()` [INFO] [stdout] | [INFO] [stdout] 195 - for pair in ic.into_iter().zip(kc.into_iter()) { [INFO] [stdout] 195 + for pair in ic.into_iter().zip(&*kc) { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: length comparison to zero [INFO] [stdout] --> src/io/object/chunks.rs:84:12 [INFO] [stdout] | [INFO] [stdout] 84 | if self.chunk.len() > 0 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ help: using `!is_empty` is clearer and more explicit: `!self.chunk.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] [INFO] [stdout] [INFO] [stdout] warning: current MSRV (Minimum Supported Rust Version) is `1.59.0` but this item is stable since `1.63.0` [INFO] [stdout] --> src/io/object/thread.rs:16:12 [INFO] [stdout] | [INFO] [stdout] 16 | Scoped(ScopedJoinHandle<'scope, Result>), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#incompatible_msrv [INFO] [stdout] = note: `#[warn(clippy::incompatible_msrv)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: current MSRV (Minimum Supported Rust Version) is `1.59.0` but this item is stable since `1.63.0` [INFO] [stdout] --> src/io/object/thread.rs:87:24 [INFO] [stdout] | [INFO] [stdout] 87 | scope: &'scope Scope<'scope, 'env>, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#incompatible_msrv [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: current MSRV (Minimum Supported Rust Version) is `1.59.0` but this item is stable since `1.63.0` [INFO] [stdout] --> src/io/object/thread.rs:99:23 [INFO] [stdout] | [INFO] [stdout] 99 | let h = scope.spawn(move || ferry(receiver, thunk()?, rpb)); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#incompatible_msrv [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: returning the result of a `let` binding from a block [INFO] [stdout] --> src/io/object/thread.rs:181:9 [INFO] [stdout] | [INFO] [stdout] 177 | / let res = match self.handle { [INFO] [stdout] 178 | | WorkHandle::Static(h) => h.join().map_err(std::panic::resume_unwind)?, [INFO] [stdout] 179 | | WorkHandle::Scoped(h) => h.join().map_err(std::panic::resume_unwind)?, [INFO] [stdout] 180 | | }; [INFO] [stdout] | |__________- unnecessary `let` binding [INFO] [stdout] 181 | res [INFO] [stdout] | ^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#let_and_return [INFO] [stdout] = note: `#[warn(clippy::let_and_return)]` on by default [INFO] [stdout] help: return the expression directly [INFO] [stdout] | [INFO] [stdout] 177 ~ [INFO] [stdout] 178 ~ match self.handle { [INFO] [stdout] 179 + WorkHandle::Static(h) => h.join().map_err(std::panic::resume_unwind)?, [INFO] [stdout] 180 + WorkHandle::Scoped(h) => h.join().map_err(std::panic::resume_unwind)?, [INFO] [stdout] 181 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: current MSRV (Minimum Supported Rust Version) is `1.59.0` but this item is stable since `1.63.0` [INFO] [stdout] --> src/io/object/thread.rs:179:40 [INFO] [stdout] | [INFO] [stdout] 179 | WorkHandle::Scoped(h) => h.join().map_err(std::panic::resume_unwind)?, [INFO] [stdout] | ^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#incompatible_msrv [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the borrowed expression implements the required traits [INFO] [stdout] --> src/layout/path.rs:25:33 [INFO] [stdout] | [INFO] [stdout] 25 | let path = resolve_path(&self)?; [INFO] [stdout] | ^^^^^ help: change this to: `self` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrows_for_generic_args [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: current MSRV (Minimum Supported Rust Version) is `1.59.0` but this item is stable since `1.63.0` [INFO] [stdout] --> src/layout/workdir.rs:11:12 [INFO] [stdout] | [INFO] [stdout] 11 | if dvc.try_exists()? { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#incompatible_msrv [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: current MSRV (Minimum Supported Rust Version) is `1.59.0` but this item is stable since `1.63.0` [INFO] [stdout] --> src/layout/workdir.rs:13:19 [INFO] [stdout] | [INFO] [stdout] 13 | if config.try_exists()? { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#incompatible_msrv [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: length comparison to zero [INFO] [stdout] --> src/marc/book_fields.rs:95:40 [INFO] [stdout] | [INFO] [stdout] 95 | ... if isbn.tags.len() > 0 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ help: using `!is_empty` is clearer and more explicit: `!isbn.tags.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] [INFO] [stdout] [INFO] [stdout] warning: useless conversion to the same type: `u8` [INFO] [stdout] --> src/marc/flat_fields.rs:55:19 [INFO] [stdout] | [INFO] [stdout] 55 | ind1: 0.into(), [INFO] [stdout] | ^^^^^^^^ help: consider removing `.into()`: `0` [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: useless conversion to the same type: `u8` [INFO] [stdout] --> src/marc/flat_fields.rs:56:19 [INFO] [stdout] | [INFO] [stdout] 56 | ind2: 0.into(), [INFO] [stdout] | ^^^^^^^^ help: consider removing `.into()`: `0` [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: useless conversion to the same type: `u8` [INFO] [stdout] --> src/marc/flat_fields.rs:57:22 [INFO] [stdout] | [INFO] [stdout] 57 | sf_code: 0.into(), [INFO] [stdout] | ^^^^^^^^ help: consider removing `.into()`: `0` [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: useless conversion to the same type: `u8` [INFO] [stdout] --> src/marc/flat_fields.rs:68:23 [INFO] [stdout] | [INFO] [stdout] 68 | ind1: 0.into(), [INFO] [stdout] | ^^^^^^^^ help: consider removing `.into()`: `0` [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: useless conversion to the same type: `u8` [INFO] [stdout] --> src/marc/flat_fields.rs:69:23 [INFO] [stdout] | [INFO] [stdout] 69 | ind2: 0.into(), [INFO] [stdout] | ^^^^^^^^ help: consider removing `.into()`: `0` [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: useless conversion to the same type: `u8` [INFO] [stdout] --> src/marc/flat_fields.rs:70:26 [INFO] [stdout] | [INFO] [stdout] 70 | sf_code: 0.into(), [INFO] [stdout] | ^^^^^^^^ help: consider removing `.into()`: `0` [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: you seem to be trying to use `match` for an equality check. Consider using `if` [INFO] [stdout] --> src/marc/parse.rs:57:17 [INFO] [stdout] | [INFO] [stdout] 57 | / match name.into_inner() { [INFO] [stdout] 58 | | b"record" => { [INFO] [stdout] 59 | | let rec = read_record(&mut reader)?; [INFO] [stdout] 60 | | output.write_object(rec)?; [INFO] [stdout] ... | [INFO] [stdout] 63 | | _ => (), [INFO] [stdout] 64 | | } [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] 57 ~ if name.into_inner() == b"record" { [INFO] [stdout] 58 + let rec = read_record(&mut reader)?; [INFO] [stdout] 59 + output.write_object(rec)?; [INFO] [stdout] 60 + nrecs += 1; [INFO] [stdout] 61 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: current MSRV (Minimum Supported Rust Version) is `1.59.0` but this item is stable since `1.63.0` [INFO] [stdout] --> src/marc/parse.rs:86:32 [INFO] [stdout] | [INFO] [stdout] 86 | let nrecs: Result = scope(|outer| { [INFO] [stdout] | ^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#incompatible_msrv [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: length comparison to zero [INFO] [stdout] --> src/marc/parse.rs:111:16 [INFO] [stdout] | [INFO] [stdout] 111 | if accum.len() > 0 { [INFO] [stdout] | ^^^^^^^^^^^^^^^ help: using `!is_empty` is clearer and more explicit: `!accum.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] [INFO] [stdout] [INFO] [stdout] warning: current MSRV (Minimum Supported Rust Version) is `1.59.0` but this item is stable since `1.63.0` [INFO] [stdout] --> src/marc/parse.rs:117:36 [INFO] [stdout] | [INFO] [stdout] 117 | let nrecs: Result = scope(|inner| { [INFO] [stdout] | ^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#incompatible_msrv [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: current MSRV (Minimum Supported Rust Version) is `1.59.0` but this item is stable since `1.63.0` [INFO] [stdout] --> src/marc/parse.rs:127:34 [INFO] [stdout] | [INFO] [stdout] 127 | let mut workers: Vec>> = [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#incompatible_msrv [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: current MSRV (Minimum Supported Rust Version) is `1.59.0` but this item is stable since `1.63.0` [INFO] [stdout] --> src/marc/parse.rs:136:36 [INFO] [stdout] | [INFO] [stdout] 136 | workers.push(inner.spawn(move || { [INFO] [stdout] | ____________________________________^ [INFO] [stdout] 137 | | let mut out = out; [INFO] [stdout] 138 | | let mut nrecs = 0; [INFO] [stdout] 139 | | while let Some(chunk) = measure_and_recv(&rx, &fill) { [INFO] [stdout] ... | [INFO] [stdout] 147 | | Ok(nrecs) [INFO] [stdout] 148 | | })); [INFO] [stdout] | |__________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#incompatible_msrv [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: current MSRV (Minimum Supported Rust Version) is `1.59.0` but this item is stable since `1.63.0` [INFO] [stdout] --> src/marc/parse.rs:153:28 [INFO] [stdout] | [INFO] [stdout] 153 | nrecs += h.join().map_err(std::panic::resume_unwind)??; [INFO] [stdout] | ^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#incompatible_msrv [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the following explicit lifetimes could be elided: 'a [INFO] [stdout] --> src/marc/record.rs:69:25 [INFO] [stdout] | [INFO] [stdout] 69 | pub fn marc_control<'a>(&'a self) -> Option<&'a str> { [INFO] [stdout] | ^^ ^^ ^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stdout] help: elide the lifetimes [INFO] [stdout] | [INFO] [stdout] 69 - pub fn marc_control<'a>(&'a self) -> Option<&'a str> { [INFO] [stdout] 69 + pub fn marc_control(&self) -> Option<&str> { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the following explicit lifetimes could be elided: 'a [INFO] [stdout] --> src/marc/record.rs:80:17 [INFO] [stdout] | [INFO] [stdout] 80 | pub fn lccn<'a>(&'a self) -> Option<&'a str> { [INFO] [stdout] | ^^ ^^ ^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stdout] help: elide the lifetimes [INFO] [stdout] | [INFO] [stdout] 80 - pub fn lccn<'a>(&'a self) -> Option<&'a str> { [INFO] [stdout] 80 + pub fn lccn(&self) -> Option<&str> { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/openlib/author.rs:37:30 [INFO] [stdout] | [INFO] [stdout] 37 | name: clean_name(&n), [INFO] [stdout] | ^^ help: change this to: `n` [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/openlib/author.rs:45:30 [INFO] [stdout] | [INFO] [stdout] 45 | name: clean_name(&n), [INFO] [stdout] | ^^ help: change this to: `n` [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/openlib/author.rs:53:30 [INFO] [stdout] | [INFO] [stdout] 53 | name: clean_name(&n), [INFO] [stdout] | ^^ help: change this to: `n` [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: name `OLKS` contains a capitalized acronym [INFO] [stdout] --> src/openlib/key.rs:6:12 [INFO] [stdout] | [INFO] [stdout] 6 | pub struct OLKS { [INFO] [stdout] | ^^^^ help: consider making the acronym lowercase, except the initial letter: `Olks` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#upper_case_acronyms [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the following explicit lifetimes could be elided: 'a [INFO] [stdout] --> src/openlib/source.rs:78:16 [INFO] [stdout] | [INFO] [stdout] 78 | pub fn key<'a>(&'a self) -> Option<&'a str> { [INFO] [stdout] | ^^ ^^ ^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stdout] help: elide the lifetimes [INFO] [stdout] | [INFO] [stdout] 78 - pub fn key<'a>(&'a self) -> Option<&'a str> { [INFO] [stdout] 78 + pub fn key(&self) -> Option<&str> { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: an implementation of `From` is preferred since it gives you `Into<_>` for free where the reverse isn't true [INFO] [stdout] --> src/openlib/source.rs:145:1 [INFO] [stdout] | [INFO] [stdout] 145 | impl Into for Text { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: `impl From for Foreign` is allowed by the orphan rules, for more information see [INFO] [stdout] https://doc.rust-lang.org/reference/items/implementations.html#trait-implementation-coherence [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#from_over_into [INFO] [stdout] = note: `#[warn(clippy::from_over_into)]` on by default [INFO] [stdout] help: replace the `Into` implementation with `From` [INFO] [stdout] | [INFO] [stdout] 145 ~ impl From for String { [INFO] [stdout] 146 ~ fn from(val: Text) -> Self { [INFO] [stdout] 147 ~ match val { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: casting to the same type is unnecessary (`u32` -> `u32`) [INFO] [stdout] --> src/openlib/work.rs:41:17 [INFO] [stdout] | [INFO] [stdout] 41 | id: value.entity as u32, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ help: try: `value.entity` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_cast [INFO] [stdout] = note: `#[warn(clippy::unnecessary_cast)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the following explicit lifetimes could be elided: 'a [INFO] [stdout] --> src/parsing/mod.rs:15:17 [INFO] [stdout] | [INFO] [stdout] 15 | pub fn trim_opt<'a>(s: &'a str) -> Option<&'a str> { [INFO] [stdout] | ^^ ^^ ^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stdout] help: elide the lifetimes [INFO] [stdout] | [INFO] [stdout] 15 - pub fn trim_opt<'a>(s: &'a str) -> Option<&'a str> { [INFO] [stdout] 15 + pub fn trim_opt(s: &str) -> Option<&str> { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/parsing/mod.rs:26:5 [INFO] [stdout] | [INFO] [stdout] 26 | return trim_opt(s).map(|s| s.to_owned()); [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] 26 - return trim_opt(s).map(|s| s.to_owned()); [INFO] [stdout] 26 + trim_opt(s).map(|s| s.to_owned()) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the following explicit lifetimes could be elided: 'a [INFO] [stdout] --> src/tsv.rs:1:20 [INFO] [stdout] | [INFO] [stdout] 1 | pub fn split_first<'a>(line: &'a str) -> Option<(&'a str, &'a str)> { [INFO] [stdout] | ^^ ^^ ^^ ^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stdout] help: elide the lifetimes [INFO] [stdout] | [INFO] [stdout] 1 - pub fn split_first<'a>(line: &'a str) -> Option<(&'a str, &'a str)> { [INFO] [stdout] 1 + pub fn split_first(line: &str) -> Option<(&str, &str)> { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: useless conversion to the same type: `i64` [INFO] [stdout] --> src/util/process.rs:30:38 [INFO] [stdout] | [INFO] [stdout] 30 | let dus = Duration::microseconds(tv.tv_usec.into()); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ help: consider removing `.into()`: `tv.tv_usec` [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] [stderr] Finished `dev` profile [unoptimized + debuginfo] target(s) in 49.89s [INFO] running `Command { std: "docker" "inspect" "c087cd074da10955fdf1fc91ceb0067d25c8166496786cb6565ef2d9c50aae95", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "c087cd074da10955fdf1fc91ceb0067d25c8166496786cb6565ef2d9c50aae95", kill_on_drop: false }` [INFO] [stdout] c087cd074da10955fdf1fc91ceb0067d25c8166496786cb6565ef2d9c50aae95