[INFO] cloning repository https://github.com/Ben1152000/openmander-core [INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/Ben1152000/openmander-core" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FBen1152000%2Fopenmander-core", kill_on_drop: false }` [INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FBen1152000%2Fopenmander-core'... [INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }` [INFO] [stdout] f87b821fcb7248b71402152a97234b6184a97f07 [INFO] linting Ben1152000/openmander-core against nightly for clippy-nonminimal_bool-denied [INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FBen1152000%2Fopenmander-core" "/workspace/builds/worker-2-tc1/source", kill_on_drop: false }` [INFO] [stderr] Cloning into '/workspace/builds/worker-2-tc1/source'... [INFO] [stderr] done. [INFO] started tweaking git repo https://github.com/Ben1152000/openmander-core [INFO] finished tweaking git repo https://github.com/Ben1152000/openmander-core [INFO] tweaked toml for git repo https://github.com/Ben1152000/openmander-core written to /workspace/builds/worker-2-tc1/source/Cargo.toml [INFO] validating manifest of git repo https://github.com/Ben1152000/openmander-core 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/Ben1152000/openmander-core 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 rustls-native-certs v0.8.2 [INFO] [stderr] Downloaded i_float v1.7.0 [INFO] [stderr] Downloaded halfbrown v0.3.0 [INFO] [stderr] Downloaded temp-dir v0.1.16 [INFO] [stderr] Downloaded i_shape v1.7.0 [INFO] [stderr] Downloaded pointy v0.7.0 [INFO] [stderr] Downloaded mvt v0.10.3 [INFO] [stderr] Downloaded compression-codecs v0.4.36 [INFO] [stderr] Downloaded deku v0.15.1 [INFO] [stderr] Downloaded geographiclib-rs v0.2.5 [INFO] [stderr] Downloaded async-compression v0.4.37 [INFO] [stderr] Downloaded hilbert_2d v1.1.0 [INFO] [stderr] Downloaded polars-compute v0.50.0 [INFO] [stderr] Downloaded polars v0.50.0 [INFO] [stderr] Downloaded polars-parquet v0.50.0 [INFO] [stderr] Downloaded brotli-decompressor v4.0.3 [INFO] [stderr] Downloaded i_overlay v2.0.5 [INFO] [stderr] Downloaded polars-stream v0.50.0 [INFO] [stderr] Downloaded object_store v0.12.4 [INFO] [stderr] Downloaded polars-io v0.50.0 [INFO] [stderr] Downloaded geo v0.30.0 [INFO] [stderr] Downloaded jsonpath_lib_polars_vendor v0.0.1 [INFO] [stderr] Downloaded simd-json v0.15.1 [INFO] [stderr] Downloaded polars-arrow v0.50.0 [INFO] [stderr] Downloaded polars-ops v0.50.0 [INFO] [stderr] Downloaded skiplist v0.6.0 [INFO] [stderr] Downloaded polars-plan v0.50.0 [INFO] [stderr] Downloaded polars-core v0.50.0 [INFO] [stderr] Downloaded zlib-rs v0.5.4 [INFO] [stderr] Downloaded tower-http v0.6.7 [INFO] [stderr] Downloaded polars-expr v0.50.0 [INFO] [stderr] Downloaded polars-lazy v0.50.0 [INFO] [stderr] Downloaded polars-arrow-format v0.2.1 [INFO] [stderr] Downloaded duplicate v1.0.0 [INFO] [stderr] Downloaded polars-time v0.50.0 [INFO] [stderr] Downloaded polars-utils v0.50.0 [INFO] [stderr] Downloaded polars-mem-engine v0.50.0 [INFO] [stderr] Downloaded polars-sql v0.50.0 [INFO] [stderr] Downloaded cc v1.2.48 [INFO] [stderr] Downloaded boxcar v0.2.14 [INFO] [stderr] Downloaded value-trait v0.11.0 [INFO] [stderr] Downloaded polars-error v0.50.0 [INFO] [stderr] Downloaded dbase v0.5.0 [INFO] [stderr] Downloaded polars-dtype v0.50.0 [INFO] [stderr] Downloaded polars-row v0.50.0 [INFO] [stderr] Downloaded deku_derive v0.15.1 [INFO] [stderr] Downloaded shapefile v0.6.0 [INFO] [stderr] Downloaded polars-json v0.50.0 [INFO] [stderr] Downloaded polars-schema v0.50.0 [INFO] [stderr] Downloaded libz-rs-sys v0.5.4 [INFO] [stderr] Downloaded serde_stacker v0.1.14 [INFO] [stderr] Downloaded rustls-pki-types v1.13.1 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-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] 2df98561a29f5bfd694a7b2ca19a9414f7f9d9a8ab63545cddd1b5042ac15a20 [INFO] running `Command { std: "docker" "start" "-a" "2df98561a29f5bfd694a7b2ca19a9414f7f9d9a8ab63545cddd1b5042ac15a20", kill_on_drop: false }` [INFO] running `Command { std: "docker" "inspect" "2df98561a29f5bfd694a7b2ca19a9414f7f9d9a8ab63545cddd1b5042ac15a20", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "2df98561a29f5bfd694a7b2ca19a9414f7f9d9a8ab63545cddd1b5042ac15a20", kill_on_drop: false }` [INFO] [stdout] 2df98561a29f5bfd694a7b2ca19a9414f7f9d9a8ab63545cddd1b5042ac15a20 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-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] 2258bea37d987c4b4c3dff8a8447dbecc81ec001bcb05087e0d3adfa2f57b106 [INFO] running `Command { std: "docker" "start" "-a" "2258bea37d987c4b4c3dff8a8447dbecc81ec001bcb05087e0d3adfa2f57b106", kill_on_drop: false }` [INFO] [stderr] Compiling serde_core v1.0.228 [INFO] [stderr] Compiling serde v1.0.228 [INFO] [stderr] Compiling zerocopy v0.8.31 [INFO] [stderr] Compiling libc v0.2.178 [INFO] [stderr] Checking num-traits v0.2.19 [INFO] [stderr] Checking getrandom v0.3.4 [INFO] [stderr] Checking mio v1.1.0 [INFO] [stderr] Compiling syn v2.0.111 [INFO] [stderr] Checking rustls-pki-types v1.13.1 [INFO] [stderr] Checking tracing-core v0.1.35 [INFO] [stderr] Checking rayon v1.11.0 [INFO] [stderr] Compiling object v0.32.2 [INFO] [stderr] Compiling thiserror v2.0.17 [INFO] [stderr] Checking zlib-rs v0.5.4 [INFO] [stderr] Checking miniz_oxide v0.8.9 [INFO] [stderr] Checking parking_lot_core v0.9.12 [INFO] [stderr] Checking rand_core v0.9.3 [INFO] [stderr] Checking webpki-roots v1.0.4 [INFO] [stderr] Checking rustls-native-certs v0.8.2 [INFO] [stderr] Checking array-init-cursor v0.2.1 [INFO] [stderr] Checking signal-hook-registry v1.4.7 [INFO] [stderr] Compiling slotmap v1.0.7 [INFO] [stderr] Checking parking_lot v0.12.5 [INFO] [stderr] Compiling ahash v0.8.12 [INFO] [stderr] Checking itertools v0.14.0 [INFO] [stderr] Checking humantime v2.3.0 [INFO] [stderr] Checking simdutf8 v0.1.5 [INFO] [stderr] Compiling virtue v0.0.18 [INFO] [stderr] Checking signal-hook v0.3.18 [INFO] [stderr] Checking castaway v0.2.4 [INFO] [stderr] Compiling polars-utils v0.50.0 [INFO] [stderr] Checking unty v0.0.4 [INFO] [stderr] Checking memmap2 v0.9.9 [INFO] [stderr] Compiling polars-schema v0.50.0 [INFO] [stderr] Checking rmp v0.8.14 [INFO] [stderr] Compiling polars-arrow v0.50.0 [INFO] [stderr] Checking streaming-iterator v0.1.9 [INFO] [stderr] Compiling polars-compute v0.50.0 [INFO] [stderr] Checking debug_unsafe v0.1.3 [INFO] [stderr] Checking fast-float2 v0.2.3 [INFO] [stderr] Checking strength_reduce v0.2.4 [INFO] [stderr] Checking atoi_simd v0.16.1 [INFO] [stderr] Compiling generic-array v0.14.7 [INFO] [stderr] Compiling heapless v0.8.0 [INFO] [stderr] Compiling wasm-bindgen-shared v0.2.106 [INFO] [stderr] Checking boxcar v0.2.14 [INFO] [stderr] Compiling ref-cast v1.0.25 [INFO] [stderr] Checking float-cmp v0.10.0 [INFO] [stderr] Checking hash32 v0.3.1 [INFO] [stderr] Compiling jobserver v0.1.34 [INFO] [stderr] Compiling polars-core v0.50.0 [INFO] [stderr] Compiling snap v1.1.1 [INFO] [stderr] Checking fallible-streaming-iterator v0.1.9 [INFO] [stderr] Compiling syn v1.0.109 [INFO] [stderr] Checking libz-rs-sys v0.5.4 [INFO] [stderr] Checking brotli-decompressor v5.0.0 [INFO] [stderr] Checking flate2 v1.1.5 [INFO] [stderr] Checking xxhash-rust v0.8.15 [INFO] [stderr] Compiling bincode_derive v2.0.1 [INFO] [stderr] Compiling cc v1.2.48 [INFO] [stderr] Checking streaming-decompression v0.1.2 [INFO] [stderr] Compiling pyo3-build-config v0.21.2 [INFO] [stderr] Checking approx v0.5.1 [INFO] [stderr] Compiling polars-ops v0.50.0 [INFO] [stderr] Checking itertools v0.11.0 [INFO] [stderr] Checking robust v1.2.0 [INFO] [stderr] Checking i_tree v0.8.3 [INFO] [stderr] Checking rstar v0.12.2 [INFO] [stderr] Compiling crypto-common v0.1.7 [INFO] [stderr] Compiling block-buffer v0.10.4 [INFO] [stderr] Checking brotli v8.0.2 [INFO] [stderr] Checking i_key_sort v0.2.0 [INFO] [stderr] Compiling digest v0.10.7 [INFO] [stderr] Compiling sha2 v0.10.9 [INFO] [stderr] Checking argminmax v0.6.3 [INFO] [stderr] Checking geographiclib-rs v0.2.5 [INFO] [stderr] Checking home v0.5.12 [INFO] [stderr] Checking float_next_after v1.0.0 [INFO] [stderr] Checking glob v0.3.3 [INFO] [stderr] Compiling bumpalo v3.19.0 [INFO] [stderr] Compiling indexmap v2.12.1 [INFO] [stderr] Checking geo-types v0.7.18 [INFO] [stderr] Compiling wasm-bindgen v0.2.106 [INFO] [stderr] Compiling polars-plan v0.50.0 [INFO] [stderr] Checking concurrent-queue v2.5.0 [INFO] [stderr] Compiling proc-macro-error-attr v1.0.4 [INFO] [stderr] Compiling winnow v0.5.40 [INFO] [stderr] Checking parking v2.2.1 [INFO] [stderr] Checking unicode-ident v1.0.22 [INFO] [stderr] Checking event-listener v5.4.1 [INFO] [stderr] Compiling proc-macro-error v1.0.4 [INFO] [stderr] Checking ppv-lite86 v0.2.21 [INFO] [stderr] Checking earcutr v0.4.3 [INFO] [stderr] Checking event-listener-strategy v0.5.4 [INFO] [stderr] Compiling polars-stream v0.50.0 [INFO] [stderr] Checking deranged v0.5.5 [INFO] [stderr] Checking async-channel v2.5.0 [INFO] [stderr] Checking bitvec v1.0.1 [INFO] [stderr] Checking rand_chacha v0.9.0 [INFO] [stderr] Checking bitflags v2.10.0 [INFO] [stderr] Compiling ar_archive_writer v0.2.0 [INFO] [stderr] Checking serde_json v1.0.145 [INFO] [stderr] Checking rand v0.9.2 [INFO] [stderr] Checking raw-cpuid v11.6.0 [INFO] [stderr] Compiling ring v0.17.14 [INFO] [stderr] Compiling zstd-sys v2.0.16+zstd.1.5.7 [INFO] [stderr] Compiling stacker v0.1.22 [INFO] [stderr] Compiling lz4-sys v1.11.1+lz4-1.10.0 [INFO] [stderr] Checking uuid v1.19.0 [INFO] [stderr] Checking rand_distr v0.5.1 [INFO] [stderr] Compiling blake3 v1.8.2 [INFO] [stderr] Checking rustix v1.1.2 [INFO] [stderr] Checking brotli-decompressor v4.0.3 [INFO] [stderr] Compiling psm v0.1.28 [INFO] [stderr] Checking crossbeam-queue v0.3.12 [INFO] [stderr] Checking crossbeam-channel v0.5.15 [INFO] [stderr] Compiling polars-lazy v0.50.0 [INFO] [stderr] Compiling matrixmultiply v0.3.10 [INFO] [stderr] Compiling protobuf v3.7.2 [INFO] [stderr] Checking time v0.3.44 [INFO] [stderr] Compiling polars v0.50.0 [INFO] [stderr] Checking brotli v7.0.0 [INFO] [stderr] Checking integer-encoding v3.0.4 [INFO] [stderr] Checking serde_stacker v0.1.14 [INFO] [stderr] Checking hilbert_2d v1.1.0 [INFO] [stderr] Compiling zip v2.4.2 [INFO] [stderr] Checking dbase v0.5.0 [INFO] [stderr] Checking pointy v0.7.0 [INFO] [stderr] Checking zopfli v0.8.3 [INFO] [stderr] Checking num-complex v0.4.6 [INFO] [stderr] Checking num-integer v0.1.46 [INFO] [stderr] Compiling synstructure v0.13.2 [INFO] [stderr] Compiling wasm-bindgen-macro-support v0.2.106 [INFO] [stderr] Compiling darling_core v0.14.4 [INFO] [stderr] Compiling toml_edit v0.19.15 [INFO] [stderr] Checking ndarray v0.15.6 [INFO] [stderr] Checking shapefile v0.6.0 [INFO] [stderr] Checking fs4 v0.13.1 [INFO] [stderr] Checking tempfile v3.23.0 [INFO] [stderr] Compiling pyo3-ffi v0.21.2 [INFO] [stderr] Compiling portable-atomic v1.11.1 [INFO] [stderr] Compiling pyo3-macros-backend v0.21.2 [INFO] [stderr] Compiling pyo3 v0.21.2 [INFO] [stderr] Compiling openmander-py v0.1.3 (/opt/rustwide/workdir/bindings/python) [INFO] [stderr] Checking temp-dir v0.1.16 [INFO] [stderr] Compiling serde_derive v1.0.228 [INFO] [stderr] Compiling zerofrom-derive v0.1.6 [INFO] [stderr] Compiling yoke-derive v0.8.1 [INFO] [stderr] Compiling tokio-macros v2.6.0 [INFO] [stderr] Compiling displaydoc v0.2.5 [INFO] [stderr] Compiling zerovec-derive v0.11.2 [INFO] [stderr] Compiling futures-macro v0.3.31 [INFO] [stderr] Checking zerofrom v0.1.6 [INFO] [stderr] Compiling tracing-attributes v0.1.31 [INFO] [stderr] Checking yoke v0.8.1 [INFO] [stderr] Checking zerotrie v0.2.3 [INFO] [stderr] Checking futures-util v0.3.31 [INFO] [stderr] Checking zerovec v0.11.5 [INFO] [stderr] Compiling rustls v0.23.35 [INFO] [stderr] Compiling thiserror-impl v2.0.17 [INFO] [stderr] Compiling async-trait v0.1.89 [INFO] [stderr] Compiling bytemuck_derive v1.10.2 [INFO] [stderr] Compiling strum_macros v0.27.2 [INFO] [stderr] Checking tinystr v0.8.2 [INFO] [stderr] Checking potential_utf v0.1.4 [INFO] [stderr] Compiling ref-cast-impl v1.0.25 [INFO] [stderr] Checking icu_collections v2.1.1 [INFO] [stderr] Checking icu_locale_core v2.1.1 [INFO] [stderr] Compiling async-stream-impl v0.3.6 [INFO] [stderr] Checking tracing v0.1.43 [INFO] [stderr] Checking bytemuck v1.24.0 [INFO] [stderr] Compiling recursive-proc-macro-impl v0.1.1 [INFO] [stderr] Compiling wasm-bindgen-macro v0.2.106 [INFO] [stderr] Checking recursive v0.1.1 [INFO] [stderr] Compiling darling_macro v0.14.4 [INFO] [stderr] Checking async-stream v0.3.6 [INFO] [stderr] Checking skiplist v0.6.0 [INFO] [stderr] Compiling proc-macro-crate v1.3.1 [INFO] [stderr] Compiling thiserror-impl v1.0.69 [INFO] [stderr] Compiling duplicate v1.0.0 [INFO] [stderr] Compiling darling v0.14.4 [INFO] [stderr] Checking icu_provider v2.1.1 [INFO] [stderr] Checking rustls-webpki v0.103.8 [INFO] [stderr] Compiling deku_derive v0.15.1 [INFO] [stderr] Checking js-sys v0.3.83 [INFO] [stderr] Checking icu_properties v2.1.1 [INFO] [stderr] Checking icu_normalizer v2.1.1 [INFO] [stderr] Compiling pyo3-macros v0.21.2 [INFO] [stderr] Checking bytes v1.11.0 [INFO] [stderr] Checking hashbrown v0.15.5 [INFO] [stderr] Checking serde_urlencoded v0.7.1 [INFO] [stderr] Checking chrono v0.4.42 [INFO] [stderr] Checking quick-xml v0.38.4 [INFO] [stderr] Checking compact_str v0.9.0 [INFO] [stderr] Checking rmp-serde v1.3.0 [INFO] [stderr] Checking tokio v1.48.0 [INFO] [stderr] Checking http v1.4.0 [INFO] [stderr] Checking futures-executor v0.3.31 [INFO] [stderr] Checking futures v0.3.31 [INFO] [stderr] Checking bincode v2.0.1 [INFO] [stderr] Checking i_float v1.7.0 [INFO] [stderr] Checking planus v1.1.1 [INFO] [stderr] Checking idna_adapter v1.2.1 [INFO] [stderr] Checking halfbrown v0.3.0 [INFO] [stderr] Checking idna v1.1.0 [INFO] [stderr] Checking polars-arrow-format v0.2.1 [INFO] [stderr] Checking url v2.5.7 [INFO] [stderr] Checking value-trait v0.11.0 [INFO] [stderr] Checking i_shape v1.7.0 [INFO] [stderr] Checking polars-parquet-format v0.1.0 [INFO] [stderr] Checking simd-json v0.15.1 [INFO] [stderr] Checking spade v2.15.0 [INFO] [stderr] Checking http-body v1.0.1 [INFO] [stderr] Checking i_overlay v2.0.5 [INFO] [stderr] Checking chrono-tz v0.10.4 [INFO] [stderr] Checking http-body-util v0.1.3 [INFO] [stderr] Checking thiserror v1.0.69 [INFO] [stderr] Checking protobuf-support v3.7.2 [INFO] [stderr] Checking deku v0.15.1 [INFO] [stderr] Checking console_error_panic_hook v0.1.7 [INFO] [stderr] Compiling zstd-safe v7.2.4 [INFO] [stderr] Checking zstd v0.13.3 [INFO] [stderr] Checking geo v0.30.0 [INFO] [stderr] Checking pmtiles2 v0.3.1 (/opt/rustwide/workdir/vendor/pmtiles2) [INFO] [stdout] warning: package `geograph` is missing `either package.license or package.license_file` metadata [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cargo_common_metadata [INFO] [stdout] note: the lint level is defined here [INFO] [stdout] --> vendor/pmtiles2/src/lib.rs:63:9 [INFO] [stdout] | [INFO] [stdout] 63 | #![warn(clippy::cargo)] [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] = note: `#[warn(clippy::cargo_common_metadata)]` implied by `#[warn(clippy::cargo)]` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: package `geograph` is missing `package.repository` metadata [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cargo_common_metadata [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: package `geograph` is missing `package.keywords` metadata [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cargo_common_metadata [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: package `geograph` is missing `package.categories` metadata [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cargo_common_metadata [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: package `openmander` is missing `either package.license or package.license_file` metadata [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cargo_common_metadata [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this could be a `const fn` [INFO] [stdout] --> vendor/pmtiles2/src/directory.rs:69:5 [INFO] [stdout] | [INFO] [stdout] 69 | / pub fn len(&self) -> usize { [INFO] [stdout] 70 | | self.entries.len() [INFO] [stdout] 71 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#missing_const_for_fn [INFO] [stdout] note: the lint level is defined here [INFO] [stdout] --> vendor/pmtiles2/src/lib.rs:65:9 [INFO] [stdout] | [INFO] [stdout] 65 | #![warn(clippy::nursery)] [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] = note: `#[warn(clippy::missing_const_for_fn)]` implied by `#[warn(clippy::nursery)]` [INFO] [stdout] help: make the function `const` [INFO] [stdout] | [INFO] [stdout] 69 | pub const fn len(&self) -> usize { [INFO] [stdout] | +++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this could be a `const fn` [INFO] [stdout] --> vendor/pmtiles2/src/directory.rs:74:5 [INFO] [stdout] | [INFO] [stdout] 74 | / pub fn is_empty(&self) -> bool { [INFO] [stdout] 75 | | self.entries.is_empty() [INFO] [stdout] 76 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#missing_const_for_fn [INFO] [stdout] help: make the function `const` [INFO] [stdout] | [INFO] [stdout] 74 | pub const fn is_empty(&self) -> bool { [INFO] [stdout] | +++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: doc comment uses two spaces for a hard line break [INFO] [stdout] --> vendor/pmtiles2/src/pmtiles.rs:137:59 [INFO] [stdout] | [INFO] [stdout] 137 | /// The data will **NOT** be compressed automatically. [INFO] [stdout] | ^^ [INFO] [stdout] | [INFO] [stdout] = help: replace this double space with a backslash: `\` [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#doc_comment_double_space_linebreaks [INFO] [stdout] note: the lint level is defined here [INFO] [stdout] --> vendor/pmtiles2/src/lib.rs:64:9 [INFO] [stdout] | [INFO] [stdout] 64 | #![warn(clippy::pedantic)] [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] = note: `#[warn(clippy::doc_comment_double_space_linebreaks)]` implied by `#[warn(clippy::pedantic)]` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: doc comment uses two spaces for a hard line break [INFO] [stdout] --> vendor/pmtiles2/src/pmtiles.rs:162:49 [INFO] [stdout] | [INFO] [stdout] 162 | /// if it was compressed in the first place. [INFO] [stdout] | ^^ [INFO] [stdout] | [INFO] [stdout] = help: replace this double space with a backslash: `\` [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#doc_comment_double_space_linebreaks [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: consider using `sort_by_key` [INFO] [stdout] --> vendor/pmtiles2/src/tile_manager.rs:200:9 [INFO] [stdout] | [INFO] [stdout] 200 | id_tile.sort_by(|a, b| a.0.cmp(&b.0)); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_sort_by [INFO] [stdout] = note: `#[warn(clippy::unnecessary_sort_by)]` on by default [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 200 - id_tile.sort_by(|a, b| a.0.cmp(&b.0)); [INFO] [stdout] 200 + id_tile.sort_by_key(|a| a.0); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this can be `std::io::Error::other(_)` [INFO] [stdout] --> vendor/pmtiles2/src/util/compress.rs:49:37 [INFO] [stdout] | [INFO] [stdout] 49 | Compression::Unknown => Err(Error::new( [INFO] [stdout] | _____________________________________^ [INFO] [stdout] 50 | | ErrorKind::Other, [INFO] [stdout] 51 | | "Cannot compress for Compression Unknown", [INFO] [stdout] 52 | | )), [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#io_other_error [INFO] [stdout] = note: `#[warn(clippy::io_other_error)]` on by default [INFO] [stdout] help: use `std::io::Error::other` [INFO] [stdout] | [INFO] [stdout] 49 ~ Compression::Unknown => Err(Error::other( [INFO] [stdout] 50 ~ "Cannot compress for Compression Unknown", [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this can be `std::io::Error::other(_)` [INFO] [stdout] --> vendor/pmtiles2/src/util/compress.rs:174:37 [INFO] [stdout] | [INFO] [stdout] 174 | Compression::Unknown => Err(Error::new( [INFO] [stdout] | _____________________________________^ [INFO] [stdout] 175 | | ErrorKind::Other, [INFO] [stdout] 176 | | "Cannot decompress for Compression Unknown", [INFO] [stdout] 177 | | )), [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#io_other_error [INFO] [stdout] help: use `std::io::Error::other` [INFO] [stdout] | [INFO] [stdout] 174 ~ Compression::Unknown => Err(Error::other( [INFO] [stdout] 175 ~ "Cannot decompress for Compression Unknown", [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] Checking web-sys v0.3.83 [INFO] [stderr] Checking serde-wasm-bindgen v0.6.5 [INFO] [stderr] Checking mvt v0.10.3 [INFO] [stderr] Checking tokio-util v0.7.17 [INFO] [stderr] Checking tower v0.5.2 [INFO] [stderr] Checking tokio-rustls v0.26.4 [INFO] [stderr] Checking tokio-stream v0.1.18 [INFO] [stderr] Checking geograph v0.1.3 (/opt/rustwide/workdir/crates/geograph) [INFO] [stderr] Checking tokio-test v0.4.5 [INFO] [stderr] Checking tower-http v0.6.7 [INFO] [stderr] Checking h2 v0.4.12 [INFO] [stdout] warning: consider using `sort_unstable_by_key` [INFO] [stdout] --> crates/geograph/src/adj.rs:67:9 [INFO] [stdout] | [INFO] [stdout] 67 | triples.sort_unstable_by(|a, b| (a.0, a.1).cmp(&(b.0, b.1))); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_sort_by [INFO] [stdout] = note: `#[warn(clippy::unnecessary_sort_by)]` on by default [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 67 - triples.sort_unstable_by(|a, b| (a.0, a.1).cmp(&(b.0, b.1))); [INFO] [stdout] 67 + triples.sort_unstable_by_key(|a| (a.0, a.1)); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> crates/geograph/src/adj.rs:72:13 [INFO] [stdout] | [INFO] [stdout] 72 | / if let Some(last) = merged.last_mut() { [INFO] [stdout] 73 | | if last.0 == u && last.1 == v { [INFO] [stdout] 74 | | last.2 += w; [INFO] [stdout] 75 | | continue; [INFO] [stdout] 76 | | } [INFO] [stdout] 77 | | } [INFO] [stdout] | |_____________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] = note: `#[warn(clippy::collapsible_if)]` on by default [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 72 ~ if let Some(last) = merged.last_mut() [INFO] [stdout] 73 ~ && last.0 == u && last.1 == v { [INFO] [stdout] 74 | last.2 += w; [INFO] [stdout] 75 | continue; [INFO] [stdout] 76 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual implementation of `.is_multiple_of()` [INFO] [stdout] --> crates/geograph/src/io/read.rs:37:8 [INFO] [stdout] | [INFO] [stdout] 37 | if nhe % 2 != 0 { [INFO] [stdout] | ^^^^^^^^^^^^ help: replace with: `!nhe.is_multiple_of(2)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_is_multiple_of [INFO] [stdout] = note: `#[warn(clippy::manual_is_multiple_of)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the loop variable `h` is used to index `half_edges` [INFO] [stdout] --> crates/geograph/src/io/read.rs:72:14 [INFO] [stdout] | [INFO] [stdout] 72 | for h in 0..nhe { [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 and enumerate() [INFO] [stdout] | [INFO] [stdout] 72 - for h in 0..nhe { [INFO] [stdout] 72 + for (h, ) in half_edges.iter().enumerate().take(nhe) { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the loop variable `f` is used to index `face_to_unit` [INFO] [stdout] --> crates/geograph/src/io/read.rs:317:14 [INFO] [stdout] | [INFO] [stdout] 317 | for f in 0..dcel.num_faces() { [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 and enumerate() [INFO] [stdout] | [INFO] [stdout] 317 - for f in 0..dcel.num_faces() { [INFO] [stdout] 317 + for (f, ) in face_to_unit.iter().enumerate().take(dcel.num_faces()) { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> crates/geograph/src/region/build.rs:330:21 [INFO] [stdout] | [INFO] [stdout] 330 | / if let Some(&he) = seen_edges.get(&pack_edge(a, b)) { [INFO] [stdout] 331 | | if dcel.half_edge(he).face == face { [INFO] [stdout] 332 | | dcel.face_mut(face).half_edge = Some(he); [INFO] [stdout] 333 | | break 'find_outer; [INFO] [stdout] 334 | | } [INFO] [stdout] 335 | | } [INFO] [stdout] | |_____________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 330 ~ if let Some(&he) = seen_edges.get(&pack_edge(a, b)) [INFO] [stdout] 331 ~ && dcel.half_edge(he).face == face { [INFO] [stdout] 332 | dcel.face_mut(face).half_edge = Some(he); [INFO] [stdout] 333 | break 'find_outer; [INFO] [stdout] 334 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the loop variable `v` is used to index `outgoing` [INFO] [stdout] --> crates/geograph/src/region/build.rs:369:18 [INFO] [stdout] | [INFO] [stdout] 369 | for v in 0..num_vertices { [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 and enumerate() [INFO] [stdout] | [INFO] [stdout] 369 - for v in 0..num_vertices { [INFO] [stdout] 369 + for (v, ) in outgoing.iter_mut().enumerate().take(num_vertices) { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the loop variable `v` is only used to index `outgoing` [INFO] [stdout] --> crates/geograph/src/region/build.rs:381:18 [INFO] [stdout] | [INFO] [stdout] 381 | for v in 0..num_vertices { [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] 381 - for v in 0..num_vertices { [INFO] [stdout] 381 + for in outgoing.iter().take(num_vertices) { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the loop variable `e` is used to index `edge_length` [INFO] [stdout] --> crates/geograph/src/region/build.rs:462:18 [INFO] [stdout] | [INFO] [stdout] 462 | for e in 0..n_edges { [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 and enumerate() [INFO] [stdout] | [INFO] [stdout] 462 - for e in 0..n_edges { [INFO] [stdout] 462 + for (e, ) in edge_length.iter_mut().enumerate().take(n_edges) { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the loop variable `f` is used to index `face_to_unit` [INFO] [stdout] --> crates/geograph/src/region/build.rs:471:18 [INFO] [stdout] | [INFO] [stdout] 471 | for f in 0..dcel.num_faces() { [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 and enumerate() [INFO] [stdout] | [INFO] [stdout] 471 - for f in 0..dcel.num_faces() { [INFO] [stdout] 471 + for (f, ) in face_to_unit.iter().enumerate().take(dcel.num_faces()) { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the loop variable `h` is used to index `is_boundary` [INFO] [stdout] --> crates/geograph/src/region/geom.rs:179:18 [INFO] [stdout] | [INFO] [stdout] 179 | for h in 0..nhe { [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 and enumerate() [INFO] [stdout] | [INFO] [stdout] 179 - for h in 0..nhe { [INFO] [stdout] 179 + for (h, ) in is_boundary.iter_mut().enumerate().take(nhe) { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the loop variable `h` is used to index `is_boundary` [INFO] [stdout] --> crates/geograph/src/region/geom.rs:243:18 [INFO] [stdout] | [INFO] [stdout] 243 | for h in 0..nhe { [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 and enumerate() [INFO] [stdout] | [INFO] [stdout] 243 - for h in 0..nhe { [INFO] [stdout] 243 + for (h, ) in is_boundary.iter_mut().enumerate().take(nhe) { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: very complex type used. Consider factoring parts into `type` definitions [INFO] [stdout] --> crates/geograph/src/region/geom.rs:291:25 [INFO] [stdout] | [INFO] [stdout] 291 | let mut outers: Vec<(Vec>, Vec>)> = Vec::new(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#type_complexity [INFO] [stdout] = note: `#[warn(clippy::type_complexity)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: very complex type used. Consider factoring parts into `type` definitions [INFO] [stdout] --> crates/geograph/src/region/geom.rs:391:25 [INFO] [stdout] | [INFO] [stdout] 391 | let mut outers: Vec<(Vec>, Vec>)> = Vec::new(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#type_complexity [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual implementation of `Iterator::find` [INFO] [stdout] --> crates/geograph/src/region/geom.rs:460:9 [INFO] [stdout] | [INFO] [stdout] 460 | / for uid in self.rtree.query_point([point.x, point.y]) { [INFO] [stdout] 461 | | if self.geometries[uid.0 as usize].contains(&geo_point) { [INFO] [stdout] 462 | | return Some(uid); [INFO] [stdout] ... | [INFO] [stdout] 465 | | None [INFO] [stdout] | |____________^ help: replace with an iterator: `self.rtree.query_point([point.x, point.y]).find(|&uid| self.geometries[uid.0 as usize].contains(&geo_point))` [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: the loop variable `vi` is used to index `coords` [INFO] [stdout] --> crates/geograph/src/snap.rs:134:15 [INFO] [stdout] | [INFO] [stdout] 134 | for vi in 0..n { [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 and enumerate() [INFO] [stdout] | [INFO] [stdout] 134 - for vi in 0..n { [INFO] [stdout] 134 + for (vi, ) in coords.iter().enumerate().take(n) { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: package `geograph` is missing `either package.license or package.license_file` metadata [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cargo_common_metadata [INFO] [stdout] note: the lint level is defined here [INFO] [stdout] --> vendor/pmtiles2/src/lib.rs:63:9 [INFO] [stdout] | [INFO] [stdout] 63 | #![warn(clippy::cargo)] [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] = note: `#[warn(clippy::cargo_common_metadata)]` implied by `#[warn(clippy::cargo)]` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: package `geograph` is missing `package.repository` metadata [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cargo_common_metadata [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: package `geograph` is missing `package.keywords` metadata [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cargo_common_metadata [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: package `geograph` is missing `package.categories` metadata [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cargo_common_metadata [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: package `openmander` is missing `either package.license or package.license_file` metadata [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cargo_common_metadata [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this could be a `const fn` [INFO] [stdout] --> vendor/pmtiles2/src/directory.rs:69:5 [INFO] [stdout] | [INFO] [stdout] 69 | / pub fn len(&self) -> usize { [INFO] [stdout] 70 | | self.entries.len() [INFO] [stdout] 71 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#missing_const_for_fn [INFO] [stdout] note: the lint level is defined here [INFO] [stdout] --> vendor/pmtiles2/src/lib.rs:65:9 [INFO] [stdout] | [INFO] [stdout] 65 | #![warn(clippy::nursery)] [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] = note: `#[warn(clippy::missing_const_for_fn)]` implied by `#[warn(clippy::nursery)]` [INFO] [stdout] help: make the function `const` [INFO] [stdout] | [INFO] [stdout] 69 | pub const fn len(&self) -> usize { [INFO] [stdout] | +++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this could be a `const fn` [INFO] [stdout] --> vendor/pmtiles2/src/directory.rs:74:5 [INFO] [stdout] | [INFO] [stdout] 74 | / pub fn is_empty(&self) -> bool { [INFO] [stdout] 75 | | self.entries.is_empty() [INFO] [stdout] 76 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#missing_const_for_fn [INFO] [stdout] help: make the function `const` [INFO] [stdout] | [INFO] [stdout] 74 | pub const fn is_empty(&self) -> bool { [INFO] [stdout] | +++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `repeat().take()` can be written more concisely [INFO] [stdout] --> crates/geograph/tests/io.rs:88:16 [INFO] [stdout] | [INFO] [stdout] 88 | buf.extend(std::iter::repeat(0u8).take(64)); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using `repeat_n()` instead: `std::iter::repeat_n(0u8, 64)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_repeat_n [INFO] [stdout] = note: `#[warn(clippy::manual_repeat_n)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: doc comment uses two spaces for a hard line break [INFO] [stdout] --> vendor/pmtiles2/src/pmtiles.rs:137:59 [INFO] [stdout] | [INFO] [stdout] 137 | /// The data will **NOT** be compressed automatically. [INFO] [stdout] | ^^ [INFO] [stdout] | [INFO] [stdout] = help: replace this double space with a backslash: `\` [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#doc_comment_double_space_linebreaks [INFO] [stdout] note: the lint level is defined here [INFO] [stdout] --> vendor/pmtiles2/src/lib.rs:64:9 [INFO] [stdout] | [INFO] [stdout] 64 | #![warn(clippy::pedantic)] [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] = note: `#[warn(clippy::doc_comment_double_space_linebreaks)]` implied by `#[warn(clippy::pedantic)]` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: doc comment uses two spaces for a hard line break [INFO] [stdout] --> vendor/pmtiles2/src/pmtiles.rs:162:49 [INFO] [stdout] | [INFO] [stdout] 162 | /// if it was compressed in the first place. [INFO] [stdout] | ^^ [INFO] [stdout] | [INFO] [stdout] = help: replace this double space with a backslash: `\` [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#doc_comment_double_space_linebreaks [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: consider using `sort_by_key` [INFO] [stdout] --> vendor/pmtiles2/src/tile_manager.rs:200:9 [INFO] [stdout] | [INFO] [stdout] 200 | id_tile.sort_by(|a, b| a.0.cmp(&b.0)); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_sort_by [INFO] [stdout] = note: `#[warn(clippy::unnecessary_sort_by)]` on by default [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 200 - id_tile.sort_by(|a, b| a.0.cmp(&b.0)); [INFO] [stdout] 200 + id_tile.sort_by_key(|a| a.0); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this can be `std::io::Error::other(_)` [INFO] [stdout] --> vendor/pmtiles2/src/util/compress.rs:49:37 [INFO] [stdout] | [INFO] [stdout] 49 | Compression::Unknown => Err(Error::new( [INFO] [stdout] | _____________________________________^ [INFO] [stdout] 50 | | ErrorKind::Other, [INFO] [stdout] 51 | | "Cannot compress for Compression Unknown", [INFO] [stdout] 52 | | )), [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#io_other_error [INFO] [stdout] = note: `#[warn(clippy::io_other_error)]` on by default [INFO] [stdout] help: use `std::io::Error::other` [INFO] [stdout] | [INFO] [stdout] 49 ~ Compression::Unknown => Err(Error::other( [INFO] [stdout] 50 ~ "Cannot compress for Compression Unknown", [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this can be `std::io::Error::other(_)` [INFO] [stdout] --> vendor/pmtiles2/src/util/compress.rs:174:37 [INFO] [stdout] | [INFO] [stdout] 174 | Compression::Unknown => Err(Error::new( [INFO] [stdout] | _____________________________________^ [INFO] [stdout] 175 | | ErrorKind::Other, [INFO] [stdout] 176 | | "Cannot decompress for Compression Unknown", [INFO] [stdout] 177 | | )), [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#io_other_error [INFO] [stdout] help: use `std::io::Error::other` [INFO] [stdout] | [INFO] [stdout] 174 ~ Compression::Unknown => Err(Error::other( [INFO] [stdout] 175 ~ "Cannot decompress for Compression Unknown", [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: consider using `sort_unstable_by_key` [INFO] [stdout] --> crates/geograph/src/adj.rs:67:9 [INFO] [stdout] | [INFO] [stdout] 67 | triples.sort_unstable_by(|a, b| (a.0, a.1).cmp(&(b.0, b.1))); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_sort_by [INFO] [stdout] = note: `#[warn(clippy::unnecessary_sort_by)]` on by default [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 67 - triples.sort_unstable_by(|a, b| (a.0, a.1).cmp(&(b.0, b.1))); [INFO] [stdout] 67 + triples.sort_unstable_by_key(|a| (a.0, a.1)); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> crates/geograph/src/adj.rs:72:13 [INFO] [stdout] | [INFO] [stdout] 72 | / if let Some(last) = merged.last_mut() { [INFO] [stdout] 73 | | if last.0 == u && last.1 == v { [INFO] [stdout] 74 | | last.2 += w; [INFO] [stdout] 75 | | continue; [INFO] [stdout] 76 | | } [INFO] [stdout] 77 | | } [INFO] [stdout] | |_____________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] = note: `#[warn(clippy::collapsible_if)]` on by default [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 72 ~ if let Some(last) = merged.last_mut() [INFO] [stdout] 73 ~ && last.0 == u && last.1 == v { [INFO] [stdout] 74 | last.2 += w; [INFO] [stdout] 75 | continue; [INFO] [stdout] 76 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: very complex type used. Consider factoring parts into `type` definitions [INFO] [stdout] --> crates/geograph/src/dcel.rs:301:27 [INFO] [stdout] | [INFO] [stdout] 301 | fn make_triangle() -> (Dcel<(f64, f64)>, [VertexId; 3], FaceId, [HalfEdgeId; 6]) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#type_complexity [INFO] [stdout] = note: `#[warn(clippy::type_complexity)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: very complex type used. Consider factoring parts into `type` definitions [INFO] [stdout] --> crates/geograph/src/dcel.rs:327:25 [INFO] [stdout] | [INFO] [stdout] 327 | fn make_square() -> (Dcel<(f64, f64)>, [VertexId; 4], FaceId, [HalfEdgeId; 8]) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#type_complexity [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: very complex type used. Consider factoring parts into `type` definitions [INFO] [stdout] --> crates/geograph/src/dcel.rs:363:24 [INFO] [stdout] | [INFO] [stdout] 363 | fn make_wheel() -> (Dcel<(f64, f64)>, [VertexId; 5], [FaceId; 4], [HalfEdgeId; 16]) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#type_complexity [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: very complex type used. Consider factoring parts into `type` definitions [INFO] [stdout] --> crates/geograph/src/dcel.rs:432:25 [INFO] [stdout] | [INFO] [stdout] 432 | fn make_nested() -> (Dcel<(f64, f64)>, [VertexId; 6], [FaceId; 2], [HalfEdgeId; 12]) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#type_complexity [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual implementation of `.is_multiple_of()` [INFO] [stdout] --> crates/geograph/src/io/read.rs:37:8 [INFO] [stdout] | [INFO] [stdout] 37 | if nhe % 2 != 0 { [INFO] [stdout] | ^^^^^^^^^^^^ help: replace with: `!nhe.is_multiple_of(2)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_is_multiple_of [INFO] [stdout] = note: `#[warn(clippy::manual_is_multiple_of)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the loop variable `h` is used to index `half_edges` [INFO] [stdout] --> crates/geograph/src/io/read.rs:72:14 [INFO] [stdout] | [INFO] [stdout] 72 | for h in 0..nhe { [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 and enumerate() [INFO] [stdout] | [INFO] [stdout] 72 - for h in 0..nhe { [INFO] [stdout] 72 + for (h, ) in half_edges.iter().enumerate().take(nhe) { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the loop variable `f` is used to index `face_to_unit` [INFO] [stdout] --> crates/geograph/src/io/read.rs:317:14 [INFO] [stdout] | [INFO] [stdout] 317 | for f in 0..dcel.num_faces() { [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 and enumerate() [INFO] [stdout] | [INFO] [stdout] 317 - for f in 0..dcel.num_faces() { [INFO] [stdout] 317 + for (f, ) in face_to_unit.iter().enumerate().take(dcel.num_faces()) { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `repeat().take()` can be written more concisely [INFO] [stdout] --> crates/geograph/src/io.rs:164:20 [INFO] [stdout] | [INFO] [stdout] 164 | buf.extend(std::iter::repeat(0u8).take(64)); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using `repeat_n()` instead: `std::iter::repeat_n(0u8, 64)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_repeat_n [INFO] [stdout] = note: `#[warn(clippy::manual_repeat_n)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> crates/geograph/src/region/build.rs:330:21 [INFO] [stdout] | [INFO] [stdout] 330 | / if let Some(&he) = seen_edges.get(&pack_edge(a, b)) { [INFO] [stdout] 331 | | if dcel.half_edge(he).face == face { [INFO] [stdout] 332 | | dcel.face_mut(face).half_edge = Some(he); [INFO] [stdout] 333 | | break 'find_outer; [INFO] [stdout] 334 | | } [INFO] [stdout] 335 | | } [INFO] [stdout] | |_____________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 330 ~ if let Some(&he) = seen_edges.get(&pack_edge(a, b)) [INFO] [stdout] 331 ~ && dcel.half_edge(he).face == face { [INFO] [stdout] 332 | dcel.face_mut(face).half_edge = Some(he); [INFO] [stdout] 333 | break 'find_outer; [INFO] [stdout] 334 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the loop variable `v` is used to index `outgoing` [INFO] [stdout] --> crates/geograph/src/region/build.rs:369:18 [INFO] [stdout] | [INFO] [stdout] 369 | for v in 0..num_vertices { [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 and enumerate() [INFO] [stdout] | [INFO] [stdout] 369 - for v in 0..num_vertices { [INFO] [stdout] 369 + for (v, ) in outgoing.iter_mut().enumerate().take(num_vertices) { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the loop variable `v` is only used to index `outgoing` [INFO] [stdout] --> crates/geograph/src/region/build.rs:381:18 [INFO] [stdout] | [INFO] [stdout] 381 | for v in 0..num_vertices { [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] 381 - for v in 0..num_vertices { [INFO] [stdout] 381 + for in outgoing.iter().take(num_vertices) { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the loop variable `e` is used to index `edge_length` [INFO] [stdout] --> crates/geograph/src/region/build.rs:462:18 [INFO] [stdout] | [INFO] [stdout] 462 | for e in 0..n_edges { [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 and enumerate() [INFO] [stdout] | [INFO] [stdout] 462 - for e in 0..n_edges { [INFO] [stdout] 462 + for (e, ) in edge_length.iter_mut().enumerate().take(n_edges) { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the loop variable `f` is used to index `face_to_unit` [INFO] [stdout] --> crates/geograph/src/region/build.rs:471:18 [INFO] [stdout] | [INFO] [stdout] 471 | for f in 0..dcel.num_faces() { [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 and enumerate() [INFO] [stdout] | [INFO] [stdout] 471 - for f in 0..dcel.num_faces() { [INFO] [stdout] 471 + for (f, ) in face_to_unit.iter().enumerate().take(dcel.num_faces()) { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the loop variable `h` is used to index `is_boundary` [INFO] [stdout] --> crates/geograph/src/region/geom.rs:179:18 [INFO] [stdout] | [INFO] [stdout] 179 | for h in 0..nhe { [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 and enumerate() [INFO] [stdout] | [INFO] [stdout] 179 - for h in 0..nhe { [INFO] [stdout] 179 + for (h, ) in is_boundary.iter_mut().enumerate().take(nhe) { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the loop variable `h` is used to index `is_boundary` [INFO] [stdout] --> crates/geograph/src/region/geom.rs:243:18 [INFO] [stdout] | [INFO] [stdout] 243 | for h in 0..nhe { [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 and enumerate() [INFO] [stdout] | [INFO] [stdout] 243 - for h in 0..nhe { [INFO] [stdout] 243 + for (h, ) in is_boundary.iter_mut().enumerate().take(nhe) { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: very complex type used. Consider factoring parts into `type` definitions [INFO] [stdout] --> crates/geograph/src/region/geom.rs:291:25 [INFO] [stdout] | [INFO] [stdout] 291 | let mut outers: Vec<(Vec>, Vec>)> = Vec::new(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#type_complexity [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: very complex type used. Consider factoring parts into `type` definitions [INFO] [stdout] --> crates/geograph/src/region/geom.rs:391:25 [INFO] [stdout] | [INFO] [stdout] 391 | let mut outers: Vec<(Vec>, Vec>)> = Vec::new(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#type_complexity [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual implementation of `Iterator::find` [INFO] [stdout] --> crates/geograph/src/region/geom.rs:460:9 [INFO] [stdout] | [INFO] [stdout] 460 | / for uid in self.rtree.query_point([point.x, point.y]) { [INFO] [stdout] 461 | | if self.geometries[uid.0 as usize].contains(&geo_point) { [INFO] [stdout] 462 | | return Some(uid); [INFO] [stdout] ... | [INFO] [stdout] 465 | | None [INFO] [stdout] | |____________^ help: replace with an iterator: `self.rtree.query_point([point.x, point.y]).find(|&uid| self.geometries[uid.0 as usize].contains(&geo_point))` [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: the loop variable `vi` is used to index `coords` [INFO] [stdout] --> crates/geograph/src/snap.rs:134:15 [INFO] [stdout] | [INFO] [stdout] 134 | for vi in 0..n { [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 and enumerate() [INFO] [stdout] | [INFO] [stdout] 134 - for vi in 0..n { [INFO] [stdout] 134 + for (vi, ) in coords.iter().enumerate().take(n) { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] Checking hyper v1.8.1 [INFO] [stderr] Checking lz4 v1.28.1 [INFO] [stderr] Checking hyper-util v0.1.19 [INFO] [stderr] Checking hyper-rustls v0.27.7 [INFO] [stderr] Checking reqwest v0.12.24 [INFO] [stderr] Checking object_store v0.12.4 [INFO] [stderr] Checking polars-error v0.50.0 [INFO] [stderr] Checking polars-dtype v0.50.0 [INFO] [stderr] Checking polars-row v0.50.0 [INFO] [stderr] Checking polars-parquet v0.50.0 [INFO] [stderr] Checking polars-json v0.50.0 [INFO] [stderr] Checking polars-io v0.50.0 [INFO] [stderr] Checking polars-expr v0.50.0 [INFO] [stderr] Checking polars-mem-engine v0.50.0 [INFO] [stderr] Checking openmander v0.1.3 (/opt/rustwide/workdir) [INFO] [stdout] warning: redundant field names in struct initialization [INFO] [stdout] --> src/map/pack/manifest.rs:67:13 [INFO] [stdout] | [INFO] [stdout] 67 | files: files, [INFO] [stdout] | ^^^^^^^^^^^^ help: replace it with: `files` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stdout] = note: `#[warn(clippy::redundant_field_names)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant field names in struct initialization [INFO] [stdout] --> src/map/pack/manifest.rs:67:13 [INFO] [stdout] | [INFO] [stdout] 67 | files: files, [INFO] [stdout] | ^^^^^^^^^^^^ help: replace it with: `files` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stdout] = note: `#[warn(clippy::redundant_field_names)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `edge_endpoints` and `edge` are never used [INFO] [stdout] --> src/graph/unit_graph.rs:49:19 [INFO] [stdout] | [INFO] [stdout] 20 | impl UnitGraph { [INFO] [stdout] | -------------- methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 49 | pub(crate) fn edge_endpoints(&self, edge_idx: usize) -> Option<(usize, usize)> { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 57 | pub(crate) fn edge(&self, node: usize, i: usize) -> Option { [INFO] [stdout] | ^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `print_progress` and `print_progress_with_avg_prob` are never used [INFO] [stdout] --> src/partition/algorithm/anneal.rs:452:8 [INFO] [stdout] | [INFO] [stdout] 61 | impl Partition { [INFO] [stdout] | -------------- methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 452 | fn print_progress( [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 477 | fn print_progress_with_avg_prob( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `random_node` and `random_edge` are never used [INFO] [stdout] --> src/partition/algorithm/randomize.rs:7:19 [INFO] [stdout] | [INFO] [stdout] 5 | impl Partition { [INFO] [stdout] | -------------- methods in this implementation [INFO] [stdout] 6 | /// Select a random node from the map. [INFO] [stdout] 7 | pub(crate) fn random_node(&self, rng: &mut R) -> usize { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 30 | pub(crate) fn random_edge(&self, node: usize, rng: &mut R) -> Option { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `find_components`, `check_contiguity`, and `ensure_contiguity` are never used [INFO] [stdout] --> src/partition/contiguity.rs:182:19 [INFO] [stdout] | [INFO] [stdout] 5 | impl Partition { [INFO] [stdout] | -------------- methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 182 | pub(crate) fn find_components(&self, part: u32) -> Vec> { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 207 | pub(crate) fn check_contiguity(&self) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 217 | pub(crate) fn ensure_contiguity(&mut self) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `reock`, `moment`, and `convex_hull` are never used [INFO] [stdout] --> src/partition/metrics/compactness.rs:44:19 [INFO] [stdout] | [INFO] [stdout] 5 | impl Partition { [INFO] [stdout] | -------------- methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 44 | pub(crate) fn reock(&self, part: u32) -> f64 { todo!() } [INFO] [stdout] | ^^^^^ [INFO] [stdout] ... [INFO] [stdout] 49 | pub(crate) fn moment(&self, part: u32) -> f64 { todo!() } [INFO] [stdout] | ^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 55 | pub(crate) fn convex_hull(&self, part: u32) -> f64 { todo!() } [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `minority_opportunity` is never used [INFO] [stdout] --> src/partition/metrics/demographic.rs:34:19 [INFO] [stdout] | [INFO] [stdout] 3 | impl Partition { [INFO] [stdout] | -------------- method in this implementation [INFO] [stdout] ... [INFO] [stdout] 34 | pub(crate) fn minority_opportunity(&self, part: u32, pop_series: &str, min_series: &str) -> f64 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `proportionality` and `partisan_bias` are never used [INFO] [stdout] --> src/partition/metrics/electoral.rs:33:19 [INFO] [stdout] | [INFO] [stdout] 3 | impl Partition { [INFO] [stdout] | -------------- methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 33 | pub(crate) fn proportionality(&self, dem_series: &str, rep_series: &str) -> Vec { todo!() } [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 37 | pub(crate) fn partisan_bias(&self, dem_series: &str, rep_series: &str) -> Vec { todo!(); } [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `county_splits` is never used [INFO] [stdout] --> src/partition/metrics/splits.rs:5:19 [INFO] [stdout] | [INFO] [stdout] 3 | impl Partition { [INFO] [stdout] | -------------- method in this implementation [INFO] [stdout] 4 | /// Compute the number of county splits in the partition. [INFO] [stdout] 5 | pub(crate) fn county_splits(&self) -> Vec { todo!(); } [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `root` and `parent` are never read [INFO] [stdout] --> src/partition/ops/recombine.rs:6:5 [INFO] [stdout] | [INFO] [stdout] 5 | struct SpanningTree { [INFO] [stdout] | ------------ fields in this struct [INFO] [stdout] 6 | root: usize, [INFO] [stdout] | ^^^^ [INFO] [stdout] 7 | parent: Vec>, // parent[root] = root; None if node not in tree. [INFO] [stdout] | ^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `SpanningTree` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `in_tree` and `random_edge` are never used [INFO] [stdout] --> src/partition/ops/recombine.rs:14:22 [INFO] [stdout] | [INFO] [stdout] 13 | impl SpanningTree { [INFO] [stdout] | ----------------- methods in this implementation [INFO] [stdout] 14 | #[inline] pub fn in_tree(&self, node: usize) -> bool { self.parent[node].is_some() } [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 25 | pub fn random_edge(&self, rng: &mut impl rand::Rng) -> Option<(usize, usize)> { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `part_nodes`, `frontier_edges`, `frontier_edge_endpoints`, `verify_frontier_edges`, `frontier_cycle`, and `part_weights_mut` are never used [INFO] [stdout] --> src/partition/partition.rs:72:19 [INFO] [stdout] | [INFO] [stdout] 20 | impl Partition { [INFO] [stdout] | -------------- methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 72 | pub(crate) fn part_nodes(&self, part: u32) -> Vec { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 110 | pub(crate) fn frontier_edges(&self, part: u32) -> &[usize] { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 116 | pub(crate) fn frontier_edge_endpoints(&self, part: u32) -> Vec<(usize, usize)> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 126 | pub(crate) fn verify_frontier_edges(&self) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 172 | pub(crate) fn frontier_cycle(&self, part: u32) -> Vec { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 312 | pub(super) fn part_weights_mut(&mut self) -> &mut WeightMatrix { self.part_graph.node_weights_mut() } [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: multiple associated items are never used [INFO] [stdout] --> src/partition/structures/edge_list.rs:34:29 [INFO] [stdout] | [INFO] [stdout] 23 | impl FrontierEdgeList { [INFO] [stdout] | --------------------- associated items in this implementation [INFO] [stdout] ... [INFO] [stdout] 34 | #[inline] pub(crate) fn num_parts(&self) -> usize { self.parts.len() } [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] 35 | [INFO] [stdout] 36 | #[inline] pub(crate) fn num_directed_edges(&self) -> usize { self.loc.len() } [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 44 | pub(crate) fn find(&self, edge: usize) -> Option { [INFO] [stdout] | ^^^^ [INFO] [stdout] ... [INFO] [stdout] 50 | #[inline] pub(crate) fn contains(&self, edge: usize) -> bool { self.find(edge).is_some() } [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 54 | pub(crate) fn get(&self, part: usize) -> &[usize] { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 61 | pub(crate) fn is_empty_part(&self, part: usize) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 67 | pub(crate) fn iter(&self) -> impl Iterator + '_ { [INFO] [stdout] | ^^^^ [INFO] [stdout] ... [INFO] [stdout] 73 | pub(crate) fn iter_all(&self) -> impl Iterator + '_ { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 87 | pub(crate) fn rebuild_from(&mut self, iter: I) [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 150 | pub(crate) fn walk_boundary( [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 225 | fn next_frontier_edge( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `HullSet` is never constructed [INFO] [stdout] --> src/partition/structures/hull_set.rs:3:19 [INFO] [stdout] | [INFO] [stdout] 3 | pub(crate) struct HullSet { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `num_sets`, `num_elems`, `find`, `contains`, and `iter_all` are never used [INFO] [stdout] --> src/partition/structures/multi_set.rs:19:29 [INFO] [stdout] | [INFO] [stdout] 8 | impl MultiSet { [INFO] [stdout] | ------------- methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 19 | #[inline] pub(crate) fn num_sets(&self) -> usize { self.sets.len() } [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 22 | #[inline] pub(crate) fn num_elems(&self) -> usize { self.index.len() } [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 26 | pub(crate) fn find(&self, elem: usize) -> Option { [INFO] [stdout] | ^^^^ [INFO] [stdout] ... [INFO] [stdout] 32 | #[inline] pub(crate) fn contains(&self, elem: usize) -> bool { self.find(elem).is_some() } [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 49 | pub(crate) fn iter_all(&self) -> impl Iterator + '_ { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `iter_sets` and `iter_all` are never used [INFO] [stdout] --> src/partition/structures/partition_set.rs:51:12 [INFO] [stdout] | [INFO] [stdout] 9 | impl PartitionSet { [INFO] [stdout] | ----------------- methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 51 | pub fn iter_sets(&self) -> impl Iterator + '_ { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 57 | pub fn iter_all(&self) -> impl Iterator + '_ { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/io/svg/geometry.rs:76:9 [INFO] [stdout] | [INFO] [stdout] 76 | / if let Some(v) = adj.get_mut(&a) { [INFO] [stdout] 77 | | if let Some(pos) = v.iter().position(|&x| x == b) { [INFO] [stdout] 78 | | v.swap_remove(pos); [INFO] [stdout] 79 | | } [INFO] [stdout] 80 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] = note: `#[warn(clippy::collapsible_if)]` on by default [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 76 ~ if let Some(v) = adj.get_mut(&a) [INFO] [stdout] 77 ~ && let Some(pos) = v.iter().position(|&x| x == b) { [INFO] [stdout] 78 | v.swap_remove(pos); [INFO] [stdout] 79 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/io/svg/geometry.rs:81:9 [INFO] [stdout] | [INFO] [stdout] 81 | / if let Some(v) = adj.get_mut(&b) { [INFO] [stdout] 82 | | if let Some(pos) = v.iter().position(|&x| x == a) { [INFO] [stdout] 83 | | v.swap_remove(pos); [INFO] [stdout] 84 | | } [INFO] [stdout] 85 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 81 ~ if let Some(v) = adj.get_mut(&b) [INFO] [stdout] 82 ~ && let Some(pos) = v.iter().position(|&x| x == a) { [INFO] [stdout] 83 | v.swap_remove(pos); [INFO] [stdout] 84 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `map_or` can be simplified [INFO] [stdout] --> src/io/svg/geometry.rs:94:54 [INFO] [stdout] | [INFO] [stdout] 94 | while let Some(&start) = nodes.iter().find(|&&n| adj.get(&n).map_or(false, |v| !v.is_empty())) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_map_or [INFO] [stdout] = note: `#[warn(clippy::unnecessary_map_or)]` on by default [INFO] [stdout] help: use `is_some_and` instead [INFO] [stdout] | [INFO] [stdout] 94 - while let Some(&start) = nodes.iter().find(|&&n| adj.get(&n).map_or(false, |v| !v.is_empty())) { [INFO] [stdout] 94 + while let Some(&start) = nodes.iter().find(|&&n| adj.get(&n).is_some_and(|v| !v.is_empty())) { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/io/svg/geometry.rs:131:9 [INFO] [stdout] | [INFO] [stdout] 131 | / if let Some(last) = ring_q.last() { [INFO] [stdout] 132 | | if *last == start { [INFO] [stdout] 133 | | ring_q.pop(); [INFO] [stdout] 134 | | } [INFO] [stdout] 135 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 131 ~ if let Some(last) = ring_q.last() [INFO] [stdout] 132 ~ && *last == start { [INFO] [stdout] 133 | ring_q.pop(); [INFO] [stdout] 134 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `edge_endpoints` and `edge` are never used [INFO] [stdout] --> src/graph/unit_graph.rs:49:19 [INFO] [stdout] | [INFO] [stdout] 20 | impl UnitGraph { [INFO] [stdout] | -------------- methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 49 | pub(crate) fn edge_endpoints(&self, edge_idx: usize) -> Option<(usize, usize)> { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 57 | pub(crate) fn edge(&self, node: usize, i: usize) -> Option { [INFO] [stdout] | ^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `print_progress` and `print_progress_with_avg_prob` are never used [INFO] [stdout] --> src/partition/algorithm/anneal.rs:452:8 [INFO] [stdout] | [INFO] [stdout] 61 | impl Partition { [INFO] [stdout] | -------------- methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 452 | fn print_progress( [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 477 | fn print_progress_with_avg_prob( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `random_node` and `random_edge` are never used [INFO] [stdout] --> src/partition/algorithm/randomize.rs:7:19 [INFO] [stdout] | [INFO] [stdout] 5 | impl Partition { [INFO] [stdout] | -------------- methods in this implementation [INFO] [stdout] 6 | /// Select a random node from the map. [INFO] [stdout] 7 | pub(crate) fn random_node(&self, rng: &mut R) -> usize { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 30 | pub(crate) fn random_edge(&self, node: usize, rng: &mut R) -> Option { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `find_components`, `check_contiguity`, and `ensure_contiguity` are never used [INFO] [stdout] --> src/partition/contiguity.rs:182:19 [INFO] [stdout] | [INFO] [stdout] 5 | impl Partition { [INFO] [stdout] | -------------- methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 182 | pub(crate) fn find_components(&self, part: u32) -> Vec> { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 207 | pub(crate) fn check_contiguity(&self) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 217 | pub(crate) fn ensure_contiguity(&mut self) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `reock`, `moment`, and `convex_hull` are never used [INFO] [stdout] --> src/partition/metrics/compactness.rs:44:19 [INFO] [stdout] | [INFO] [stdout] 5 | impl Partition { [INFO] [stdout] | -------------- methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 44 | pub(crate) fn reock(&self, part: u32) -> f64 { todo!() } [INFO] [stdout] | ^^^^^ [INFO] [stdout] ... [INFO] [stdout] 49 | pub(crate) fn moment(&self, part: u32) -> f64 { todo!() } [INFO] [stdout] | ^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 55 | pub(crate) fn convex_hull(&self, part: u32) -> f64 { todo!() } [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `minority_opportunity` is never used [INFO] [stdout] --> src/partition/metrics/demographic.rs:34:19 [INFO] [stdout] | [INFO] [stdout] 3 | impl Partition { [INFO] [stdout] | -------------- method in this implementation [INFO] [stdout] ... [INFO] [stdout] 34 | pub(crate) fn minority_opportunity(&self, part: u32, pop_series: &str, min_series: &str) -> f64 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `proportionality` and `partisan_bias` are never used [INFO] [stdout] --> src/partition/metrics/electoral.rs:33:19 [INFO] [stdout] | [INFO] [stdout] 3 | impl Partition { [INFO] [stdout] | -------------- methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 33 | pub(crate) fn proportionality(&self, dem_series: &str, rep_series: &str) -> Vec { todo!() } [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 37 | pub(crate) fn partisan_bias(&self, dem_series: &str, rep_series: &str) -> Vec { todo!(); } [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `county_splits` is never used [INFO] [stdout] --> src/partition/metrics/splits.rs:5:19 [INFO] [stdout] | [INFO] [stdout] 3 | impl Partition { [INFO] [stdout] | -------------- method in this implementation [INFO] [stdout] 4 | /// Compute the number of county splits in the partition. [INFO] [stdout] 5 | pub(crate) fn county_splits(&self) -> Vec { todo!(); } [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `root` and `parent` are never read [INFO] [stdout] --> src/partition/ops/recombine.rs:6:5 [INFO] [stdout] | [INFO] [stdout] 5 | struct SpanningTree { [INFO] [stdout] | ------------ fields in this struct [INFO] [stdout] 6 | root: usize, [INFO] [stdout] | ^^^^ [INFO] [stdout] 7 | parent: Vec>, // parent[root] = root; None if node not in tree. [INFO] [stdout] | ^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `SpanningTree` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `in_tree` and `random_edge` are never used [INFO] [stdout] --> src/partition/ops/recombine.rs:14:22 [INFO] [stdout] | [INFO] [stdout] 13 | impl SpanningTree { [INFO] [stdout] | ----------------- methods in this implementation [INFO] [stdout] 14 | #[inline] pub fn in_tree(&self, node: usize) -> bool { self.parent[node].is_some() } [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 25 | pub fn random_edge(&self, rng: &mut impl rand::Rng) -> Option<(usize, usize)> { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `part_nodes`, `frontier_edges`, `frontier_edge_endpoints`, `verify_frontier_edges`, `frontier_cycle`, and `part_weights_mut` are never used [INFO] [stdout] --> src/partition/partition.rs:72:19 [INFO] [stdout] | [INFO] [stdout] 20 | impl Partition { [INFO] [stdout] | -------------- methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 72 | pub(crate) fn part_nodes(&self, part: u32) -> Vec { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 110 | pub(crate) fn frontier_edges(&self, part: u32) -> &[usize] { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 116 | pub(crate) fn frontier_edge_endpoints(&self, part: u32) -> Vec<(usize, usize)> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 126 | pub(crate) fn verify_frontier_edges(&self) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 172 | pub(crate) fn frontier_cycle(&self, part: u32) -> Vec { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 312 | pub(super) fn part_weights_mut(&mut self) -> &mut WeightMatrix { self.part_graph.node_weights_mut() } [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated items `iter`, `walk_boundary`, and `next_frontier_edge` are never used [INFO] [stdout] --> src/partition/structures/edge_list.rs:67:19 [INFO] [stdout] | [INFO] [stdout] 23 | impl FrontierEdgeList { [INFO] [stdout] | --------------------- associated items in this implementation [INFO] [stdout] ... [INFO] [stdout] 67 | pub(crate) fn iter(&self) -> impl Iterator + '_ { [INFO] [stdout] | ^^^^ [INFO] [stdout] ... [INFO] [stdout] 150 | pub(crate) fn walk_boundary( [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 225 | fn next_frontier_edge( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `HullSet` is never constructed [INFO] [stdout] --> src/partition/structures/hull_set.rs:3:19 [INFO] [stdout] | [INFO] [stdout] 3 | pub(crate) struct HullSet { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/io/shp.rs:33:9 [INFO] [stdout] | [INFO] [stdout] 33 | / if !coords.is_empty() { [INFO] [stdout] 34 | | if coords[0] != coords[coords.len() - 1] { [INFO] [stdout] 35 | | coords.push(coords[0]) [INFO] [stdout] 36 | | } [INFO] [stdout] 37 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 33 ~ if !coords.is_empty() [INFO] [stdout] 34 ~ && coords[0] != coords[coords.len() - 1] { [INFO] [stdout] 35 | coords.push(coords[0]) [INFO] [stdout] 36 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/io/shp.rs:92:9 [INFO] [stdout] | [INFO] [stdout] 92 | / if !pts.is_empty() { [INFO] [stdout] 93 | | if pts[0].x != pts[pts.len() - 1].x || pts[0].y != pts[pts.len() - 1].y { [INFO] [stdout] 94 | | pts.push(pts[0]); [INFO] [stdout] 95 | | } [INFO] [stdout] 96 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 92 ~ if !pts.is_empty() [INFO] [stdout] 93 ~ && (pts[0].x != pts[pts.len() - 1].x || pts[0].y != pts[pts.len() - 1].y) { [INFO] [stdout] 94 | pts.push(pts[0]); [INFO] [stdout] 95 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the loop variable `i` is only used to index `ring` [INFO] [stdout] --> src/io/pmtiles.rs:151:14 [INFO] [stdout] | [INFO] [stdout] 151 | for i in 1..ring.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] 151 - for i in 1..ring.len() { [INFO] [stdout] 151 + for in ring.iter().skip(1) { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the loop variable `i` is only used to index `cleaned` [INFO] [stdout] --> src/io/pmtiles.rs:173:18 [INFO] [stdout] | [INFO] [stdout] 173 | for i in 1..cleaned.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] 173 - for i in 1..cleaned.len() { [INFO] [stdout] 173 + for in cleaned.iter().skip(1) { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: very complex type used. Consider factoring parts into `type` definitions [INFO] [stdout] --> src/io/pmtiles.rs:223:13 [INFO] [stdout] | [INFO] [stdout] 223 | layers: Vec<(&str, &[MultiPolygon], Option<&[String]>, u8, u8)> [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#type_complexity [INFO] [stdout] = note: `#[warn(clippy::type_complexity)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: very complex type used. Consider factoring parts into `type` definitions [INFO] [stdout] --> src/io/pmtiles.rs:292:30 [INFO] [stdout] | [INFO] [stdout] 292 | let mut tile_geometries: HashMap<(u8, u64, u64), Vec<(&str, usize, Polygon)>> = HashMap::new(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#type_complexity [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of `or_insert_with` to construct default value [INFO] [stdout] --> src/io/pmtiles.rs:324:34 [INFO] [stdout] | [INFO] [stdout] 324 | ... .or_insert_with(Vec::new) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `or_default()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unwrap_or_default [INFO] [stdout] = note: `#[warn(clippy::unwrap_or_default)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: very complex type used. Consider factoring parts into `type` definitions [INFO] [stdout] --> src/io/pmtiles.rs:368:29 [INFO] [stdout] | [INFO] [stdout] 368 | let mut tiles_by_coord: HashMap<(u8, u64, u64), HashMap<&str, Vec<(usize, Polygon)>>> = HashMap::new(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#type_complexity [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of `or_insert_with` to construct default value [INFO] [stdout] --> src/io/pmtiles.rs:370:75 [INFO] [stdout] | [INFO] [stdout] 370 | let tile_layers = tiles_by_coord.entry((*zoom, *tile_x, *tile_y)).or_insert_with(HashMap::new); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `or_default()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unwrap_or_default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of `or_insert_with` to construct default value [INFO] [stdout] --> src/io/pmtiles.rs:372:43 [INFO] [stdout] | [INFO] [stdout] 372 | tile_layers.entry(layer_name).or_insert_with(Vec::new).push((*idx, poly.clone())); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `or_default()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unwrap_or_default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `from_str` can be confused for the standard trait method `std::str::FromStr::from_str` [INFO] [stdout] --> src/map/geo_ty.rs:44:5 [INFO] [stdout] | [INFO] [stdout] 44 | / pub fn from_str(string: &str) -> Option { [INFO] [stdout] 45 | | match string.to_lowercase().as_str() { [INFO] [stdout] 46 | | "state" => Some(GeoType::State), [INFO] [stdout] 47 | | "county" => Some(GeoType::County), [INFO] [stdout] ... | [INFO] [stdout] 54 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] | [INFO] [stdout] = help: consider implementing the trait `std::str::FromStr` or choosing a less ambiguous method name [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#should_implement_trait [INFO] [stdout] = note: `#[warn(clippy::should_implement_trait)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: call to `reserve` immediately after creation [INFO] [stdout] --> src/map/io/geojson.rs:34:9 [INFO] [stdout] | [INFO] [stdout] 34 | / let mut features = Vec::new(); [INFO] [stdout] 35 | | features.reserve(indices.len().min(10000)); // Cap initial capacity [INFO] [stdout] | |___________________________________________________^ help: consider using `Vec::with_capacity(/* Space hint */)`: `let mut features = Vec::with_capacity(indices.len().min(10000));` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#reserve_after_initialization [INFO] [stdout] = note: `#[warn(clippy::reserve_after_initialization)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: deref which would be done by auto-deref [INFO] [stdout] --> src/map/io/geojson.rs:50:56 [INFO] [stdout] | [INFO] [stdout] 50 | if let Ok(col) = self.unit_data.column(*col_name) { [INFO] [stdout] | ^^^^^^^^^ help: try: `col_name` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_auto_deref [INFO] [stdout] = note: `#[warn(clippy::explicit_auto_deref)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: useless use of `format!` [INFO] [stdout] --> src/map/io/geojson.rs:93:32 [INFO] [stdout] | [INFO] [stdout] 93 | let feature_hash = format!("{}", geo_id_str); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using `.to_string()`: `geo_id_str.to_string()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stdout] = note: `#[warn(clippy::useless_format)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: call to `reserve` immediately after creation [INFO] [stdout] --> src/map/io/geojson.rs:148:9 [INFO] [stdout] | [INFO] [stdout] 148 | / let mut features = Vec::new(); [INFO] [stdout] 149 | | features.reserve(indices.len().min(10000)); // Cap initial capacity [INFO] [stdout] | |___________________________________________________^ help: consider using `Vec::with_capacity(/* Space hint */)`: `let mut features = Vec::with_capacity(indices.len().min(10000));` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#reserve_after_initialization [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: deref which would be done by auto-deref [INFO] [stdout] --> src/map/io/geojson.rs:181:56 [INFO] [stdout] | [INFO] [stdout] 181 | if let Ok(col) = self.unit_data.column(*col_name) { [INFO] [stdout] | ^^^^^^^^^ help: try: `col_name` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_auto_deref [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/io/svg/geometry.rs:76:9 [INFO] [stdout] | [INFO] [stdout] 76 | / if let Some(v) = adj.get_mut(&a) { [INFO] [stdout] 77 | | if let Some(pos) = v.iter().position(|&x| x == b) { [INFO] [stdout] 78 | | v.swap_remove(pos); [INFO] [stdout] 79 | | } [INFO] [stdout] 80 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] = note: `#[warn(clippy::collapsible_if)]` on by default [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 76 ~ if let Some(v) = adj.get_mut(&a) [INFO] [stdout] 77 ~ && let Some(pos) = v.iter().position(|&x| x == b) { [INFO] [stdout] 78 | v.swap_remove(pos); [INFO] [stdout] 79 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/io/svg/geometry.rs:81:9 [INFO] [stdout] | [INFO] [stdout] 81 | / if let Some(v) = adj.get_mut(&b) { [INFO] [stdout] 82 | | if let Some(pos) = v.iter().position(|&x| x == a) { [INFO] [stdout] 83 | | v.swap_remove(pos); [INFO] [stdout] 84 | | } [INFO] [stdout] 85 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 81 ~ if let Some(v) = adj.get_mut(&b) [INFO] [stdout] 82 ~ && let Some(pos) = v.iter().position(|&x| x == a) { [INFO] [stdout] 83 | v.swap_remove(pos); [INFO] [stdout] 84 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `map_or` can be simplified [INFO] [stdout] --> src/io/svg/geometry.rs:94:54 [INFO] [stdout] | [INFO] [stdout] 94 | while let Some(&start) = nodes.iter().find(|&&n| adj.get(&n).map_or(false, |v| !v.is_empty())) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_map_or [INFO] [stdout] = note: `#[warn(clippy::unnecessary_map_or)]` on by default [INFO] [stdout] help: use `is_some_and` instead [INFO] [stdout] | [INFO] [stdout] 94 - while let Some(&start) = nodes.iter().find(|&&n| adj.get(&n).map_or(false, |v| !v.is_empty())) { [INFO] [stdout] 94 + while let Some(&start) = nodes.iter().find(|&&n| adj.get(&n).is_some_and(|v| !v.is_empty())) { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/io/svg/geometry.rs:131:9 [INFO] [stdout] | [INFO] [stdout] 131 | / if let Some(last) = ring_q.last() { [INFO] [stdout] 132 | | if *last == start { [INFO] [stdout] 133 | | ring_q.pop(); [INFO] [stdout] 134 | | } [INFO] [stdout] 135 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 131 ~ if let Some(last) = ring_q.last() [INFO] [stdout] 132 ~ && *last == start { [INFO] [stdout] 133 | ring_q.pop(); [INFO] [stdout] 134 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: enclosing `Ok` and `?` operator are unneeded [INFO] [stdout] --> src/map/io/write.rs:51:9 [INFO] [stdout] | [INFO] [stdout] 51 | / Ok(self.unit_data [INFO] [stdout] 52 | | .inner_join(&parents_df, ["geo_id"], ["geo_id"]) [INFO] [stdout] 53 | | .context("inner_join on 'geo_id' failed when preparing parquet")?) [INFO] [stdout] | |______________________________________________________________________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_question_mark [INFO] [stdout] = note: `#[warn(clippy::needless_question_mark)]` on by default [INFO] [stdout] help: remove the enclosing `Ok` and `?` operator [INFO] [stdout] | [INFO] [stdout] 51 ~ self.unit_data [INFO] [stdout] 52 | .inner_join(&parents_df, ["geo_id"], ["geo_id"]) [INFO] [stdout] 53 ~ .context("inner_join on 'geo_id' failed when preparing parquet") [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&Vec` instead of `&[_]` involves a new object where a slice will do [INFO] [stdout] --> src/map/io/write.rs:36:33 [INFO] [stdout] | [INFO] [stdout] 36 | fn get_parents(parents: &Vec, ty: GeoType) -> Vec> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stdout] = note: `#[warn(clippy::ptr_arg)]` on by default [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 36 - fn get_parents(parents: &Vec, ty: GeoType) -> Vec> { [INFO] [stdout] 36 + fn get_parents(parents: &[ParentRefs], ty: GeoType) -> Vec> { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: useless conversion to the same type: `&str` [INFO] [stdout] --> src/map/io/write.rs:72:23 [INFO] [stdout] | [INFO] [stdout] 72 | counts.insert(layer_name.into(), self.geo_ids.len()); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ help: consider removing `.into()`: `layer_name` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_conversion [INFO] [stdout] = note: `#[warn(clippy::useless_conversion)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the function `crate::io::parquet::write_parquet_bytes` doesn't need a mutable reference [INFO] [stdout] --> src/map/io/write.rs:77:66 [INFO] [stdout] | [INFO] [stdout] 77 | "parquet" => crate::io::parquet::write_parquet_bytes(&mut self.pack_data()?)?, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_mut_passed [INFO] [stdout] = note: `#[warn(clippy::unnecessary_mut_passed)]` on by default [INFO] [stdout] help: remove this `mut` [INFO] [stdout] | [INFO] [stdout] 77 - "parquet" => crate::io::parquet::write_parquet_bytes(&mut self.pack_data()?)?, [INFO] [stdout] 77 + "parquet" => crate::io::parquet::write_parquet_bytes(&self.pack_data()?)?, [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the function `crate::io::csv::write_csv_bytes` doesn't need a mutable reference [INFO] [stdout] --> src/map/io/write.rs:78:54 [INFO] [stdout] | [INFO] [stdout] 78 | "csv" => crate::io::csv::write_csv_bytes(&mut self.pack_data()?)?, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_mut_passed [INFO] [stdout] help: remove this `mut` [INFO] [stdout] | [INFO] [stdout] 78 - "csv" => crate::io::csv::write_csv_bytes(&mut self.pack_data()?)?, [INFO] [stdout] 78 + "csv" => crate::io::csv::write_csv_bytes(&self.pack_data()?)?, [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: deref which would be done by auto-deref [INFO] [stdout] --> src/map/io/write.rs:91:33 [INFO] [stdout] | [INFO] [stdout] 91 | geograph::io::write(&*self.region, &mut gz) [INFO] [stdout] | ^^^^^^^^^^^^^ help: try: `&self.region` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_auto_deref [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: useless conversion to the same type: `&str` [INFO] [stdout] --> src/map/io/write.rs:165:27 [INFO] [stdout] | [INFO] [stdout] 165 | counts.insert(layer_name.into(), layer.geo_ids.len()); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ help: consider removing `.into()`: `layer_name` [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: the function `crate::io::csv::write_csv_bytes` doesn't need a mutable reference [INFO] [stdout] --> src/map/io/write.rs:168:62 [INFO] [stdout] | [INFO] [stdout] 168 | let data_bytes = crate::io::csv::write_csv_bytes(&mut layer.pack_data()?)?; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_mut_passed [INFO] [stdout] help: remove this `mut` [INFO] [stdout] | [INFO] [stdout] 168 - let data_bytes = crate::io::csv::write_csv_bytes(&mut layer.pack_data()?)?; [INFO] [stdout] 168 + let data_bytes = crate::io::csv::write_csv_bytes(&layer.pack_data()?)?; [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: deref which would be done by auto-deref [INFO] [stdout] --> src/map/io/write.rs:177:37 [INFO] [stdout] | [INFO] [stdout] 177 | geograph::io::write(&*layer.region, &mut gz) [INFO] [stdout] | ^^^^^^^^^^^^^^ help: try: `&layer.region` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_auto_deref [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: very complex type used. Consider factoring parts into `type` definitions [INFO] [stdout] --> src/map/io/write.rs:187:29 [INFO] [stdout] | [INFO] [stdout] 187 | let mut layer_info: Vec<(&str, Vec>, u8, u8, usize)> = Vec::new(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#type_complexity [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: very complex type used. Consider factoring parts into `type` definitions [INFO] [stdout] --> src/map/io/write.rs:207:29 [INFO] [stdout] | [INFO] [stdout] 207 | let pmtiles_layers: Vec<(&str, &[MultiPolygon], Option<&[String]>, u8, u8)> = layer_info.iter() [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#type_complexity [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/io/shp.rs:33:9 [INFO] [stdout] | [INFO] [stdout] 33 | / if !coords.is_empty() { [INFO] [stdout] 34 | | if coords[0] != coords[coords.len() - 1] { [INFO] [stdout] 35 | | coords.push(coords[0]) [INFO] [stdout] 36 | | } [INFO] [stdout] 37 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 33 ~ if !coords.is_empty() [INFO] [stdout] 34 ~ && coords[0] != coords[coords.len() - 1] { [INFO] [stdout] 35 | coords.push(coords[0]) [INFO] [stdout] 36 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/io/shp.rs:92:9 [INFO] [stdout] | [INFO] [stdout] 92 | / if !pts.is_empty() { [INFO] [stdout] 93 | | if pts[0].x != pts[pts.len() - 1].x || pts[0].y != pts[pts.len() - 1].y { [INFO] [stdout] 94 | | pts.push(pts[0]); [INFO] [stdout] 95 | | } [INFO] [stdout] 96 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 92 ~ if !pts.is_empty() [INFO] [stdout] 93 ~ && (pts[0].x != pts[pts.len() - 1].x || pts[0].y != pts[pts.len() - 1].y) { [INFO] [stdout] 94 | pts.push(pts[0]); [INFO] [stdout] 95 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant closure [INFO] [stdout] --> src/map/io/build.rs:97:18 [INFO] [stdout] | [INFO] [stdout] 97 | .map(|shape| crate::io::shp::shape_to_multipolygon(shape)) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace the closure with the function itself: `crate::io::shp::shape_to_multipolygon` [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: the loop variable `i` is only used to index `ring` [INFO] [stdout] --> src/io/pmtiles.rs:151:14 [INFO] [stdout] | [INFO] [stdout] 151 | for i in 1..ring.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] 151 - for i in 1..ring.len() { [INFO] [stdout] 151 + for in ring.iter().skip(1) { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the loop variable `i` is only used to index `cleaned` [INFO] [stdout] --> src/io/pmtiles.rs:173:18 [INFO] [stdout] | [INFO] [stdout] 173 | for i in 1..cleaned.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] 173 - for i in 1..cleaned.len() { [INFO] [stdout] 173 + for in cleaned.iter().skip(1) { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: very complex type used. Consider factoring parts into `type` definitions [INFO] [stdout] --> src/io/pmtiles.rs:223:13 [INFO] [stdout] | [INFO] [stdout] 223 | layers: Vec<(&str, &[MultiPolygon], Option<&[String]>, u8, u8)> [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#type_complexity [INFO] [stdout] = note: `#[warn(clippy::type_complexity)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: very complex type used. Consider factoring parts into `type` definitions [INFO] [stdout] --> src/io/pmtiles.rs:292:30 [INFO] [stdout] | [INFO] [stdout] 292 | let mut tile_geometries: HashMap<(u8, u64, u64), Vec<(&str, usize, Polygon)>> = HashMap::new(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#type_complexity [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of `or_insert_with` to construct default value [INFO] [stdout] --> src/io/pmtiles.rs:324:34 [INFO] [stdout] | [INFO] [stdout] 324 | ... .or_insert_with(Vec::new) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `or_default()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unwrap_or_default [INFO] [stdout] = note: `#[warn(clippy::unwrap_or_default)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: very complex type used. Consider factoring parts into `type` definitions [INFO] [stdout] --> src/io/pmtiles.rs:368:29 [INFO] [stdout] | [INFO] [stdout] 368 | let mut tiles_by_coord: HashMap<(u8, u64, u64), HashMap<&str, Vec<(usize, Polygon)>>> = HashMap::new(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#type_complexity [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of `or_insert_with` to construct default value [INFO] [stdout] --> src/io/pmtiles.rs:370:75 [INFO] [stdout] | [INFO] [stdout] 370 | let tile_layers = tiles_by_coord.entry((*zoom, *tile_x, *tile_y)).or_insert_with(HashMap::new); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `or_default()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unwrap_or_default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of `or_insert_with` to construct default value [INFO] [stdout] --> src/io/pmtiles.rs:372:43 [INFO] [stdout] | [INFO] [stdout] 372 | tile_layers.entry(layer_name).or_insert_with(Vec::new).push((*idx, poly.clone())); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `or_default()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unwrap_or_default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: useless conversion to the same type: `&str` [INFO] [stdout] --> src/map/io/build.rs:372:27 [INFO] [stdout] | [INFO] [stdout] 372 | df.column(col_names.0.into())?.str()? [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ help: consider removing `.into()`: `col_names.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: `&str` [INFO] [stdout] --> src/map/io/build.rs:374:36 [INFO] [stdout] | [INFO] [stdout] 374 | .zip(df.column(col_names.1.into())?.str()?) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ help: consider removing `.into()`: `col_names.1` [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: method `from_str` can be confused for the standard trait method `std::str::FromStr::from_str` [INFO] [stdout] --> src/map/geo_ty.rs:44:5 [INFO] [stdout] | [INFO] [stdout] 44 | / pub fn from_str(string: &str) -> Option { [INFO] [stdout] 45 | | match string.to_lowercase().as_str() { [INFO] [stdout] 46 | | "state" => Some(GeoType::State), [INFO] [stdout] 47 | | "county" => Some(GeoType::County), [INFO] [stdout] ... | [INFO] [stdout] 54 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] | [INFO] [stdout] = help: consider implementing the trait `std::str::FromStr` or choosing a less ambiguous method name [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#should_implement_trait [INFO] [stdout] = note: `#[warn(clippy::should_implement_trait)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: call to `reserve` immediately after creation [INFO] [stdout] --> src/map/io/geojson.rs:34:9 [INFO] [stdout] | [INFO] [stdout] 34 | / let mut features = Vec::new(); [INFO] [stdout] 35 | | features.reserve(indices.len().min(10000)); // Cap initial capacity [INFO] [stdout] | |___________________________________________________^ help: consider using `Vec::with_capacity(/* Space hint */)`: `let mut features = Vec::with_capacity(indices.len().min(10000));` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#reserve_after_initialization [INFO] [stdout] = note: `#[warn(clippy::reserve_after_initialization)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: deref which would be done by auto-deref [INFO] [stdout] --> src/map/io/geojson.rs:50:56 [INFO] [stdout] | [INFO] [stdout] 50 | if let Ok(col) = self.unit_data.column(*col_name) { [INFO] [stdout] | ^^^^^^^^^ help: try: `col_name` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_auto_deref [INFO] [stdout] = note: `#[warn(clippy::explicit_auto_deref)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: explicit call to `.into_iter()` in function argument accepting `IntoIterator` [INFO] [stdout] --> src/map/layer.rs:75:47 [INFO] [stdout] | [INFO] [stdout] 75 | return lon_column.into_iter().zip(lat_column.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] help: consider removing the `.into_iter()` [INFO] [stdout] | [INFO] [stdout] 75 - return lon_column.into_iter().zip(lat_column.into_iter()) [INFO] [stdout] 75 + return lon_column.into_iter().zip(&*lat_column) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: useless use of `format!` [INFO] [stdout] --> src/map/io/geojson.rs:93:32 [INFO] [stdout] | [INFO] [stdout] 93 | let feature_hash = format!("{}", geo_id_str); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using `.to_string()`: `geo_id_str.to_string()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stdout] = note: `#[warn(clippy::useless_format)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: module has the same name as its containing module [INFO] [stdout] --> src/map/mod.rs:5:1 [INFO] [stdout] | [INFO] [stdout] 5 | mod map; [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#module_inception [INFO] [stdout] = note: `#[warn(clippy::module_inception)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: call to `reserve` immediately after creation [INFO] [stdout] --> src/map/io/geojson.rs:148:9 [INFO] [stdout] | [INFO] [stdout] 148 | / let mut features = Vec::new(); [INFO] [stdout] 149 | | features.reserve(indices.len().min(10000)); // Cap initial capacity [INFO] [stdout] | |___________________________________________________^ help: consider using `Vec::with_capacity(/* Space hint */)`: `let mut features = Vec::with_capacity(indices.len().min(10000));` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#reserve_after_initialization [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: deref which would be done by auto-deref [INFO] [stdout] --> src/map/io/geojson.rs:181:56 [INFO] [stdout] | [INFO] [stdout] 181 | if let Ok(col) = self.unit_data.column(*col_name) { [INFO] [stdout] | ^^^^^^^^^ help: try: `col_name` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_auto_deref [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/map/pack/download.rs:35:9 [INFO] [stdout] | [INFO] [stdout] 35 | / if need_fsync_dir { [INFO] [stdout] 36 | | if let Some(dir) = self.target.parent() { [INFO] [stdout] 37 | | File::open(dir).and_then(|f| f.sync_all())?; [INFO] [stdout] 38 | | } [INFO] [stdout] 39 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 35 ~ if need_fsync_dir [INFO] [stdout] 36 ~ && let Some(dir) = self.target.parent() { [INFO] [stdout] 37 | File::open(dir).and_then(|f| f.sync_all())?; [INFO] [stdout] 38 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/map/pack/download.rs:62:39 [INFO] [stdout] | [INFO] [stdout] 62 | let mut sink = PendingWrite::open(&out_path, force)?; [INFO] [stdout] | ^^^^^^^^^ help: change this to: `out_path` [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: writing `&PathBuf` instead of `&Path` involves a new object where a slice will do [INFO] [stdout] --> src/map/pack/download.rs:90:41 [INFO] [stdout] | [INFO] [stdout] 90 | fn download_daves_demographics(out_dir: &PathBuf, state: &str, verbose: u8) -> Result<()> { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 90 - fn download_daves_demographics(out_dir: &PathBuf, state: &str, verbose: u8) -> Result<()> { [INFO] [stdout] 90 + fn download_daves_demographics(out_dir: &Path, state: &str, verbose: u8) -> Result<()> { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&PathBuf` instead of `&Path` involves a new object where a slice will do [INFO] [stdout] --> src/map/pack/download.rs:105:38 [INFO] [stdout] | [INFO] [stdout] 105 | fn download_daves_elections(out_dir: &PathBuf, state: &str, verbose: u8) -> Result<()> { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 105 - fn download_daves_elections(out_dir: &PathBuf, state: &str, verbose: u8) -> Result<()> { [INFO] [stdout] 105 + fn download_daves_elections(out_dir: &Path, state: &str, verbose: u8) -> Result<()> { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&PathBuf` instead of `&Path` involves a new object where a slice will do [INFO] [stdout] --> src/map/pack/download.rs:121:39 [INFO] [stdout] | [INFO] [stdout] 121 | fn download_tiger_geometries(out_dir: &PathBuf, state: &str, has_vtd: bool, verbose: u8) -> Result<()> { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 121 - fn download_tiger_geometries(out_dir: &PathBuf, state: &str, has_vtd: bool, verbose: u8) -> Result<()> { [INFO] [stdout] 121 + fn download_tiger_geometries(out_dir: &Path, state: &str, has_vtd: bool, verbose: u8) -> Result<()> { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/map/pack/download.rs:122:41 [INFO] [stdout] | [INFO] [stdout] 122 | let fips = util::state_abbr_to_fips(&state) [INFO] [stdout] | ^^^^^^ help: change this to: `state` [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/map/pack/download.rs:124:41 [INFO] [stdout] | [INFO] [stdout] 124 | let name = util::state_abbr_to_name(&state) [INFO] [stdout] | ^^^^^^ help: change this to: `state` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&PathBuf` instead of `&Path` involves a new object where a slice will do [INFO] [stdout] --> src/map/pack/download.rs:153:40 [INFO] [stdout] | [INFO] [stdout] 153 | fn download_census_crosswalks(out_dir: &PathBuf, state: &str, verbose: u8) -> Result<()> { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 153 - fn download_census_crosswalks(out_dir: &PathBuf, state: &str, verbose: u8) -> Result<()> { [INFO] [stdout] 153 + fn download_census_crosswalks(out_dir: &Path, state: &str, verbose: u8) -> Result<()> { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/map/pack/download.rs:154:41 [INFO] [stdout] | [INFO] [stdout] 154 | let fips = util::state_abbr_to_fips(&state) [INFO] [stdout] | ^^^^^^ help: change this to: `state` [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/map/pack/download.rs:174:30 [INFO] [stdout] | [INFO] [stdout] 174 | util::require_dir_exists(&pack_dir)?; [INFO] [stdout] | ^^^^^^^^^ help: change this to: `pack_dir` [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: enclosing `Ok` and `?` operator are unneeded [INFO] [stdout] --> src/map/io/write.rs:51:9 [INFO] [stdout] | [INFO] [stdout] 51 | / Ok(self.unit_data [INFO] [stdout] 52 | | .inner_join(&parents_df, ["geo_id"], ["geo_id"]) [INFO] [stdout] 53 | | .context("inner_join on 'geo_id' failed when preparing parquet")?) [INFO] [stdout] | |______________________________________________________________________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_question_mark [INFO] [stdout] = note: `#[warn(clippy::needless_question_mark)]` on by default [INFO] [stdout] help: remove the enclosing `Ok` and `?` operator [INFO] [stdout] | [INFO] [stdout] 51 ~ self.unit_data [INFO] [stdout] 52 | .inner_join(&parents_df, ["geo_id"], ["geo_id"]) [INFO] [stdout] 53 ~ .context("inner_join on 'geo_id' failed when preparing parquet") [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&Vec` instead of `&[_]` involves a new object where a slice will do [INFO] [stdout] --> src/map/io/write.rs:36:33 [INFO] [stdout] | [INFO] [stdout] 36 | fn get_parents(parents: &Vec, ty: GeoType) -> Vec> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stdout] = note: `#[warn(clippy::ptr_arg)]` on by default [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 36 - fn get_parents(parents: &Vec, ty: GeoType) -> Vec> { [INFO] [stdout] 36 + fn get_parents(parents: &[ParentRefs], ty: GeoType) -> Vec> { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `default` can be confused for the standard trait method `std::default::Default::default` [INFO] [stdout] --> src/map/pack/format.rs:17:5 [INFO] [stdout] | [INFO] [stdout] 17 | / pub fn default() -> Self { [INFO] [stdout] 18 | | #[cfg(feature = "parquet")] [INFO] [stdout] 19 | | { [INFO] [stdout] 20 | | Self::Parquet [INFO] [stdout] ... | [INFO] [stdout] 26 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] | [INFO] [stdout] = help: consider implementing the trait `std::default::Default` or choosing a less ambiguous method name [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#should_implement_trait [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: useless conversion to the same type: `&str` [INFO] [stdout] --> src/map/io/write.rs:72:23 [INFO] [stdout] | [INFO] [stdout] 72 | counts.insert(layer_name.into(), self.geo_ids.len()); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ help: consider removing `.into()`: `layer_name` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_conversion [INFO] [stdout] = note: `#[warn(clippy::useless_conversion)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the function `crate::io::parquet::write_parquet_bytes` doesn't need a mutable reference [INFO] [stdout] --> src/map/io/write.rs:77:66 [INFO] [stdout] | [INFO] [stdout] 77 | "parquet" => crate::io::parquet::write_parquet_bytes(&mut self.pack_data()?)?, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_mut_passed [INFO] [stdout] = note: `#[warn(clippy::unnecessary_mut_passed)]` on by default [INFO] [stdout] help: remove this `mut` [INFO] [stdout] | [INFO] [stdout] 77 - "parquet" => crate::io::parquet::write_parquet_bytes(&mut self.pack_data()?)?, [INFO] [stdout] 77 + "parquet" => crate::io::parquet::write_parquet_bytes(&self.pack_data()?)?, [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the function `crate::io::csv::write_csv_bytes` doesn't need a mutable reference [INFO] [stdout] --> src/map/io/write.rs:78:54 [INFO] [stdout] | [INFO] [stdout] 78 | "csv" => crate::io::csv::write_csv_bytes(&mut self.pack_data()?)?, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_mut_passed [INFO] [stdout] help: remove this `mut` [INFO] [stdout] | [INFO] [stdout] 78 - "csv" => crate::io::csv::write_csv_bytes(&mut self.pack_data()?)?, [INFO] [stdout] 78 + "csv" => crate::io::csv::write_csv_bytes(&self.pack_data()?)?, [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: deref which would be done by auto-deref [INFO] [stdout] --> src/map/io/write.rs:91:33 [INFO] [stdout] | [INFO] [stdout] 91 | geograph::io::write(&*self.region, &mut gz) [INFO] [stdout] | ^^^^^^^^^^^^^ help: try: `&self.region` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_auto_deref [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: useless conversion to the same type: `&str` [INFO] [stdout] --> src/map/io/write.rs:165:27 [INFO] [stdout] | [INFO] [stdout] 165 | counts.insert(layer_name.into(), layer.geo_ids.len()); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ help: consider removing `.into()`: `layer_name` [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: the function `crate::io::csv::write_csv_bytes` doesn't need a mutable reference [INFO] [stdout] --> src/map/io/write.rs:168:62 [INFO] [stdout] | [INFO] [stdout] 168 | let data_bytes = crate::io::csv::write_csv_bytes(&mut layer.pack_data()?)?; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_mut_passed [INFO] [stdout] help: remove this `mut` [INFO] [stdout] | [INFO] [stdout] 168 - let data_bytes = crate::io::csv::write_csv_bytes(&mut layer.pack_data()?)?; [INFO] [stdout] 168 + let data_bytes = crate::io::csv::write_csv_bytes(&layer.pack_data()?)?; [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: deref which would be done by auto-deref [INFO] [stdout] --> src/map/io/write.rs:177:37 [INFO] [stdout] | [INFO] [stdout] 177 | geograph::io::write(&*layer.region, &mut gz) [INFO] [stdout] | ^^^^^^^^^^^^^^ help: try: `&layer.region` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_auto_deref [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: very complex type used. Consider factoring parts into `type` definitions [INFO] [stdout] --> src/map/io/write.rs:187:29 [INFO] [stdout] | [INFO] [stdout] 187 | let mut layer_info: Vec<(&str, Vec>, u8, u8, usize)> = Vec::new(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#type_complexity [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: very complex type used. Consider factoring parts into `type` definitions [INFO] [stdout] --> src/map/io/write.rs:207:29 [INFO] [stdout] | [INFO] [stdout] 207 | let pmtiles_layers: Vec<(&str, &[MultiPolygon], Option<&[String]>, u8, u8)> = layer_info.iter() [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#type_complexity [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: module has the same name as its containing module [INFO] [stdout] --> src/map/pack/mod.rs:5:1 [INFO] [stdout] | [INFO] [stdout] 5 | mod pack; [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#module_inception [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you seem to be trying to use `match` for destructuring a single pattern. Consider using `if let` [INFO] [stdout] --> src/map/pack/pack.rs:28:5 [INFO] [stdout] | [INFO] [stdout] 28 | / match client.head(url).send() { [INFO] [stdout] 29 | | Ok(resp) => match resp.status() { [INFO] [stdout] 30 | | StatusCode::OK => return Ok(true), [INFO] [stdout] 31 | | StatusCode::NOT_FOUND | StatusCode::GONE => return Ok(false), [INFO] [stdout] ... | [INFO] [stdout] 35 | | Err(_) => {} // fall through to range GET [INFO] [stdout] 36 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] | [INFO] [stdout] = note: you might want to preserve the comments from inside the `match` [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] 28 ~ if let Ok(resp) = client.head(url).send() { match resp.status() { [INFO] [stdout] 29 + StatusCode::OK => return Ok(true), [INFO] [stdout] 30 + StatusCode::NOT_FOUND | StatusCode::GONE => return Ok(false), [INFO] [stdout] 31 ~ // Some servers don’t like HEAD; fall through to range GET. [INFO] [stdout] 32 + _ => {} [INFO] [stdout] 33 + } } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant closure [INFO] [stdout] --> src/map/io/build.rs:97:18 [INFO] [stdout] | [INFO] [stdout] 97 | .map(|shape| crate::io::shp::shape_to_multipolygon(shape)) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace the closure with the function itself: `crate::io::shp::shape_to_multipolygon` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stdout] = note: `#[warn(clippy::redundant_closure)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/map/pack/pack.rs:56:30 [INFO] [stdout] | [INFO] [stdout] 56 | util::require_dir_exists(&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_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/map/pack/pack.rs:84:30 [INFO] [stdout] | [INFO] [stdout] 84 | util::require_dir_exists(&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_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/map/pack/pack.rs:100:34 [INFO] [stdout] | [INFO] [stdout] 100 | util::extract_zip(&zip_path, &path, true)?; [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_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&PathBuf` instead of `&Path` involves a new object where a slice will do [INFO] [stdout] --> src/map/pack/pack.rs:109:33 [INFO] [stdout] | [INFO] [stdout] 109 | pub fn validate_pack(pack_path: &PathBuf, verbose: u8) -> Result<()> { todo!()} [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 109 - pub fn validate_pack(pack_path: &PathBuf, verbose: u8) -> Result<()> { todo!()} [INFO] [stdout] 109 + pub fn validate_pack(pack_path: &Path, verbose: u8) -> Result<()> { todo!()} [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: module has the same name as its containing module [INFO] [stdout] --> src/objective/mod.rs:2:1 [INFO] [stdout] | [INFO] [stdout] 2 | mod objective; [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#module_inception [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: useless conversion to the same type: `&str` [INFO] [stdout] --> src/map/io/build.rs:372:27 [INFO] [stdout] | [INFO] [stdout] 372 | df.column(col_names.0.into())?.str()? [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ help: consider removing `.into()`: `col_names.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: `&str` [INFO] [stdout] --> src/map/io/build.rs:374:36 [INFO] [stdout] | [INFO] [stdout] 374 | .zip(df.column(col_names.1.into())?.str()?) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ help: consider removing `.into()`: `col_names.1` [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: length comparison to zero [INFO] [stdout] --> src/partition/algorithm/anneal.rs:75:17 [INFO] [stdout] | [INFO] [stdout] 75 | assert!(self.parts.get(0).len() == 0, "part 0 (unassigned) must be empty"); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `self.parts.get(0).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: length comparison to zero [INFO] [stdout] --> src/partition/algorithm/anneal.rs:118:18 [INFO] [stdout] | [INFO] [stdout] 118 | - if bundle.len() > 0 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ help: using `!is_empty` is clearer and more explicit: `!bundle.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: explicit call to `.into_iter()` in function argument accepting `IntoIterator` [INFO] [stdout] --> src/map/layer.rs:75:47 [INFO] [stdout] | [INFO] [stdout] 75 | return lon_column.into_iter().zip(lat_column.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] help: consider removing the `.into_iter()` [INFO] [stdout] | [INFO] [stdout] 75 - return lon_column.into_iter().zip(lat_column.into_iter()) [INFO] [stdout] 75 + return lon_column.into_iter().zip(&*lat_column) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this function has too many arguments (10/7) [INFO] [stdout] --> src/partition/algorithm/anneal.rs:171:5 [INFO] [stdout] | [INFO] [stdout] 171 | / pub(crate) fn anneal(&mut self, [INFO] [stdout] 172 | | objectives: &[Objective], [INFO] [stdout] 173 | | max_iter: usize, [INFO] [stdout] 174 | | init_temp: f64, [INFO] [stdout] ... | [INFO] [stdout] 180 | | batch_size: usize, [INFO] [stdout] 181 | | ) { [INFO] [stdout] | |_____^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#too_many_arguments [INFO] [stdout] = note: `#[warn(clippy::too_many_arguments)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: length comparison to zero [INFO] [stdout] --> src/partition/algorithm/anneal.rs:182:17 [INFO] [stdout] | [INFO] [stdout] 182 | assert!(self.parts.get(0).len() == 0, "part 0 (unassigned) must be empty"); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `self.parts.get(0).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: module has the same name as its containing module [INFO] [stdout] --> src/map/mod.rs:5:1 [INFO] [stdout] | [INFO] [stdout] 5 | mod map; [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#module_inception [INFO] [stdout] = note: `#[warn(clippy::module_inception)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual implementation of `.is_multiple_of()` [INFO] [stdout] --> src/partition/algorithm/anneal.rs:318:16 [INFO] [stdout] | [INFO] [stdout] 318 | if state.current_iter % 10000 == 0 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace with: `state.current_iter.is_multiple_of(10000)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_is_multiple_of [INFO] [stdout] = note: `#[warn(clippy::manual_is_multiple_of)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/map/pack/download.rs:35:9 [INFO] [stdout] | [INFO] [stdout] 35 | / if need_fsync_dir { [INFO] [stdout] 36 | | if let Some(dir) = self.target.parent() { [INFO] [stdout] 37 | | File::open(dir).and_then(|f| f.sync_all())?; [INFO] [stdout] 38 | | } [INFO] [stdout] 39 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 35 ~ if need_fsync_dir [INFO] [stdout] 36 ~ && let Some(dir) = self.target.parent() { [INFO] [stdout] 37 | File::open(dir).and_then(|f| f.sync_all())?; [INFO] [stdout] 38 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/map/pack/download.rs:62:39 [INFO] [stdout] | [INFO] [stdout] 62 | let mut sink = PendingWrite::open(&out_path, force)?; [INFO] [stdout] | ^^^^^^^^^ help: change this to: `out_path` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] = note: `#[warn(clippy::needless_borrow)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/partition/algorithm/equalize.rs:17:52 [INFO] [stdout] | [INFO] [stdout] 17 | .min_by(|(_, a), (_, b)| a.partial_cmp(&b).unwrap()) [INFO] [stdout] | ^^ help: change this to: `b` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&PathBuf` instead of `&Path` involves a new object where a slice will do [INFO] [stdout] --> src/map/pack/download.rs:90:41 [INFO] [stdout] | [INFO] [stdout] 90 | fn download_daves_demographics(out_dir: &PathBuf, state: &str, verbose: u8) -> Result<()> { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 90 - fn download_daves_demographics(out_dir: &PathBuf, state: &str, verbose: u8) -> Result<()> { [INFO] [stdout] 90 + fn download_daves_demographics(out_dir: &Path, state: &str, verbose: u8) -> Result<()> { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&PathBuf` instead of `&Path` involves a new object where a slice will do [INFO] [stdout] --> src/map/pack/download.rs:105:38 [INFO] [stdout] | [INFO] [stdout] 105 | fn download_daves_elections(out_dir: &PathBuf, state: &str, verbose: u8) -> Result<()> { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 105 - fn download_daves_elections(out_dir: &PathBuf, state: &str, verbose: u8) -> Result<()> { [INFO] [stdout] 105 + fn download_daves_elections(out_dir: &Path, state: &str, verbose: u8) -> Result<()> { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&PathBuf` instead of `&Path` involves a new object where a slice will do [INFO] [stdout] --> src/map/pack/download.rs:121:39 [INFO] [stdout] | [INFO] [stdout] 121 | fn download_tiger_geometries(out_dir: &PathBuf, state: &str, has_vtd: bool, verbose: u8) -> Result<()> { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 121 - fn download_tiger_geometries(out_dir: &PathBuf, state: &str, has_vtd: bool, verbose: u8) -> Result<()> { [INFO] [stdout] 121 + fn download_tiger_geometries(out_dir: &Path, state: &str, has_vtd: bool, verbose: u8) -> Result<()> { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/map/pack/download.rs:122:41 [INFO] [stdout] | [INFO] [stdout] 122 | let fips = util::state_abbr_to_fips(&state) [INFO] [stdout] | ^^^^^^ help: change this to: `state` [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/map/pack/download.rs:124:41 [INFO] [stdout] | [INFO] [stdout] 124 | let name = util::state_abbr_to_name(&state) [INFO] [stdout] | ^^^^^^ help: change this to: `state` [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 `if` statement can be collapsed [INFO] [stdout] --> src/partition/algorithm/equalize.rs:125:13 [INFO] [stdout] | [INFO] [stdout] 125 | / if let Some((neighbor, _)) = neighbors.iter() [INFO] [stdout] 126 | | .map(|&p| (p, self.part_weights().get_as_f64(series, p as usize).unwrap())) [INFO] [stdout] 127 | | .min_by(|(_, a), (_, b)| a.partial_cmp(&b).unwrap()) [INFO] [stdout] ... | [INFO] [stdout] 138 | | } [INFO] [stdout] | |_____________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 127 ~ .min_by(|(_, a), (_, b)| a.partial_cmp(&b).unwrap()) [INFO] [stdout] 128 ~ && let Some(new_part) = self.merge_parts(neighbor, smallest, false) { [INFO] [stdout] 129 | let frontier = self.frontiers.get(part as usize); [INFO] [stdout] ... [INFO] [stdout] 135 | } [INFO] [stdout] 136 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/partition/algorithm/equalize.rs:127:56 [INFO] [stdout] | [INFO] [stdout] 127 | .min_by(|(_, a), (_, b)| a.partial_cmp(&b).unwrap()) [INFO] [stdout] | ^^ help: change this to: `b` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&PathBuf` instead of `&Path` involves a new object where a slice will do [INFO] [stdout] --> src/map/pack/download.rs:153:40 [INFO] [stdout] | [INFO] [stdout] 153 | fn download_census_crosswalks(out_dir: &PathBuf, state: &str, verbose: u8) -> Result<()> { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 153 - fn download_census_crosswalks(out_dir: &PathBuf, state: &str, verbose: u8) -> Result<()> { [INFO] [stdout] 153 + fn download_census_crosswalks(out_dir: &Path, state: &str, verbose: u8) -> Result<()> { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/map/pack/download.rs:154:41 [INFO] [stdout] | [INFO] [stdout] 154 | let fips = util::state_abbr_to_fips(&state) [INFO] [stdout] | ^^^^^^ help: change this to: `state` [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/partition/algorithm/equalize.rs:196:60 [INFO] [stdout] | [INFO] [stdout] 196 | .min_by(|(_, a), (_, b)| a.partial_cmp(&b).unwrap()) [INFO] [stdout] | ^^ help: change this to: `b` [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/map/pack/download.rs:174:30 [INFO] [stdout] | [INFO] [stdout] 174 | util::require_dir_exists(&pack_dir)?; [INFO] [stdout] | ^^^^^^^^^ help: change this to: `pack_dir` [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: length comparison to zero [INFO] [stdout] --> src/partition/algorithm/equalize.rs:213:16 [INFO] [stdout] | [INFO] [stdout] 213 | if neighbors.len() == 0 { continue } [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `neighbors.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: casting to the same type is unnecessary (`usize` -> `usize`) [INFO] [stdout] --> src/partition/algorithm/randomize.rs:33:38 [INFO] [stdout] | [INFO] [stdout] 33 | Some(self.graph().edge(node, rng.random_range(0..self.graph().degree(node)) as usize).unwrap()) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `rng.random_range(0..self.graph().degree(node))` [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: method `default` can be confused for the standard trait method `std::default::Default::default` [INFO] [stdout] --> src/map/pack/format.rs:17:5 [INFO] [stdout] | [INFO] [stdout] 17 | / pub fn default() -> Self { [INFO] [stdout] 18 | | #[cfg(feature = "parquet")] [INFO] [stdout] 19 | | { [INFO] [stdout] 20 | | Self::Parquet [INFO] [stdout] ... | [INFO] [stdout] 26 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] | [INFO] [stdout] = help: consider implementing the trait `std::default::Default` or choosing a less ambiguous method name [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#should_implement_trait [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: doc list item overindented [INFO] [stdout] --> src/partition/algorithm/tabu.rs:14:9 [INFO] [stdout] | [INFO] [stdout] 14 | /// 0.0 = balance only, 1.0 = cut length only. [INFO] [stdout] | ^^^^^ help: try using ` ` (2 spaces) [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#doc_overindented_list_items [INFO] [stdout] = note: `#[warn(clippy::doc_overindented_list_items)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `map_or` can be simplified [INFO] [stdout] --> src/partition/algorithm/tabu.rs:169:35 [INFO] [stdout] | [INFO] [stdout] 169 | let is_tabu = tabu [INFO] [stdout] | ___________________________________^ [INFO] [stdout] 170 | | .get(&(node, dest)) [INFO] [stdout] 171 | | .map_or(false, |&expire| expire > iter); [INFO] [stdout] | |_______________________________________________________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_map_or [INFO] [stdout] help: use `is_some_and` instead [INFO] [stdout] | [INFO] [stdout] 171 - .map_or(false, |&expire| expire > iter); [INFO] [stdout] 171 + .is_some_and(|&expire| expire > iter); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: length comparison to zero [INFO] [stdout] --> src/partition/contiguity.rs:9:9 [INFO] [stdout] | [INFO] [stdout] 9 | self.parts.get(part as usize).len() == 0 [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `self.parts.get(part as usize).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: casting integer literal to `usize` is unnecessary [INFO] [stdout] --> src/partition/contiguity.rs:120:24 [INFO] [stdout] | [INFO] [stdout] 120 | let mut seen = 1 as usize; [INFO] [stdout] | ^^^^^^^^^^ help: try: `1_usize` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_cast [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: module has the same name as its containing module [INFO] [stdout] --> src/map/pack/mod.rs:5:1 [INFO] [stdout] | [INFO] [stdout] 5 | mod pack; [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#module_inception [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you seem to be trying to use `match` for destructuring a single pattern. Consider using `if let` [INFO] [stdout] --> src/map/pack/pack.rs:28:5 [INFO] [stdout] | [INFO] [stdout] 28 | / match client.head(url).send() { [INFO] [stdout] 29 | | Ok(resp) => match resp.status() { [INFO] [stdout] 30 | | StatusCode::OK => return Ok(true), [INFO] [stdout] 31 | | StatusCode::NOT_FOUND | StatusCode::GONE => return Ok(false), [INFO] [stdout] ... | [INFO] [stdout] 35 | | Err(_) => {} // fall through to range GET [INFO] [stdout] 36 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] | [INFO] [stdout] = note: you might want to preserve the comments from inside the `match` [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] 28 ~ if let Ok(resp) = client.head(url).send() { match resp.status() { [INFO] [stdout] 29 + StatusCode::OK => return Ok(true), [INFO] [stdout] 30 + StatusCode::NOT_FOUND | StatusCode::GONE => return Ok(false), [INFO] [stdout] 31 ~ // Some servers don’t like HEAD; fall through to range GET. [INFO] [stdout] 32 + _ => {} [INFO] [stdout] 33 + } } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/map/pack/pack.rs:56:30 [INFO] [stdout] | [INFO] [stdout] 56 | util::require_dir_exists(&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_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/map/pack/pack.rs:84:30 [INFO] [stdout] | [INFO] [stdout] 84 | util::require_dir_exists(&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_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/map/pack/pack.rs:100:34 [INFO] [stdout] | [INFO] [stdout] 100 | util::extract_zip(&zip_path, &path, true)?; [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_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&PathBuf` instead of `&Path` involves a new object where a slice will do [INFO] [stdout] --> src/map/pack/pack.rs:109:33 [INFO] [stdout] | [INFO] [stdout] 109 | pub fn validate_pack(pack_path: &PathBuf, verbose: u8) -> Result<()> { todo!()} [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 109 - pub fn validate_pack(pack_path: &PathBuf, verbose: u8) -> Result<()> { todo!()} [INFO] [stdout] 109 + pub fn validate_pack(pack_path: &Path, verbose: u8) -> Result<()> { todo!()} [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: importing a legacy numeric constant [INFO] [stdout] --> src/partition/metrics/compactness.rs:1:28 [INFO] [stdout] | [INFO] [stdout] 1 | use std::f64::{consts::PI, INFINITY}; [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: remove this import and use the associated constant `f64::INFINITY` from the primitive type instead [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#legacy_numeric_constants [INFO] [stdout] = note: `#[warn(clippy::legacy_numeric_constants)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: usage of a legacy numeric constant [INFO] [stdout] --> src/partition/metrics/compactness.rs:25:38 [INFO] [stdout] | [INFO] [stdout] 25 | if perimeter == 0.0 { return INFINITY } [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#legacy_numeric_constants [INFO] [stdout] help: use the associated constant instead [INFO] [stdout] | [INFO] [stdout] 25 | if perimeter == 0.0 { return f64::INFINITY } [INFO] [stdout] | +++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: usage of a legacy numeric constant [INFO] [stdout] --> src/partition/metrics/compactness.rs:36:38 [INFO] [stdout] | [INFO] [stdout] 36 | if perimeter == 0.0 { return INFINITY } [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#legacy_numeric_constants [INFO] [stdout] help: use the associated constant instead [INFO] [stdout] | [INFO] [stdout] 36 | if perimeter == 0.0 { return f64::INFINITY } [INFO] [stdout] | +++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: module has the same name as its containing module [INFO] [stdout] --> src/objective/mod.rs:2:1 [INFO] [stdout] | [INFO] [stdout] 2 | mod objective; [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#module_inception [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: length comparison to zero [INFO] [stdout] --> src/partition/algorithm/anneal.rs:75:17 [INFO] [stdout] | [INFO] [stdout] 75 | assert!(self.parts.get(0).len() == 0, "part 0 (unassigned) must be empty"); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `self.parts.get(0).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: length comparison to zero [INFO] [stdout] --> src/partition/ops/flip.rs:155:12 [INFO] [stdout] | [INFO] [stdout] 155 | if subgraph.len() == 0 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `subgraph.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: length comparison to zero [INFO] [stdout] --> src/partition/algorithm/anneal.rs:118:18 [INFO] [stdout] | [INFO] [stdout] 118 | - if bundle.len() > 0 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ help: using `!is_empty` is clearer and more explicit: `!bundle.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: parameter is only used in recursion [INFO] [stdout] --> src/partition/ops/merge.rs:7:68 [INFO] [stdout] | [INFO] [stdout] 7 | pub(crate) fn merge_parts(&mut self, target: u32, source: u32, check: bool) -> Option { [INFO] [stdout] | ^^^^^ help: if this is intentional, prefix it with an underscore: `_check` [INFO] [stdout] | [INFO] [stdout] note: parameter used here [INFO] [stdout] --> src/partition/ops/merge.rs:13:53 [INFO] [stdout] | [INFO] [stdout] 13 | return self.merge_parts(source, target, check) [INFO] [stdout] | ^^^^^ [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#only_used_in_recursion [INFO] [stdout] = note: `#[warn(clippy::only_used_in_recursion)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this function has too many arguments (10/7) [INFO] [stdout] --> src/partition/algorithm/anneal.rs:171:5 [INFO] [stdout] | [INFO] [stdout] 171 | / pub(crate) fn anneal(&mut self, [INFO] [stdout] 172 | | objectives: &[Objective], [INFO] [stdout] 173 | | max_iter: usize, [INFO] [stdout] 174 | | init_temp: f64, [INFO] [stdout] ... | [INFO] [stdout] 180 | | batch_size: usize, [INFO] [stdout] 181 | | ) { [INFO] [stdout] | |_____^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#too_many_arguments [INFO] [stdout] = note: `#[warn(clippy::too_many_arguments)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: length comparison to zero [INFO] [stdout] --> src/partition/algorithm/anneal.rs:182:17 [INFO] [stdout] | [INFO] [stdout] 182 | assert!(self.parts.get(0).len() == 0, "part 0 (unassigned) must be empty"); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `self.parts.get(0).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: this `if` statement can be collapsed [INFO] [stdout] --> src/partition/ops/recombine.rs:86:13 [INFO] [stdout] | [INFO] [stdout] 86 | / if let Some(p) = parent[u] { [INFO] [stdout] 87 | | if p != u { children[p].push(u) } [INFO] [stdout] 88 | | } [INFO] [stdout] | |_____________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 86 ~ if let Some(p) = parent[u] [INFO] [stdout] 87 ~ && p != u { children[p].push(u) } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual implementation of `.is_multiple_of()` [INFO] [stdout] --> src/partition/algorithm/anneal.rs:318:16 [INFO] [stdout] | [INFO] [stdout] 318 | if state.current_iter % 10000 == 0 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace with: `state.current_iter.is_multiple_of(10000)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_is_multiple_of [INFO] [stdout] = note: `#[warn(clippy::manual_is_multiple_of)]` 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/partition/ops/recombine.rs:172:28 [INFO] [stdout] | [INFO] [stdout] 172 | self.move_subgraph(&subtree, other, false); [INFO] [stdout] | ^^^^^^^^ help: change this to: `subtree` [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: module has the same name as its containing module [INFO] [stdout] --> src/partition/mod.rs:5:1 [INFO] [stdout] | [INFO] [stdout] 5 | mod partition; [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#module_inception [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/partition/algorithm/equalize.rs:17:52 [INFO] [stdout] | [INFO] [stdout] 17 | .min_by(|(_, a), (_, b)| a.partial_cmp(&b).unwrap()) [INFO] [stdout] | ^^ help: change this to: `b` [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 `if` statement can be collapsed [INFO] [stdout] --> src/partition/algorithm/equalize.rs:125:13 [INFO] [stdout] | [INFO] [stdout] 125 | / if let Some((neighbor, _)) = neighbors.iter() [INFO] [stdout] 126 | | .map(|&p| (p, self.part_weights().get_as_f64(series, p as usize).unwrap())) [INFO] [stdout] 127 | | .min_by(|(_, a), (_, b)| a.partial_cmp(&b).unwrap()) [INFO] [stdout] ... | [INFO] [stdout] 138 | | } [INFO] [stdout] | |_____________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 127 ~ .min_by(|(_, a), (_, b)| a.partial_cmp(&b).unwrap()) [INFO] [stdout] 128 ~ && let Some(new_part) = self.merge_parts(neighbor, smallest, false) { [INFO] [stdout] 129 | let frontier = self.frontiers.get(part as usize); [INFO] [stdout] ... [INFO] [stdout] 135 | } [INFO] [stdout] 136 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/partition/algorithm/equalize.rs:127:56 [INFO] [stdout] | [INFO] [stdout] 127 | .min_by(|(_, a), (_, b)| a.partial_cmp(&b).unwrap()) [INFO] [stdout] | ^^ help: change this to: `b` [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/partition/algorithm/equalize.rs:196:60 [INFO] [stdout] | [INFO] [stdout] 196 | .min_by(|(_, a), (_, b)| a.partial_cmp(&b).unwrap()) [INFO] [stdout] | ^^ help: change this to: `b` [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: length comparison to zero [INFO] [stdout] --> src/partition/algorithm/equalize.rs:213:16 [INFO] [stdout] | [INFO] [stdout] 213 | if neighbors.len() == 0 { continue } [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `neighbors.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: casting to the same type is unnecessary (`usize` -> `usize`) [INFO] [stdout] --> src/partition/algorithm/randomize.rs:33:38 [INFO] [stdout] | [INFO] [stdout] 33 | Some(self.graph().edge(node, rng.random_range(0..self.graph().degree(node)) as usize).unwrap()) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `rng.random_range(0..self.graph().degree(node))` [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: doc list item overindented [INFO] [stdout] --> src/partition/algorithm/tabu.rs:14:9 [INFO] [stdout] | [INFO] [stdout] 14 | /// 0.0 = balance only, 1.0 = cut length only. [INFO] [stdout] | ^^^^^ help: try using ` ` (2 spaces) [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#doc_overindented_list_items [INFO] [stdout] = note: `#[warn(clippy::doc_overindented_list_items)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `map_or` can be simplified [INFO] [stdout] --> src/partition/algorithm/tabu.rs:169:35 [INFO] [stdout] | [INFO] [stdout] 169 | let is_tabu = tabu [INFO] [stdout] | ___________________________________^ [INFO] [stdout] 170 | | .get(&(node, dest)) [INFO] [stdout] 171 | | .map_or(false, |&expire| expire > iter); [INFO] [stdout] | |_______________________________________________________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_map_or [INFO] [stdout] help: use `is_some_and` instead [INFO] [stdout] | [INFO] [stdout] 171 - .map_or(false, |&expire| expire > iter); [INFO] [stdout] 171 + .is_some_and(|&expire| expire > iter); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: length comparison to zero [INFO] [stdout] --> src/partition/contiguity.rs:9:9 [INFO] [stdout] | [INFO] [stdout] 9 | self.parts.get(part as usize).len() == 0 [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `self.parts.get(part as usize).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: casting integer literal to `usize` is unnecessary [INFO] [stdout] --> src/partition/contiguity.rs:120:24 [INFO] [stdout] | [INFO] [stdout] 120 | let mut seen = 1 as usize; [INFO] [stdout] | ^^^^^^^^^^ help: try: `1_usize` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_cast [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: casting to the same type is unnecessary (`u32` -> `u32`) [INFO] [stdout] --> src/plan/io/svg.rs:76:48 [INFO] [stdout] | [INFO] [stdout] 76 | let frontier = self.partition.frontier(d as u32); [INFO] [stdout] | ^^^^^^^^ help: try: `d` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_cast [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: casting to the same type is unnecessary (`usize` -> `usize`) [INFO] [stdout] --> src/plan/io/svg.rs:81:28 [INFO] [stdout] | [INFO] [stdout] 81 | include.insert(i as usize); [INFO] [stdout] | ^^^^^^^^^^ help: try: `i` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_cast [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: casting to the same type is unnecessary (`usize` -> `usize`) [INFO] [stdout] --> src/plan/io/svg.rs:149:42 [INFO] [stdout] | [INFO] [stdout] 149 | if self.partition.assignment(i as usize) != d { [INFO] [stdout] | ^^^^^^^^^^ help: try: `i` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_cast [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: casting to the same type is unnecessary (`usize` -> `usize`) [INFO] [stdout] --> src/plan/io/svg.rs:155:32 [INFO] [stdout] | [INFO] [stdout] 155 | add_shared(i as usize, j); [INFO] [stdout] | ^^^^^^^^^^ help: try: `i` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_cast [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: module has the same name as its containing module [INFO] [stdout] --> src/plan/mod.rs:2:1 [INFO] [stdout] | [INFO] [stdout] 2 | mod plan; [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#module_inception [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: importing a legacy numeric constant [INFO] [stdout] --> src/partition/metrics/compactness.rs:1:28 [INFO] [stdout] | [INFO] [stdout] 1 | use std::f64::{consts::PI, INFINITY}; [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: remove this import and use the associated constant `f64::INFINITY` from the primitive type instead [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#legacy_numeric_constants [INFO] [stdout] = note: `#[warn(clippy::legacy_numeric_constants)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: usage of a legacy numeric constant [INFO] [stdout] --> src/partition/metrics/compactness.rs:25:38 [INFO] [stdout] | [INFO] [stdout] 25 | if perimeter == 0.0 { return INFINITY } [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#legacy_numeric_constants [INFO] [stdout] help: use the associated constant instead [INFO] [stdout] | [INFO] [stdout] 25 | if perimeter == 0.0 { return f64::INFINITY } [INFO] [stdout] | +++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: usage of a legacy numeric constant [INFO] [stdout] --> src/partition/metrics/compactness.rs:36:38 [INFO] [stdout] | [INFO] [stdout] 36 | if perimeter == 0.0 { return INFINITY } [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#legacy_numeric_constants [INFO] [stdout] help: use the associated constant instead [INFO] [stdout] | [INFO] [stdout] 36 | if perimeter == 0.0 { return f64::INFINITY } [INFO] [stdout] | +++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this function has too many arguments (10/7) [INFO] [stdout] --> src/plan/plan.rs:129:5 [INFO] [stdout] | [INFO] [stdout] 129 | / pub fn anneal( [INFO] [stdout] 130 | | &mut self, [INFO] [stdout] 131 | | objectives: &[Objective], [INFO] [stdout] 132 | | max_iter: usize, [INFO] [stdout] ... | [INFO] [stdout] 139 | | batch_size: usize, [INFO] [stdout] 140 | | ) -> Result<()> { [INFO] [stdout] | |___________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#too_many_arguments [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: length comparison to zero [INFO] [stdout] --> src/partition/ops/flip.rs:155:12 [INFO] [stdout] | [INFO] [stdout] 155 | if subgraph.len() == 0 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `subgraph.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: parameter is only used in recursion [INFO] [stdout] --> src/partition/ops/merge.rs:7:68 [INFO] [stdout] | [INFO] [stdout] 7 | pub(crate) fn merge_parts(&mut self, target: u32, source: u32, check: bool) -> Option { [INFO] [stdout] | ^^^^^ help: if this is intentional, prefix it with an underscore: `_check` [INFO] [stdout] | [INFO] [stdout] note: parameter used here [INFO] [stdout] --> src/partition/ops/merge.rs:13:53 [INFO] [stdout] | [INFO] [stdout] 13 | return self.merge_parts(source, target, check) [INFO] [stdout] | ^^^^^ [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#only_used_in_recursion [INFO] [stdout] = note: `#[warn(clippy::only_used_in_recursion)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/partition/ops/recombine.rs:86:13 [INFO] [stdout] | [INFO] [stdout] 86 | / if let Some(p) = parent[u] { [INFO] [stdout] 87 | | if p != u { children[p].push(u) } [INFO] [stdout] 88 | | } [INFO] [stdout] | |_____________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 86 ~ if let Some(p) = parent[u] [INFO] [stdout] 87 ~ && p != u { children[p].push(u) } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/partition/ops/recombine.rs:172:28 [INFO] [stdout] | [INFO] [stdout] 172 | self.move_subgraph(&subtree, other, false); [INFO] [stdout] | ^^^^^^^^ help: change this to: `subtree` [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: module has the same name as its containing module [INFO] [stdout] --> src/partition/mod.rs:5:1 [INFO] [stdout] | [INFO] [stdout] 5 | mod partition; [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#module_inception [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] Checking openmander-wasm v0.1.3 (/opt/rustwide/workdir/bindings/wasm) [INFO] [stdout] warning: casting to the same type is unnecessary (`u32` -> `u32`) [INFO] [stdout] --> src/plan/io/svg.rs:76:48 [INFO] [stdout] | [INFO] [stdout] 76 | let frontier = self.partition.frontier(d as u32); [INFO] [stdout] | ^^^^^^^^ help: try: `d` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_cast [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: casting to the same type is unnecessary (`usize` -> `usize`) [INFO] [stdout] --> src/plan/io/svg.rs:81:28 [INFO] [stdout] | [INFO] [stdout] 81 | include.insert(i as usize); [INFO] [stdout] | ^^^^^^^^^^ help: try: `i` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_cast [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: casting to the same type is unnecessary (`usize` -> `usize`) [INFO] [stdout] --> src/plan/io/svg.rs:149:42 [INFO] [stdout] | [INFO] [stdout] 149 | if self.partition.assignment(i as usize) != d { [INFO] [stdout] | ^^^^^^^^^^ help: try: `i` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_cast [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: casting to the same type is unnecessary (`usize` -> `usize`) [INFO] [stdout] --> src/plan/io/svg.rs:155:32 [INFO] [stdout] | [INFO] [stdout] 155 | add_shared(i as usize, j); [INFO] [stdout] | ^^^^^^^^^^ help: try: `i` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_cast [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: module has the same name as its containing module [INFO] [stdout] --> src/plan/mod.rs:2:1 [INFO] [stdout] | [INFO] [stdout] 2 | mod plan; [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#module_inception [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this function has too many arguments (10/7) [INFO] [stdout] --> src/plan/plan.rs:129:5 [INFO] [stdout] | [INFO] [stdout] 129 | / pub fn anneal( [INFO] [stdout] 130 | | &mut self, [INFO] [stdout] 131 | | objectives: &[Objective], [INFO] [stdout] 132 | | max_iter: usize, [INFO] [stdout] ... | [INFO] [stdout] 139 | | batch_size: usize, [INFO] [stdout] 140 | | ) -> Result<()> { [INFO] [stdout] | |___________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#too_many_arguments [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary closure used to substitute value for `Result::Err` [INFO] [stdout] --> bindings/wasm/src/map.rs:21:22 [INFO] [stdout] | [INFO] [stdout] 21 | let format = openmander_core::Map::detect_pack_format(&mem) [INFO] [stdout] | ______________________^ [INFO] [stdout] 22 | | .map_err(js_err) [INFO] [stdout] 23 | | .unwrap_or_else(|_| openmander_core::PackFormat::Pmtiles); // Default to PMTiles for WASM [INFO] [stdout] | |_____________________________________________________________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_lazy_evaluations [INFO] [stdout] = note: `#[warn(clippy::unnecessary_lazy_evaluations)]` on by default [INFO] [stdout] help: use `unwrap_or` instead [INFO] [stdout] | [INFO] [stdout] 23 - .unwrap_or_else(|_| openmander_core::PackFormat::Pmtiles); // Default to PMTiles for WASM [INFO] [stdout] 23 + .unwrap_or(openmander_core::PackFormat::Pmtiles); // Default to PMTiles for WASM [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary closure used to substitute value for `Result::Err` [INFO] [stdout] --> bindings/wasm/src/map.rs:21:22 [INFO] [stdout] | [INFO] [stdout] 21 | let format = openmander_core::Map::detect_pack_format(&mem) [INFO] [stdout] | ______________________^ [INFO] [stdout] 22 | | .map_err(js_err) [INFO] [stdout] 23 | | .unwrap_or_else(|_| openmander_core::PackFormat::Pmtiles); // Default to PMTiles for WASM [INFO] [stdout] | |_____________________________________________________________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_lazy_evaluations [INFO] [stdout] = note: `#[warn(clippy::unnecessary_lazy_evaluations)]` on by default [INFO] [stdout] help: use `unwrap_or` instead [INFO] [stdout] | [INFO] [stdout] 23 - .unwrap_or_else(|_| openmander_core::PackFormat::Pmtiles); // Default to PMTiles for WASM [INFO] [stdout] 23 + .unwrap_or(openmander_core::PackFormat::Pmtiles); // Default to PMTiles for WASM [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this function has too many arguments (11/7) [INFO] [stdout] --> bindings/python/src/plan.rs:163:5 [INFO] [stdout] | [INFO] [stdout] 163 | / pub fn anneal<'py>(&mut self, [INFO] [stdout] 164 | | py: Python<'py>, [INFO] [stdout] 165 | | objectives: Vec>, [INFO] [stdout] 166 | | max_iter: usize, [INFO] [stdout] ... | [INFO] [stdout] 173 | | batch_size: usize, [INFO] [stdout] 174 | | ) -> PyResult<()> { [INFO] [stdout] | |_____________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#too_many_arguments [INFO] [stdout] = note: `#[warn(clippy::too_many_arguments)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this function has too many arguments (11/7) [INFO] [stdout] --> bindings/python/src/plan.rs:163:5 [INFO] [stdout] | [INFO] [stdout] 163 | / pub fn anneal<'py>(&mut self, [INFO] [stdout] 164 | | py: Python<'py>, [INFO] [stdout] 165 | | objectives: Vec>, [INFO] [stdout] 166 | | max_iter: usize, [INFO] [stdout] ... | [INFO] [stdout] 173 | | batch_size: usize, [INFO] [stdout] 174 | | ) -> PyResult<()> { [INFO] [stdout] | |_____________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#too_many_arguments [INFO] [stdout] = note: `#[warn(clippy::too_many_arguments)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] Finished `dev` profile [unoptimized + debuginfo] target(s) in 2m 26s [INFO] running `Command { std: "docker" "inspect" "2258bea37d987c4b4c3dff8a8447dbecc81ec001bcb05087e0d3adfa2f57b106", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "2258bea37d987c4b4c3dff8a8447dbecc81ec001bcb05087e0d3adfa2f57b106", kill_on_drop: false }` [INFO] [stdout] 2258bea37d987c4b4c3dff8a8447dbecc81ec001bcb05087e0d3adfa2f57b106