[INFO] fetching crate cardchapter 0.1.28... [INFO] linting cardchapter-0.1.28 against nightly for clippy-nonminimal_bool-denied [INFO] extracting crate cardchapter 0.1.28 into /workspace/builds/worker-1-tc1/source [INFO] started tweaking crates.io crate cardchapter 0.1.28 [INFO] finished tweaking crates.io crate cardchapter 0.1.28 [INFO] tweaked toml for crates.io crate cardchapter 0.1.28 written to /workspace/builds/worker-1-tc1/source/Cargo.toml [INFO] validating manifest of crates.io crate cardchapter 0.1.28 on toolchain nightly [INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+nightly" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }` [INFO] crate crates.io crate cardchapter 0.1.28 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 slugify v0.1.0 [INFO] [stderr] Downloaded ravif v0.11.10 [INFO] [stderr] Downloaded bitstream-io v2.5.3 [INFO] [stderr] Downloaded async-stream v0.3.5 [INFO] [stderr] Downloaded atomic v0.6.0 [INFO] [stderr] Downloaded async-stream-impl v0.3.5 [INFO] [stderr] Downloaded devise_codegen v0.4.1 [INFO] [stderr] Downloaded devise v0.4.1 [INFO] [stderr] Downloaded ref-cast-impl v1.0.23 [INFO] [stderr] Downloaded devise_core v0.4.1 [INFO] [stderr] Downloaded ref-cast v1.0.23 [INFO] [stderr] Downloaded quanta v0.12.3 [INFO] [stderr] Downloaded built v0.7.4 [INFO] [stderr] Downloaded qrcode v0.14.1 [INFO] [stderr] Downloaded raw-cpuid v11.1.0 [INFO] [stderr] Downloaded object v0.36.3 [INFO] [stderr] Downloaded moka v0.12.8 [INFO] [stderr] Downloaded tokio v1.39.3 [INFO] [stderr] Downloaded libc v0.2.157 [INFO] [stderr] Downloaded webp v0.3.0 [INFO] [stderr] Downloaded libwebp-sys v0.9.5 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-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] 132aaffdfb9eb033988b6b4c3e0f456b9aa27c9b589717b75e0d0c88dab878bd [INFO] running `Command { std: "docker" "start" "-a" "132aaffdfb9eb033988b6b4c3e0f456b9aa27c9b589717b75e0d0c88dab878bd", kill_on_drop: false }` [INFO] running `Command { std: "docker" "inspect" "132aaffdfb9eb033988b6b4c3e0f456b9aa27c9b589717b75e0d0c88dab878bd", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "132aaffdfb9eb033988b6b4c3e0f456b9aa27c9b589717b75e0d0c88dab878bd", kill_on_drop: false }` [INFO] [stdout] 132aaffdfb9eb033988b6b4c3e0f456b9aa27c9b589717b75e0d0c88dab878bd [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-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] 4aeca694e8163c80f76c24b7271a873e35c0bba53413eb9d127268059ebb94bd [INFO] running `Command { std: "docker" "start" "-a" "4aeca694e8163c80f76c24b7271a873e35c0bba53413eb9d127268059ebb94bd", kill_on_drop: false }` [INFO] [stderr] Compiling libc v0.2.157 [INFO] [stderr] Compiling serde v1.0.208 [INFO] [stderr] Compiling proc-macro2-diagnostics v0.10.1 [INFO] [stderr] Compiling syn v2.0.75 [INFO] [stderr] Compiling yansi v1.0.1 [INFO] [stderr] Checking either v1.13.0 [INFO] [stderr] Compiling pin-project-lite v0.2.14 [INFO] [stderr] Checking crossbeam-epoch v0.9.18 [INFO] [stderr] Checking log v0.4.22 [INFO] [stderr] Checking futures-io v0.3.30 [INFO] [stderr] Compiling itoa v1.0.11 [INFO] [stderr] Checking num-bigint v0.4.6 [INFO] [stderr] Checking spin v0.9.8 [INFO] [stderr] Checking aligned-vec v0.5.0 [INFO] [stderr] Compiling futures-sink v0.3.30 [INFO] [stderr] Compiling futures-core v0.3.30 [INFO] [stderr] Compiling built v0.7.4 [INFO] [stderr] Compiling rayon-core v1.12.1 [INFO] [stderr] Compiling ref-cast v1.0.23 [INFO] [stderr] Checking v_frame v0.3.8 [INFO] [stderr] Checking miniz_oxide v0.8.0 [INFO] [stderr] Checking crossbeam-deque v0.8.5 [INFO] [stderr] Checking socket2 v0.5.7 [INFO] [stderr] Checking signal-hook-registry v1.4.2 [INFO] [stderr] Checking mio v1.0.2 [INFO] [stderr] Compiling rav1e v0.7.1 [INFO] [stderr] Checking getrandom v0.2.15 [INFO] [stderr] Compiling once_cell v1.19.0 [INFO] [stderr] Compiling bytes v1.7.1 [INFO] [stderr] Compiling pin-utils v0.1.0 [INFO] [stderr] Compiling futures-task v0.3.30 [INFO] [stderr] Compiling glob v0.3.1 [INFO] [stderr] Checking bytemuck v1.17.0 [INFO] [stderr] Compiling tracing-core v0.1.32 [INFO] [stderr] Compiling futures-util v0.3.30 [INFO] [stderr] Checking num-rational v0.4.2 [INFO] [stderr] Checking flate2 v1.0.33 [INFO] [stderr] Compiling jobserver v0.1.32 [INFO] [stderr] Checking av1-grain v0.2.3 [INFO] [stderr] Compiling http v0.2.12 [INFO] [stderr] Checking is-terminal v0.4.13 [INFO] [stderr] Compiling futures-channel v0.3.30 [INFO] [stderr] Checking itertools v0.12.1 [INFO] [stderr] Compiling simd_helpers v0.1.0 [INFO] [stderr] Checking maybe-rayon v0.1.1 [INFO] [stderr] Compiling uncased v0.9.10 [INFO] [stderr] Compiling bitflags v2.6.0 [INFO] [stderr] Checking weezl v0.1.8 [INFO] [stderr] Compiling try-lock v0.2.5 [INFO] [stderr] Checking imgref v1.10.1 [INFO] [stderr] Checking bitstream-io v2.5.3 [INFO] [stderr] Compiling cc v1.1.13 [INFO] [stderr] Compiling want v0.3.1 [INFO] [stderr] Checking loop9 v0.1.5 [INFO] [stderr] Compiling http-body v0.4.6 [INFO] [stderr] Checking tracing v0.1.40 [INFO] [stderr] Compiling tokio v1.39.3 [INFO] [stderr] Checking rgb v0.8.50 [INFO] [stderr] Compiling time v0.3.36 [INFO] [stderr] Checking flume v0.11.0 [INFO] [stderr] Checking avif-serialize v0.8.1 [INFO] [stderr] Compiling httparse v1.9.4 [INFO] [stderr] Checking concurrent-queue v2.5.0 [INFO] [stderr] Checking half v2.4.1 [INFO] [stderr] Compiling inlinable_string v0.1.15 [INFO] [stderr] Compiling tower-service v0.3.3 [INFO] [stderr] Checking jpeg-decoder v0.3.1 [INFO] [stderr] Compiling httpdate v1.0.3 [INFO] [stderr] Checking winnow v0.6.18 [INFO] [stderr] Compiling rustix v0.38.34 [INFO] [stderr] Compiling percent-encoding v2.3.1 [INFO] [stderr] Checking exr v1.72.0 [INFO] [stderr] Compiling libwebp-sys v0.9.5 [INFO] [stderr] Compiling devise_core v0.4.1 [INFO] [stderr] Checking tiff v0.9.1 [INFO] [stderr] Checking image-webp v0.1.3 [INFO] [stderr] Compiling cookie v0.18.1 [INFO] [stderr] Compiling futures v0.3.30 [INFO] [stderr] Compiling indexmap v2.4.0 [INFO] [stderr] Checking gif v0.13.1 [INFO] [stderr] Checking event-listener v5.3.1 [INFO] [stderr] Checking png v0.17.13 [INFO] [stderr] Checking zune-jpeg v0.4.13 [INFO] [stderr] Compiling stable-pattern v0.1.0 [INFO] [stderr] Checking parking_lot_core v0.9.10 [INFO] [stderr] Compiling hyper v0.14.30 [INFO] [stderr] Checking rayon v1.10.0 [INFO] [stderr] Checking qoi v0.4.1 [INFO] [stderr] Checking rand_core v0.6.4 [INFO] [stderr] Compiling figment v0.10.19 [INFO] [stderr] Checking encoding_rs v0.8.34 [INFO] [stderr] Compiling multer v3.1.0 [INFO] [stderr] Compiling serde_json v1.0.125 [INFO] [stderr] Compiling zerocopy-derive v0.7.35 [INFO] [stderr] Compiling serde_derive v1.0.208 [INFO] [stderr] Compiling tokio-macros v2.4.0 [INFO] [stderr] Compiling futures-macro v0.3.30 [INFO] [stderr] Compiling thiserror-impl v1.0.63 [INFO] [stderr] Compiling pear_codegen v0.2.9 [INFO] [stderr] Checking zerocopy v0.7.35 [INFO] [stderr] Checking ahash v0.8.11 [INFO] [stderr] Compiling ref-cast-impl v1.0.23 [INFO] [stderr] Checking thiserror v1.0.63 [INFO] [stderr] Compiling profiling-procmacros v1.0.15 [INFO] [stderr] Compiling num-derive v0.4.2 [INFO] [stderr] Checking hashbrown v0.14.5 [INFO] [stderr] Checking profiling v1.0.15 [INFO] [stderr] Compiling arg_enum_proc_macro v0.3.4 [INFO] [stderr] Compiling pear v0.2.9 [INFO] [stderr] Checking ppv-lite86 v0.2.20 [INFO] [stderr] Compiling devise_codegen v0.4.1 [INFO] [stderr] Compiling smallvec v1.13.2 [INFO] [stderr] Compiling state v0.6.0 [INFO] [stderr] Compiling rocket_http v0.5.1 [INFO] [stderr] Compiling devise v0.4.1 [INFO] [stderr] Checking rand_chacha v0.3.1 [INFO] [stderr] Compiling async-stream-impl v0.3.5 [INFO] [stderr] Compiling async-trait v0.1.81 [INFO] [stderr] Checking parking_lot v0.12.3 [INFO] [stderr] Checking event-listener-strategy v0.5.2 [INFO] [stderr] Checking raw-cpuid v11.1.0 [INFO] [stderr] Checking http v1.1.0 [INFO] [stderr] Checking tokio-util v0.7.11 [INFO] [stderr] Compiling rocket v0.5.1 [INFO] [stderr] Compiling moka v0.12.8 [INFO] [stderr] Checking tempfile v3.12.0 [INFO] [stderr] Checking tokio-stream v0.1.15 [INFO] [stderr] Checking async-lock v3.4.0 [INFO] [stderr] Checking async-stream v0.3.5 [INFO] [stderr] Checking rand v0.8.5 [INFO] [stderr] Checking hashlink v0.8.4 [INFO] [stderr] Checking quanta v0.12.3 [INFO] [stderr] Checking uuid v1.10.0 [INFO] [stderr] Compiling rocket_codegen v0.5.1 [INFO] [stderr] Checking num_cpus v1.16.0 [INFO] [stderr] Checking atomic v0.5.3 [INFO] [stderr] Checking triomphe v0.1.11 [INFO] [stderr] Checking binascii v0.1.4 [INFO] [stderr] Checking tagptr v0.2.0 [INFO] [stderr] Checking unidecode v0.3.0 [INFO] [stderr] Checking yaml-rust2 v0.8.1 [INFO] [stderr] Compiling indoc v2.0.5 [INFO] [stderr] Checking slugify v0.1.0 [INFO] [stderr] Checking serde_spanned v0.6.7 [INFO] [stderr] Checking toml_datetime v0.6.8 [INFO] [stderr] Checking ubyte v0.10.4 [INFO] [stderr] Checking url v2.5.2 [INFO] [stderr] Checking ravif v0.11.10 [INFO] [stderr] Checking image v0.25.2 [INFO] [stderr] Checking h2 v0.3.26 [INFO] [stderr] Checking toml_edit v0.22.20 [INFO] [stderr] Checking toml v0.8.19 [INFO] [stderr] Checking qrcode v0.14.1 [INFO] [stderr] Checking webp v0.3.0 [INFO] [stderr] Checking cardchapter v0.1.28 (/opt/rustwide/workdir) [INFO] [stdout] warning: redundant field names in struct initialization [INFO] [stdout] --> src/ministry_directory.rs:156:13 [INFO] [stdout] | [INFO] [stdout] 156 | directory_root: directory_root, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `directory_root` [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/ministry_directory.rs:361:13 [INFO] [stdout] | [INFO] [stdout] 361 | image_url: image_url, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ help: replace it with: `image_url` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant field names in struct initialization [INFO] [stdout] --> src/ministry_directory.rs:156:13 [INFO] [stdout] | [INFO] [stdout] 156 | directory_root: directory_root, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `directory_root` [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/ministry_directory.rs:361:13 [INFO] [stdout] | [INFO] [stdout] 361 | image_url: image_url, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ help: replace it with: `image_url` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/ministry_directory.rs:167:13 [INFO] [stdout] | [INFO] [stdout] 167 | return Ok(()); [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] = note: `#[warn(clippy::needless_return)]` on by default [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 167 - return Ok(()); [INFO] [stdout] 167 + Ok(()) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/ministry_directory.rs:170:13 [INFO] [stdout] | [INFO] [stdout] 170 | return self.create(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 170 - return self.create(); [INFO] [stdout] 170 + self.create() [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary closure used to substitute value for `Option::None` [INFO] [stdout] --> src/ministry_directory.rs:179:26 [INFO] [stdout] | [INFO] [stdout] 179 | println!("✅ {}", content_path.to_str().unwrap_or_else(|| "")); [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] 179 - println!("✅ {}", content_path.to_str().unwrap_or_else(|| "")); [INFO] [stdout] 179 + println!("✅ {}", content_path.to_str().unwrap_or("")); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary closure used to substitute value for `Option::None` [INFO] [stdout] --> src/ministry_directory.rs:184:26 [INFO] [stdout] | [INFO] [stdout] 184 | println!("✅ {}", assets_path.to_str().unwrap_or_else(|| "")); [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] help: use `unwrap_or` instead [INFO] [stdout] | [INFO] [stdout] 184 - println!("✅ {}", assets_path.to_str().unwrap_or_else(|| "")); [INFO] [stdout] 184 + println!("✅ {}", assets_path.to_str().unwrap_or("")); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary closure used to substitute value for `Option::None` [INFO] [stdout] --> src/ministry_directory.rs:194:26 [INFO] [stdout] | [INFO] [stdout] 194 | println!("✅ {}", bee_path.to_str().unwrap_or_else(|| "")); [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] help: use `unwrap_or` instead [INFO] [stdout] | [INFO] [stdout] 194 - println!("✅ {}", bee_path.to_str().unwrap_or_else(|| "")); [INFO] [stdout] 194 + println!("✅ {}", bee_path.to_str().unwrap_or("")); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary closure used to substitute value for `Option::None` [INFO] [stdout] --> src/ministry_directory.rs:200:26 [INFO] [stdout] | [INFO] [stdout] 200 | println!("✅ {}", favicon_path.to_str().unwrap_or_else(|| "")); [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] help: use `unwrap_or` instead [INFO] [stdout] | [INFO] [stdout] 200 - println!("✅ {}", favicon_path.to_str().unwrap_or_else(|| "")); [INFO] [stdout] 200 + println!("✅ {}", favicon_path.to_str().unwrap_or("")); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/ministry_directory.rs:213:13 [INFO] [stdout] | [INFO] [stdout] 213 | return Ok(()); [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 213 - return Ok(()); [INFO] [stdout] 213 + Ok(()) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/ministry_directory.rs:216:13 [INFO] [stdout] | [INFO] [stdout] 216 | return self.create_with_name(name, author); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 216 - return self.create_with_name(name, author); [INFO] [stdout] 216 + self.create_with_name(name, author) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary closure used to substitute value for `Option::None` [INFO] [stdout] --> src/ministry_directory.rs:225:26 [INFO] [stdout] | [INFO] [stdout] 225 | println!("✅ {}", content_path.to_str().unwrap_or_else(|| "")); [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] help: use `unwrap_or` instead [INFO] [stdout] | [INFO] [stdout] 225 - println!("✅ {}", content_path.to_str().unwrap_or_else(|| "")); [INFO] [stdout] 225 + println!("✅ {}", content_path.to_str().unwrap_or("")); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary closure used to substitute value for `Option::None` [INFO] [stdout] --> src/ministry_directory.rs:232:26 [INFO] [stdout] | [INFO] [stdout] 232 | println!("✅ {}", assets_path.to_str().unwrap_or_else(|| "")); [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] help: use `unwrap_or` instead [INFO] [stdout] | [INFO] [stdout] 232 - println!("✅ {}", assets_path.to_str().unwrap_or_else(|| "")); [INFO] [stdout] 232 + println!("✅ {}", assets_path.to_str().unwrap_or("")); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary closure used to substitute value for `Option::None` [INFO] [stdout] --> src/ministry_directory.rs:242:26 [INFO] [stdout] | [INFO] [stdout] 242 | println!("✅ {}", bee_path.to_str().unwrap_or_else(|| "")); [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] help: use `unwrap_or` instead [INFO] [stdout] | [INFO] [stdout] 242 - println!("✅ {}", bee_path.to_str().unwrap_or_else(|| "")); [INFO] [stdout] 242 + println!("✅ {}", bee_path.to_str().unwrap_or("")); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary closure used to substitute value for `Option::None` [INFO] [stdout] --> src/ministry_directory.rs:248:26 [INFO] [stdout] | [INFO] [stdout] 248 | println!("✅ {}", favicon_path.to_str().unwrap_or_else(|| "")); [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] help: use `unwrap_or` instead [INFO] [stdout] | [INFO] [stdout] 248 - println!("✅ {}", favicon_path.to_str().unwrap_or_else(|| "")); [INFO] [stdout] 248 + println!("✅ {}", favicon_path.to_str().unwrap_or("")); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this boolean expression can be simplified [INFO] [stdout] --> src/ministry_directory.rs:321:67 [INFO] [stdout] | [INFO] [stdout] 321 | if !(self.directory_root.to_string().ends_with(&slug)) && !(self.directory_root.to_string() == ".") { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `(self.directory_root.to_string() != ".")` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#nonminimal_bool [INFO] [stdout] = note: `#[warn(clippy::nonminimal_bool)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this boolean expression can be simplified [INFO] [stdout] --> src/ministry_directory.rs:325:73 [INFO] [stdout] | [INFO] [stdout] 325 | if !(self.directory_root.to_string().contains(&author_slug)) && !(self.directory_root.to_string() == ".") { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `(self.directory_root.to_string() != ".")` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#nonminimal_bool [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary closure used to substitute value for `Option::None` [INFO] [stdout] --> src/ministry_directory.rs:291:20 [INFO] [stdout] | [INFO] [stdout] 291 | let name = doc["name"].as_str().unwrap_or_else(|| ""); [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] help: use `unwrap_or` instead [INFO] [stdout] | [INFO] [stdout] 291 - let name = doc["name"].as_str().unwrap_or_else(|| ""); [INFO] [stdout] 291 + let name = doc["name"].as_str().unwrap_or(""); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary closure used to substitute value for `Option::None` [INFO] [stdout] --> src/ministry_directory.rs:292:21 [INFO] [stdout] | [INFO] [stdout] 292 | let title = doc["title"].as_str().unwrap_or_else(|| ""); [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] help: use `unwrap_or` instead [INFO] [stdout] | [INFO] [stdout] 292 - let title = doc["title"].as_str().unwrap_or_else(|| ""); [INFO] [stdout] 292 + let title = doc["title"].as_str().unwrap_or(""); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: comparison to empty slice [INFO] [stdout] --> src/ministry_directory.rs:293:32 [INFO] [stdout] | [INFO] [stdout] 293 | let name_or_title = if name == "" { title } else { name }; [INFO] [stdout] | ^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `name.is_empty()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#comparison_to_empty [INFO] [stdout] = note: `#[warn(clippy::comparison_to_empty)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: comparison to empty slice [INFO] [stdout] --> src/ministry_directory.rs:294:12 [INFO] [stdout] | [INFO] [stdout] 294 | if name_or_title == "" { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `name_or_title.is_empty()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#comparison_to_empty [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary closure used to substitute value for `Option::None` [INFO] [stdout] --> src/ministry_directory.rs:297:22 [INFO] [stdout] | [INFO] [stdout] 297 | let author = doc["author"].as_str().unwrap_or_else(|| ""); [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] help: use `unwrap_or` instead [INFO] [stdout] | [INFO] [stdout] 297 - let author = doc["author"].as_str().unwrap_or_else(|| ""); [INFO] [stdout] 297 + let author = doc["author"].as_str().unwrap_or(""); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: comparison to empty slice [INFO] [stdout] --> src/ministry_directory.rs:298:12 [INFO] [stdout] | [INFO] [stdout] 298 | if author == "" { [INFO] [stdout] | ^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `author.is_empty()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#comparison_to_empty [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary closure used to substitute value for `Option::None` [INFO] [stdout] --> src/ministry_directory.rs:307:50 [INFO] [stdout] | [INFO] [stdout] 307 | println!("Image exists: {}", image_path.to_str().unwrap_or_else(|| "")); [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] help: use `unwrap_or` instead [INFO] [stdout] | [INFO] [stdout] 307 - println!("Image exists: {}", image_path.to_str().unwrap_or_else(|| "")); [INFO] [stdout] 307 + println!("Image exists: {}", image_path.to_str().unwrap_or("")); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary closure used to substitute value for `Option::None` [INFO] [stdout] --> src/ministry_directory.rs:311:58 [INFO] [stdout] | [INFO] [stdout] 311 | println!("Image does not exist: {}", image_path.to_str().unwrap_or_else(|| "")); [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] help: use `unwrap_or` instead [INFO] [stdout] | [INFO] [stdout] 311 - println!("Image does not exist: {}", image_path.to_str().unwrap_or_else(|| "")); [INFO] [stdout] 311 + println!("Image does not exist: {}", image_path.to_str().unwrap_or("")); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this creates an owned instance just for comparison [INFO] [stdout] --> src/ministry_directory.rs:321:69 [INFO] [stdout] | [INFO] [stdout] 321 | if !(self.directory_root.to_string().ends_with(&slug)) && !(self.directory_root.to_string() == ".") { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `self.directory_root` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cmp_owned [INFO] [stdout] = note: `#[warn(clippy::cmp_owned)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this creates an owned instance just for comparison [INFO] [stdout] --> src/ministry_directory.rs:325:75 [INFO] [stdout] | [INFO] [stdout] 325 | if !(self.directory_root.to_string().contains(&author_slug)) && !(self.directory_root.to_string() == ".") { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `self.directory_root` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cmp_owned [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary closure used to substitute value for `Option::None` [INFO] [stdout] --> src/ministry_directory.rs:335:21 [INFO] [stdout] | [INFO] [stdout] 335 | for item in doc["container_class"].as_vec().unwrap_or_else(|| &default_vec){ [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] help: use `unwrap_or` instead [INFO] [stdout] | [INFO] [stdout] 335 - for item in doc["container_class"].as_vec().unwrap_or_else(|| &default_vec){ [INFO] [stdout] 335 + for item in doc["container_class"].as_vec().unwrap_or(&default_vec){ [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary closure used to substitute value for `Option::None` [INFO] [stdout] --> src/ministry_directory.rs:345:21 [INFO] [stdout] | [INFO] [stdout] 345 | for item in doc["class"].as_vec().unwrap_or_else(|| &default_vec){ [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] help: use `unwrap_or` instead [INFO] [stdout] | [INFO] [stdout] 345 - for item in doc["class"].as_vec().unwrap_or_else(|| &default_vec){ [INFO] [stdout] 345 + for item in doc["class"].as_vec().unwrap_or(&default_vec){ [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary closure used to substitute value for `Option::None` [INFO] [stdout] --> src/ministry_directory.rs:385:29 [INFO] [stdout] | [INFO] [stdout] 385 | let mut card_type = doc["type"].as_str().unwrap_or_else(|| "").to_string(); [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] help: use `unwrap_or` instead [INFO] [stdout] | [INFO] [stdout] 385 - let mut card_type = doc["type"].as_str().unwrap_or_else(|| "").to_string(); [INFO] [stdout] 385 + let mut card_type = doc["type"].as_str().unwrap_or("").to_string(); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: comparison to empty slice [INFO] [stdout] --> src/ministry_directory.rs:389:12 [INFO] [stdout] | [INFO] [stdout] 389 | if card_type == "" { [INFO] [stdout] | ^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `card_type.is_empty()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#comparison_to_empty [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` has identical blocks [INFO] [stdout] --> src/ministry_directory.rs:406:52 [INFO] [stdout] | [INFO] [stdout] 406 | else if doc["stack"].as_vec().is_some(){ [INFO] [stdout] | ____________________________________________________^ [INFO] [stdout] 407 | | card_type = "stack".to_string(); [INFO] [stdout] 408 | | } [INFO] [stdout] | |_____________^ [INFO] [stdout] | [INFO] [stdout] note: same as this [INFO] [stdout] --> src/ministry_directory.rs:409:52 [INFO] [stdout] | [INFO] [stdout] 409 | else if doc["pages"].as_vec().is_some(){ [INFO] [stdout] | ____________________________________________________^ [INFO] [stdout] 410 | | card_type = "stack".to_string(); [INFO] [stdout] 411 | | } [INFO] [stdout] | |_____________^ [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#if_same_then_else [INFO] [stdout] = note: `#[warn(clippy::if_same_then_else)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `map(f)` on an `Option` value where `f` is a closure that returns the unit type `()` [INFO] [stdout] --> src/ministry_directory.rs:423:13 [INFO] [stdout] | [INFO] [stdout] 423 | / doc["pages"].as_vec().map(|list| { [INFO] [stdout] 424 | | for item in list [INFO] [stdout] 425 | | { [INFO] [stdout] 426 | | let counter_string = counter.to_string(); [INFO] [stdout] ... | [INFO] [stdout] 433 | | }); [INFO] [stdout] | |______________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#option_map_unit_fn [INFO] [stdout] = note: `#[warn(clippy::option_map_unit_fn)]` on by default [INFO] [stdout] help: use `if let` instead [INFO] [stdout] | [INFO] [stdout] 423 - doc["pages"].as_vec().map(|list| { [INFO] [stdout] 424 - for item in list [INFO] [stdout] 425 - { [INFO] [stdout] 426 - let counter_string = counter.to_string(); [INFO] [stdout] 427 - let id = format!("{}-{}", id, counter_string); [INFO] [stdout] 428 - stack.push( [INFO] [stdout] 429 - self.parse_card(&item, id) [INFO] [stdout] 430 - ); [INFO] [stdout] 431 - counter += 1; [INFO] [stdout] 432 - } [INFO] [stdout] 433 - }); [INFO] [stdout] 423 + if let Some(list) = doc["pages"].as_vec() { ... } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/ministry_directory.rs:429:41 [INFO] [stdout] | [INFO] [stdout] 429 | self.parse_card(&item, id) [INFO] [stdout] | ^^^^^ help: change this to: `item` [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: called `map(f)` on an `Option` value where `f` is a closure that returns the unit type `()` [INFO] [stdout] --> src/ministry_directory.rs:434:13 [INFO] [stdout] | [INFO] [stdout] 434 | / doc["stack"].as_vec().map(|list| { [INFO] [stdout] 435 | | for item in list [INFO] [stdout] 436 | | { [INFO] [stdout] 437 | | let counter_string = counter.to_string(); [INFO] [stdout] ... | [INFO] [stdout] 444 | | }); [INFO] [stdout] | |______________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#option_map_unit_fn [INFO] [stdout] help: use `if let` instead [INFO] [stdout] | [INFO] [stdout] 434 - doc["stack"].as_vec().map(|list| { [INFO] [stdout] 435 - for item in list [INFO] [stdout] 436 - { [INFO] [stdout] 437 - let counter_string = counter.to_string(); [INFO] [stdout] 438 - let id = format!("{}-{}", id, counter_string); [INFO] [stdout] 439 - stack.push( [INFO] [stdout] 440 - self.parse_card(&item, id) [INFO] [stdout] 441 - ); [INFO] [stdout] 442 - counter += 1; [INFO] [stdout] 443 - } [INFO] [stdout] 444 - }); [INFO] [stdout] 434 + if let Some(list) = doc["stack"].as_vec() { ... } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/ministry_directory.rs:440:41 [INFO] [stdout] | [INFO] [stdout] 440 | self.parse_card(&item, id) [INFO] [stdout] | ^^^^^ help: change this to: `item` [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: unnecessary closure used to substitute value for `Option::None` [INFO] [stdout] --> src/ministry_directory.rs:449:29 [INFO] [stdout] | [INFO] [stdout] 449 | let directory = doc["pngs"].as_str().unwrap_or_else(|| ""); [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] help: use `unwrap_or` instead [INFO] [stdout] | [INFO] [stdout] 449 - let directory = doc["pngs"].as_str().unwrap_or_else(|| ""); [INFO] [stdout] 449 + let directory = doc["pngs"].as_str().unwrap_or(""); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: comparison to empty slice [INFO] [stdout] --> src/ministry_directory.rs:450:16 [INFO] [stdout] | [INFO] [stdout] 450 | if directory != "" { [INFO] [stdout] | ^^^^^^^^^^^^^^^ help: using `!is_empty` is clearer and more explicit: `!directory.is_empty()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#comparison_to_empty [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary closure used to substitute value for `Option::None` [INFO] [stdout] --> src/ministry_directory.rs:456:32 [INFO] [stdout] | [INFO] [stdout] 456 | let path = path.to_str().unwrap_or_else(|| ""); [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] help: use `unwrap_or` instead [INFO] [stdout] | [INFO] [stdout] 456 - let path = path.to_str().unwrap_or_else(|| ""); [INFO] [stdout] 456 + let path = path.to_str().unwrap_or(""); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary closure used to substitute value for `Option::None` [INFO] [stdout] --> src/ministry_directory.rs:473:21 [INFO] [stdout] | [INFO] [stdout] 473 | for item in doc["class"].as_vec().unwrap_or_else(|| &default_vec){ [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] help: use `unwrap_or` instead [INFO] [stdout] | [INFO] [stdout] 473 - for item in doc["class"].as_vec().unwrap_or_else(|| &default_vec){ [INFO] [stdout] 473 + for item in doc["class"].as_vec().unwrap_or(&default_vec){ [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary closure used to substitute value for `Option::None` [INFO] [stdout] --> src/ministry_directory.rs:483:21 [INFO] [stdout] | [INFO] [stdout] 483 | for item in doc["container_class"].as_vec().unwrap_or_else(|| &default_vec){ [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] help: use `unwrap_or` instead [INFO] [stdout] | [INFO] [stdout] 483 - for item in doc["container_class"].as_vec().unwrap_or_else(|| &default_vec){ [INFO] [stdout] 483 + for item in doc["container_class"].as_vec().unwrap_or(&default_vec){ [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary closure used to substitute value for `Option::None` [INFO] [stdout] --> src/ministry_directory.rs:493:21 [INFO] [stdout] | [INFO] [stdout] 493 | for item in doc["document_class"].as_vec().unwrap_or_else(|| &default_vec){ [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] help: use `unwrap_or` instead [INFO] [stdout] | [INFO] [stdout] 493 - for item in doc["document_class"].as_vec().unwrap_or_else(|| &default_vec){ [INFO] [stdout] 493 + for item in doc["document_class"].as_vec().unwrap_or(&default_vec){ [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded late initialization [INFO] [stdout] --> src/ministry_directory.rs:499:9 [INFO] [stdout] | [INFO] [stdout] 499 | let dolly_in: Option; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_late_init [INFO] [stdout] = note: `#[warn(clippy::needless_late_init)]` on by default [INFO] [stdout] help: move the declaration `dolly_in` here and remove the assignments from the branches [INFO] [stdout] | [INFO] [stdout] 499 ~ [INFO] [stdout] 500 ~ let dolly_in: Option = if doc["dolly_in"].as_i64().is_some(){ [INFO] [stdout] 501 ~ Some(doc["dolly_in"].as_i64().unwrap() as f64) [INFO] [stdout] 502 | } [INFO] [stdout] 503 | else{ [INFO] [stdout] 504 ~ doc["dolly_in"].as_f64() [INFO] [stdout] 505 ~ }; [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded late initialization [INFO] [stdout] --> src/ministry_directory.rs:506:9 [INFO] [stdout] | [INFO] [stdout] 506 | let dolly_out: Option; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_late_init [INFO] [stdout] help: move the declaration `dolly_out` here and remove the assignments from the branches [INFO] [stdout] | [INFO] [stdout] 506 ~ [INFO] [stdout] 507 ~ let dolly_out: Option = if doc["dolly_out"].as_i64().is_some(){ [INFO] [stdout] 508 ~ Some(doc["dolly_out"].as_i64().unwrap() as f64) [INFO] [stdout] 509 | } [INFO] [stdout] 510 | else{ [INFO] [stdout] 511 ~ doc["dolly_out"].as_f64() [INFO] [stdout] 512 ~ }; [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded late initialization [INFO] [stdout] --> src/ministry_directory.rs:513:9 [INFO] [stdout] | [INFO] [stdout] 513 | let scale: Option; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_late_init [INFO] [stdout] help: move the declaration `scale` here and remove the assignments from the branches [INFO] [stdout] | [INFO] [stdout] 513 ~ [INFO] [stdout] 514 ~ let scale: Option = if doc["scale"].as_i64().is_some(){ [INFO] [stdout] 515 ~ Some(doc["scale"].as_i64().unwrap() as f64) [INFO] [stdout] 516 | } [INFO] [stdout] 517 | else{ [INFO] [stdout] 518 ~ doc["scale"].as_f64() [INFO] [stdout] 519 ~ }; [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the variable `counter` is used as a loop counter [INFO] [stdout] --> src/ministry_directory.rs:593:9 [INFO] [stdout] | [INFO] [stdout] 593 | for item in list { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ help: consider using: `for (counter, item) in list.iter().enumerate()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_counter_loop [INFO] [stdout] = note: `#[warn(clippy::explicit_counter_loop)]` 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/ministry_directory.rs:596:33 [INFO] [stdout] | [INFO] [stdout] 596 | self.parse_card(&item, counter_string) [INFO] [stdout] | ^^^^^ help: change this to: `item` [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: unnecessary closure used to substitute value for `Option::None` [INFO] [stdout] --> src/ministry_directory.rs:610:24 [INFO] [stdout] | [INFO] [stdout] 610 | let filename = asset_path.file_name().unwrap_or_else(|| std::ffi::OsStr::new("")).to_str().unwrap_or_else(|| ""); [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] help: use `unwrap_or` instead [INFO] [stdout] | [INFO] [stdout] 610 - let filename = asset_path.file_name().unwrap_or_else(|| std::ffi::OsStr::new("")).to_str().unwrap_or_else(|| ""); [INFO] [stdout] 610 + let filename = asset_path.file_name().unwrap_or_else(|| std::ffi::OsStr::new("")).to_str().unwrap_or(""); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the borrowed expression implements the required traits [INFO] [stdout] --> src/ministry_directory.rs:631:56 [INFO] [stdout] | [INFO] [stdout] 631 | let asset_modified = std::fs::metadata(&asset_path)?.modified()?; [INFO] [stdout] | ^^^^^^^^^^^ help: change this to: `asset_path` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrows_for_generic_args [INFO] [stdout] = note: `#[warn(clippy::needless_borrows_for_generic_args)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `unwrap` on `cached_metadata` after checking its variant with `is_some` [INFO] [stdout] --> src/ministry_directory_cache.rs:48:35 [INFO] [stdout] | [INFO] [stdout] 45 | if cached_metadata.is_some() { [INFO] [stdout] | ---------------------------- help: try: `if let Some() = cached_metadata` [INFO] [stdout] ... [INFO] [stdout] 48 | let cached_metadata = cached_metadata.unwrap(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_unwrap [INFO] [stdout] = note: `#[warn(clippy::unnecessary_unwrap)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `unwrap` on `cached_deck` after checking its variant with `is_some` [INFO] [stdout] --> src/ministry_directory_cache.rs:83:31 [INFO] [stdout] | [INFO] [stdout] 80 | if cached_deck.is_some() { [INFO] [stdout] | ------------------------ help: try: `if let Some() = cached_deck` [INFO] [stdout] ... [INFO] [stdout] 83 | let cached_deck = cached_deck.unwrap(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_unwrap [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: named constant with interior mutability [INFO] [stdout] --> src/file_modifiers.rs:39:7 [INFO] [stdout] | [INFO] [stdout] 39 | const COLOR_MAP: LazyCell> = LazyCell::new(|| generate_color_map()); [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: did you mean to make this a `thread_local!` item [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#declare_interior_mutable_const [INFO] [stdout] = note: `#[warn(clippy::declare_interior_mutable_const)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant closure [INFO] [stdout] --> src/file_modifiers.rs:39:80 [INFO] [stdout] | [INFO] [stdout] 39 | const COLOR_MAP: LazyCell> = LazyCell::new(|| generate_color_map()); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ help: replace the closure with the function itself: `generate_color_map` [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: implementation of inherent method `to_string(&self) -> String` for type `file_modifiers::FileDirectives` [INFO] [stdout] --> src/file_modifiers.rs:43:5 [INFO] [stdout] | [INFO] [stdout] 43 | / pub fn to_string(&self) -> String{ [INFO] [stdout] 44 | | let mut directives = vec![]; [INFO] [stdout] 45 | | // unmodified is not included because... if the file isn't modified, we don't need to save anything [INFO] [stdout] 46 | | if self.grayscale.unwrap_or(false){ [INFO] [stdout] ... | [INFO] [stdout] 76 | | directives.join("_") [INFO] [stdout] 77 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] | [INFO] [stdout] = help: implement trait `Display` for type `file_modifiers::FileDirectives` instead [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#inherent_to_string [INFO] [stdout] = note: `#[warn(clippy::inherent_to_string)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this block may be rewritten with the `?` operator [INFO] [stdout] --> src/file_modifiers.rs:80:9 [INFO] [stdout] | [INFO] [stdout] 80 | / if self.color.is_none(){ [INFO] [stdout] 81 | | return None; [INFO] [stdout] 82 | | } [INFO] [stdout] | |_________^ help: replace it with: `self.color.as_ref()?;` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#question_mark [INFO] [stdout] = note: `#[warn(clippy::question_mark)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: borrow of a named constant with interior mutability [INFO] [stdout] --> src/file_modifiers.rs:84:30 [INFO] [stdout] | [INFO] [stdout] 84 | if let Some(color) = COLOR_MAP.get(color.replace("_", " ").to_lowercase().as_str()){ [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: there is a compiler inserted call to `Deref::deref` here [INFO] [stdout] = help: this lint can be silenced by assigning the value to a local variable before borrowing [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#borrow_interior_mutable_const [INFO] [stdout] = note: `#[warn(clippy::borrow_interior_mutable_const)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary closure used to substitute value for `Option::None` [INFO] [stdout] --> src/main.rs:62:64 [INFO] [stdout] | [INFO] [stdout] 62 | let directory = ministry_directory::MinistryDirectory::new(directory_root.to_str().unwrap_or_else(|| ".").to_string()); [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] help: use `unwrap_or` instead [INFO] [stdout] | [INFO] [stdout] 62 - let directory = ministry_directory::MinistryDirectory::new(directory_root.to_str().unwrap_or_else(|| ".").to_string()); [INFO] [stdout] 62 + let directory = ministry_directory::MinistryDirectory::new(directory_root.to_str().unwrap_or(".").to_string()); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you should consider adding a `Default` implementation for `Services` [INFO] [stdout] --> src/main.rs:172:5 [INFO] [stdout] | [INFO] [stdout] 172 | / pub fn new() -> Services{ [INFO] [stdout] 173 | | Services{ [INFO] [stdout] 174 | | cache: MinistryDirectoryCache::new(), [INFO] [stdout] 175 | | } [INFO] [stdout] 176 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default [INFO] [stdout] = note: `#[warn(clippy::new_without_default)]` on by default [INFO] [stdout] help: try adding this [INFO] [stdout] | [INFO] [stdout] 171 + impl Default for Services { [INFO] [stdout] 172 + fn default() -> Self { [INFO] [stdout] 173 + Self::new() [INFO] [stdout] 174 + } [INFO] [stdout] 175 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/main.rs:221:5 [INFO] [stdout] | [INFO] [stdout] 221 | / return Ok(format!(indoc!(r#" [INFO] [stdout] 222 | | [INFO] [stdout] 223 | | [INFO] [stdout] 224 | | [INFO] [stdout] ... | [INFO] [stdout] 260 | | [INFO] [stdout] 261 | | "#), VERSION, css_location, favicon, title, title, description, author, url, site_name, locale, image, extra_header, js_location)); [INFO] [stdout] | |______________________________________________________________________________________________________________________________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 221 ~ Ok(format!(indoc!(r#" [INFO] [stdout] 222 + [INFO] [stdout] 223 + [INFO] [stdout] 224 + [INFO] [stdout] 225 + [INFO] [stdout] 226 + [INFO] [stdout] 227 + [INFO] [stdout] 228 + [INFO] [stdout] 229 + {} [INFO] [stdout] 230 + [INFO] [stdout] 231 + [INFO] [stdout] 232 + [INFO] [stdout] 233 + [INFO] [stdout] 234 + [INFO] [stdout] 235 + [INFO] [stdout] 236 + [INFO] [stdout] 237 + [INFO] [stdout] 238 + {} [INFO] [stdout] 239 + [INFO] [stdout] 240 + [INFO] [stdout] 241 +
[INFO] [stdout] 242 + [INFO] [stdout] 243 +
[INFO] [stdout] 244 +
[INFO] [stdout] 245 +
[INFO] [stdout] 246 +
[INFO] [stdout] 247 +
[INFO] [stdout] 248 +
[INFO] [stdout] 249 +
[INFO] [stdout] 250 +
[INFO] [stdout] 251 +
[INFO] [stdout] 252 +
[INFO] [stdout] 253 +
[INFO] [stdout] 254 +
[INFO] [stdout] 255 +
[INFO] [stdout] 256 +
[INFO] [stdout] 257 +
[INFO] [stdout] 258 + [INFO] [stdout] 259 + [INFO] [stdout] 260 + [INFO] [stdout] 261 ~ "#), VERSION, css_location, favicon, title, title, description, author, url, site_name, locale, image, extra_header, js_location)) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/main.rs:265:5 [INFO] [stdout] | [INFO] [stdout] 265 | / return format!(indoc!(r#" [INFO] [stdout] 266 | | [INFO] [stdout] 267 | | [INFO] [stdout] 268 | | [INFO] [stdout] ... | [INFO] [stdout] 277 | | [INFO] [stdout] 278 | | "#), message); [INFO] [stdout] | |_________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 265 ~ format!(indoc!(r#" [INFO] [stdout] 266 + [INFO] [stdout] 267 + [INFO] [stdout] 268 + [INFO] [stdout] 269 + [INFO] [stdout] 270 + [INFO] [stdout] 271 + Error [INFO] [stdout] 272 + [INFO] [stdout] 273 + [INFO] [stdout] 274 +

Error

[INFO] [stdout] 275 +

{}

[INFO] [stdout] 276 + [INFO] [stdout] 277 + [INFO] [stdout] 278 ~ "#), message) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/ministry_directory.rs:167:13 [INFO] [stdout] | [INFO] [stdout] 167 | return Ok(()); [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] = note: `#[warn(clippy::needless_return)]` on by default [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 167 - return Ok(()); [INFO] [stdout] 167 + Ok(()) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/ministry_directory.rs:170:13 [INFO] [stdout] | [INFO] [stdout] 170 | return self.create(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 170 - return self.create(); [INFO] [stdout] 170 + self.create() [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary closure used to substitute value for `Option::None` [INFO] [stdout] --> src/ministry_directory.rs:179:26 [INFO] [stdout] | [INFO] [stdout] 179 | println!("✅ {}", content_path.to_str().unwrap_or_else(|| "")); [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] 179 - println!("✅ {}", content_path.to_str().unwrap_or_else(|| "")); [INFO] [stdout] 179 + println!("✅ {}", content_path.to_str().unwrap_or("")); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary closure used to substitute value for `Option::None` [INFO] [stdout] --> src/main.rs:302:48 [INFO] [stdout] | [INFO] [stdout] 302 | let metadata = services.cache.get_metadata(path.to_str().unwrap_or_else(|| ".")).await; [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] help: use `unwrap_or` instead [INFO] [stdout] | [INFO] [stdout] 302 - let metadata = services.cache.get_metadata(path.to_str().unwrap_or_else(|| ".")).await; [INFO] [stdout] 302 + let metadata = services.cache.get_metadata(path.to_str().unwrap_or(".")).await; [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary closure used to substitute value for `Option::None` [INFO] [stdout] --> src/ministry_directory.rs:184:26 [INFO] [stdout] | [INFO] [stdout] 184 | println!("✅ {}", assets_path.to_str().unwrap_or_else(|| "")); [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] help: use `unwrap_or` instead [INFO] [stdout] | [INFO] [stdout] 184 - println!("✅ {}", assets_path.to_str().unwrap_or_else(|| "")); [INFO] [stdout] 184 + println!("✅ {}", assets_path.to_str().unwrap_or("")); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary closure used to substitute value for `Option::None` [INFO] [stdout] --> src/ministry_directory.rs:194:26 [INFO] [stdout] | [INFO] [stdout] 194 | println!("✅ {}", bee_path.to_str().unwrap_or_else(|| "")); [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] help: use `unwrap_or` instead [INFO] [stdout] | [INFO] [stdout] 194 - println!("✅ {}", bee_path.to_str().unwrap_or_else(|| "")); [INFO] [stdout] 194 + println!("✅ {}", bee_path.to_str().unwrap_or("")); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary closure used to substitute value for `Option::None` [INFO] [stdout] --> src/ministry_directory.rs:200:26 [INFO] [stdout] | [INFO] [stdout] 200 | println!("✅ {}", favicon_path.to_str().unwrap_or_else(|| "")); [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] help: use `unwrap_or` instead [INFO] [stdout] | [INFO] [stdout] 200 - println!("✅ {}", favicon_path.to_str().unwrap_or_else(|| "")); [INFO] [stdout] 200 + println!("✅ {}", favicon_path.to_str().unwrap_or("")); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/ministry_directory.rs:213:13 [INFO] [stdout] | [INFO] [stdout] 213 | return Ok(()); [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 213 - return Ok(()); [INFO] [stdout] 213 + Ok(()) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/ministry_directory.rs:216:13 [INFO] [stdout] | [INFO] [stdout] 216 | return self.create_with_name(name, author); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 216 - return self.create_with_name(name, author); [INFO] [stdout] 216 + self.create_with_name(name, author) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary closure used to substitute value for `Option::None` [INFO] [stdout] --> src/ministry_directory.rs:225:26 [INFO] [stdout] | [INFO] [stdout] 225 | println!("✅ {}", content_path.to_str().unwrap_or_else(|| "")); [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] help: use `unwrap_or` instead [INFO] [stdout] | [INFO] [stdout] 225 - println!("✅ {}", content_path.to_str().unwrap_or_else(|| "")); [INFO] [stdout] 225 + println!("✅ {}", content_path.to_str().unwrap_or("")); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary closure used to substitute value for `Option::None` [INFO] [stdout] --> src/ministry_directory.rs:232:26 [INFO] [stdout] | [INFO] [stdout] 232 | println!("✅ {}", assets_path.to_str().unwrap_or_else(|| "")); [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] help: use `unwrap_or` instead [INFO] [stdout] | [INFO] [stdout] 232 - println!("✅ {}", assets_path.to_str().unwrap_or_else(|| "")); [INFO] [stdout] 232 + println!("✅ {}", assets_path.to_str().unwrap_or("")); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary closure used to substitute value for `Option::None` [INFO] [stdout] --> src/ministry_directory.rs:242:26 [INFO] [stdout] | [INFO] [stdout] 242 | println!("✅ {}", bee_path.to_str().unwrap_or_else(|| "")); [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] help: use `unwrap_or` instead [INFO] [stdout] | [INFO] [stdout] 242 - println!("✅ {}", bee_path.to_str().unwrap_or_else(|| "")); [INFO] [stdout] 242 + println!("✅ {}", bee_path.to_str().unwrap_or("")); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary closure used to substitute value for `Option::None` [INFO] [stdout] --> src/ministry_directory.rs:248:26 [INFO] [stdout] | [INFO] [stdout] 248 | println!("✅ {}", favicon_path.to_str().unwrap_or_else(|| "")); [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] help: use `unwrap_or` instead [INFO] [stdout] | [INFO] [stdout] 248 - println!("✅ {}", favicon_path.to_str().unwrap_or_else(|| "")); [INFO] [stdout] 248 + println!("✅ {}", favicon_path.to_str().unwrap_or("")); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this boolean expression can be simplified [INFO] [stdout] --> src/ministry_directory.rs:321:67 [INFO] [stdout] | [INFO] [stdout] 321 | if !(self.directory_root.to_string().ends_with(&slug)) && !(self.directory_root.to_string() == ".") { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `(self.directory_root.to_string() != ".")` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#nonminimal_bool [INFO] [stdout] = note: `#[warn(clippy::nonminimal_bool)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this boolean expression can be simplified [INFO] [stdout] --> src/ministry_directory.rs:325:73 [INFO] [stdout] | [INFO] [stdout] 325 | if !(self.directory_root.to_string().contains(&author_slug)) && !(self.directory_root.to_string() == ".") { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `(self.directory_root.to_string() != ".")` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#nonminimal_bool [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary closure used to substitute value for `Option::None` [INFO] [stdout] --> src/ministry_directory.rs:291:20 [INFO] [stdout] | [INFO] [stdout] 291 | let name = doc["name"].as_str().unwrap_or_else(|| ""); [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] help: use `unwrap_or` instead [INFO] [stdout] | [INFO] [stdout] 291 - let name = doc["name"].as_str().unwrap_or_else(|| ""); [INFO] [stdout] 291 + let name = doc["name"].as_str().unwrap_or(""); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary closure used to substitute value for `Option::None` [INFO] [stdout] --> src/ministry_directory.rs:292:21 [INFO] [stdout] | [INFO] [stdout] 292 | let title = doc["title"].as_str().unwrap_or_else(|| ""); [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] help: use `unwrap_or` instead [INFO] [stdout] | [INFO] [stdout] 292 - let title = doc["title"].as_str().unwrap_or_else(|| ""); [INFO] [stdout] 292 + let title = doc["title"].as_str().unwrap_or(""); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: comparison to empty slice [INFO] [stdout] --> src/ministry_directory.rs:293:32 [INFO] [stdout] | [INFO] [stdout] 293 | let name_or_title = if name == "" { title } else { name }; [INFO] [stdout] | ^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `name.is_empty()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#comparison_to_empty [INFO] [stdout] = note: `#[warn(clippy::comparison_to_empty)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: comparison to empty slice [INFO] [stdout] --> src/ministry_directory.rs:294:12 [INFO] [stdout] | [INFO] [stdout] 294 | if name_or_title == "" { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `name_or_title.is_empty()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#comparison_to_empty [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary closure used to substitute value for `Option::None` [INFO] [stdout] --> src/ministry_directory.rs:297:22 [INFO] [stdout] | [INFO] [stdout] 297 | let author = doc["author"].as_str().unwrap_or_else(|| ""); [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] help: use `unwrap_or` instead [INFO] [stdout] | [INFO] [stdout] 297 - let author = doc["author"].as_str().unwrap_or_else(|| ""); [INFO] [stdout] 297 + let author = doc["author"].as_str().unwrap_or(""); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: comparison to empty slice [INFO] [stdout] --> src/ministry_directory.rs:298:12 [INFO] [stdout] | [INFO] [stdout] 298 | if author == "" { [INFO] [stdout] | ^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `author.is_empty()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#comparison_to_empty [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary closure used to substitute value for `Option::None` [INFO] [stdout] --> src/ministry_directory.rs:307:50 [INFO] [stdout] | [INFO] [stdout] 307 | println!("Image exists: {}", image_path.to_str().unwrap_or_else(|| "")); [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] help: use `unwrap_or` instead [INFO] [stdout] | [INFO] [stdout] 307 - println!("Image exists: {}", image_path.to_str().unwrap_or_else(|| "")); [INFO] [stdout] 307 + println!("Image exists: {}", image_path.to_str().unwrap_or("")); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary closure used to substitute value for `Option::None` [INFO] [stdout] --> src/ministry_directory.rs:311:58 [INFO] [stdout] | [INFO] [stdout] 311 | println!("Image does not exist: {}", image_path.to_str().unwrap_or_else(|| "")); [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] help: use `unwrap_or` instead [INFO] [stdout] | [INFO] [stdout] 311 - println!("Image does not exist: {}", image_path.to_str().unwrap_or_else(|| "")); [INFO] [stdout] 311 + println!("Image does not exist: {}", image_path.to_str().unwrap_or("")); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this creates an owned instance just for comparison [INFO] [stdout] --> src/ministry_directory.rs:321:69 [INFO] [stdout] | [INFO] [stdout] 321 | if !(self.directory_root.to_string().ends_with(&slug)) && !(self.directory_root.to_string() == ".") { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `self.directory_root` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cmp_owned [INFO] [stdout] = note: `#[warn(clippy::cmp_owned)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this creates an owned instance just for comparison [INFO] [stdout] --> src/ministry_directory.rs:325:75 [INFO] [stdout] | [INFO] [stdout] 325 | if !(self.directory_root.to_string().contains(&author_slug)) && !(self.directory_root.to_string() == ".") { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `self.directory_root` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cmp_owned [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary closure used to substitute value for `Option::None` [INFO] [stdout] --> src/ministry_directory.rs:335:21 [INFO] [stdout] | [INFO] [stdout] 335 | for item in doc["container_class"].as_vec().unwrap_or_else(|| &default_vec){ [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] help: use `unwrap_or` instead [INFO] [stdout] | [INFO] [stdout] 335 - for item in doc["container_class"].as_vec().unwrap_or_else(|| &default_vec){ [INFO] [stdout] 335 + for item in doc["container_class"].as_vec().unwrap_or(&default_vec){ [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary closure used to substitute value for `Option::None` [INFO] [stdout] --> src/ministry_directory.rs:345:21 [INFO] [stdout] | [INFO] [stdout] 345 | for item in doc["class"].as_vec().unwrap_or_else(|| &default_vec){ [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] help: use `unwrap_or` instead [INFO] [stdout] | [INFO] [stdout] 345 - for item in doc["class"].as_vec().unwrap_or_else(|| &default_vec){ [INFO] [stdout] 345 + for item in doc["class"].as_vec().unwrap_or(&default_vec){ [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary closure used to substitute value for `Option::None` [INFO] [stdout] --> src/main.rs:343:31 [INFO] [stdout] | [INFO] [stdout] 343 | match get_index(services, path.to_str().unwrap_or_else(|| ".")).await{ [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] help: use `unwrap_or` instead [INFO] [stdout] | [INFO] [stdout] 343 - match get_index(services, path.to_str().unwrap_or_else(|| ".")).await{ [INFO] [stdout] 343 + match get_index(services, path.to_str().unwrap_or(".")).await{ [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary closure used to substitute value for `Option::None` [INFO] [stdout] --> src/ministry_directory.rs:385:29 [INFO] [stdout] | [INFO] [stdout] 385 | let mut card_type = doc["type"].as_str().unwrap_or_else(|| "").to_string(); [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] help: use `unwrap_or` instead [INFO] [stdout] | [INFO] [stdout] 385 - let mut card_type = doc["type"].as_str().unwrap_or_else(|| "").to_string(); [INFO] [stdout] 385 + let mut card_type = doc["type"].as_str().unwrap_or("").to_string(); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: comparison to empty slice [INFO] [stdout] --> src/ministry_directory.rs:389:12 [INFO] [stdout] | [INFO] [stdout] 389 | if card_type == "" { [INFO] [stdout] | ^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `card_type.is_empty()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#comparison_to_empty [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` has identical blocks [INFO] [stdout] --> src/ministry_directory.rs:406:52 [INFO] [stdout] | [INFO] [stdout] 406 | else if doc["stack"].as_vec().is_some(){ [INFO] [stdout] | ____________________________________________________^ [INFO] [stdout] 407 | | card_type = "stack".to_string(); [INFO] [stdout] 408 | | } [INFO] [stdout] | |_____________^ [INFO] [stdout] | [INFO] [stdout] note: same as this [INFO] [stdout] --> src/ministry_directory.rs:409:52 [INFO] [stdout] | [INFO] [stdout] 409 | else if doc["pages"].as_vec().is_some(){ [INFO] [stdout] | ____________________________________________________^ [INFO] [stdout] 410 | | card_type = "stack".to_string(); [INFO] [stdout] 411 | | } [INFO] [stdout] | |_____________^ [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#if_same_then_else [INFO] [stdout] = note: `#[warn(clippy::if_same_then_else)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `map(f)` on an `Option` value where `f` is a closure that returns the unit type `()` [INFO] [stdout] --> src/ministry_directory.rs:423:13 [INFO] [stdout] | [INFO] [stdout] 423 | / doc["pages"].as_vec().map(|list| { [INFO] [stdout] 424 | | for item in list [INFO] [stdout] 425 | | { [INFO] [stdout] 426 | | let counter_string = counter.to_string(); [INFO] [stdout] ... | [INFO] [stdout] 433 | | }); [INFO] [stdout] | |______________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#option_map_unit_fn [INFO] [stdout] = note: `#[warn(clippy::option_map_unit_fn)]` on by default [INFO] [stdout] help: use `if let` instead [INFO] [stdout] | [INFO] [stdout] 423 - doc["pages"].as_vec().map(|list| { [INFO] [stdout] 424 - for item in list [INFO] [stdout] 425 - { [INFO] [stdout] 426 - let counter_string = counter.to_string(); [INFO] [stdout] 427 - let id = format!("{}-{}", id, counter_string); [INFO] [stdout] 428 - stack.push( [INFO] [stdout] 429 - self.parse_card(&item, id) [INFO] [stdout] 430 - ); [INFO] [stdout] 431 - counter += 1; [INFO] [stdout] 432 - } [INFO] [stdout] 433 - }); [INFO] [stdout] 423 + if let Some(list) = doc["pages"].as_vec() { ... } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/ministry_directory.rs:429:41 [INFO] [stdout] | [INFO] [stdout] 429 | self.parse_card(&item, id) [INFO] [stdout] | ^^^^^ help: change this to: `item` [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: called `map(f)` on an `Option` value where `f` is a closure that returns the unit type `()` [INFO] [stdout] --> src/ministry_directory.rs:434:13 [INFO] [stdout] | [INFO] [stdout] 434 | / doc["stack"].as_vec().map(|list| { [INFO] [stdout] 435 | | for item in list [INFO] [stdout] 436 | | { [INFO] [stdout] 437 | | let counter_string = counter.to_string(); [INFO] [stdout] ... | [INFO] [stdout] 444 | | }); [INFO] [stdout] | |______________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#option_map_unit_fn [INFO] [stdout] help: use `if let` instead [INFO] [stdout] | [INFO] [stdout] 434 - doc["stack"].as_vec().map(|list| { [INFO] [stdout] 435 - for item in list [INFO] [stdout] 436 - { [INFO] [stdout] 437 - let counter_string = counter.to_string(); [INFO] [stdout] 438 - let id = format!("{}-{}", id, counter_string); [INFO] [stdout] 439 - stack.push( [INFO] [stdout] 440 - self.parse_card(&item, id) [INFO] [stdout] 441 - ); [INFO] [stdout] 442 - counter += 1; [INFO] [stdout] 443 - } [INFO] [stdout] 444 - }); [INFO] [stdout] 434 + if let Some(list) = doc["stack"].as_vec() { ... } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/ministry_directory.rs:440:41 [INFO] [stdout] | [INFO] [stdout] 440 | self.parse_card(&item, id) [INFO] [stdout] | ^^^^^ help: change this to: `item` [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: unnecessary closure used to substitute value for `Option::None` [INFO] [stdout] --> src/ministry_directory.rs:449:29 [INFO] [stdout] | [INFO] [stdout] 449 | let directory = doc["pngs"].as_str().unwrap_or_else(|| ""); [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] help: use `unwrap_or` instead [INFO] [stdout] | [INFO] [stdout] 449 - let directory = doc["pngs"].as_str().unwrap_or_else(|| ""); [INFO] [stdout] 449 + let directory = doc["pngs"].as_str().unwrap_or(""); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: comparison to empty slice [INFO] [stdout] --> src/ministry_directory.rs:450:16 [INFO] [stdout] | [INFO] [stdout] 450 | if directory != "" { [INFO] [stdout] | ^^^^^^^^^^^^^^^ help: using `!is_empty` is clearer and more explicit: `!directory.is_empty()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#comparison_to_empty [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary closure used to substitute value for `Option::None` [INFO] [stdout] --> src/ministry_directory.rs:456:32 [INFO] [stdout] | [INFO] [stdout] 456 | let path = path.to_str().unwrap_or_else(|| ""); [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] help: use `unwrap_or` instead [INFO] [stdout] | [INFO] [stdout] 456 - let path = path.to_str().unwrap_or_else(|| ""); [INFO] [stdout] 456 + let path = path.to_str().unwrap_or(""); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary closure used to substitute value for `Option::None` [INFO] [stdout] --> src/ministry_directory.rs:473:21 [INFO] [stdout] | [INFO] [stdout] 473 | for item in doc["class"].as_vec().unwrap_or_else(|| &default_vec){ [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] help: use `unwrap_or` instead [INFO] [stdout] | [INFO] [stdout] 473 - for item in doc["class"].as_vec().unwrap_or_else(|| &default_vec){ [INFO] [stdout] 473 + for item in doc["class"].as_vec().unwrap_or(&default_vec){ [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary closure used to substitute value for `Option::None` [INFO] [stdout] --> src/ministry_directory.rs:483:21 [INFO] [stdout] | [INFO] [stdout] 483 | for item in doc["container_class"].as_vec().unwrap_or_else(|| &default_vec){ [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] help: use `unwrap_or` instead [INFO] [stdout] | [INFO] [stdout] 483 - for item in doc["container_class"].as_vec().unwrap_or_else(|| &default_vec){ [INFO] [stdout] 483 + for item in doc["container_class"].as_vec().unwrap_or(&default_vec){ [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary closure used to substitute value for `Option::None` [INFO] [stdout] --> src/ministry_directory.rs:493:21 [INFO] [stdout] | [INFO] [stdout] 493 | for item in doc["document_class"].as_vec().unwrap_or_else(|| &default_vec){ [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] help: use `unwrap_or` instead [INFO] [stdout] | [INFO] [stdout] 493 - for item in doc["document_class"].as_vec().unwrap_or_else(|| &default_vec){ [INFO] [stdout] 493 + for item in doc["document_class"].as_vec().unwrap_or(&default_vec){ [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded late initialization [INFO] [stdout] --> src/ministry_directory.rs:499:9 [INFO] [stdout] | [INFO] [stdout] 499 | let dolly_in: Option; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_late_init [INFO] [stdout] = note: `#[warn(clippy::needless_late_init)]` on by default [INFO] [stdout] help: move the declaration `dolly_in` here and remove the assignments from the branches [INFO] [stdout] | [INFO] [stdout] 499 ~ [INFO] [stdout] 500 ~ let dolly_in: Option = if doc["dolly_in"].as_i64().is_some(){ [INFO] [stdout] 501 ~ Some(doc["dolly_in"].as_i64().unwrap() as f64) [INFO] [stdout] 502 | } [INFO] [stdout] 503 | else{ [INFO] [stdout] 504 ~ doc["dolly_in"].as_f64() [INFO] [stdout] 505 ~ }; [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded late initialization [INFO] [stdout] --> src/ministry_directory.rs:506:9 [INFO] [stdout] | [INFO] [stdout] 506 | let dolly_out: Option; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_late_init [INFO] [stdout] help: move the declaration `dolly_out` here and remove the assignments from the branches [INFO] [stdout] | [INFO] [stdout] 506 ~ [INFO] [stdout] 507 ~ let dolly_out: Option = if doc["dolly_out"].as_i64().is_some(){ [INFO] [stdout] 508 ~ Some(doc["dolly_out"].as_i64().unwrap() as f64) [INFO] [stdout] 509 | } [INFO] [stdout] 510 | else{ [INFO] [stdout] 511 ~ doc["dolly_out"].as_f64() [INFO] [stdout] 512 ~ }; [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded late initialization [INFO] [stdout] --> src/ministry_directory.rs:513:9 [INFO] [stdout] | [INFO] [stdout] 513 | let scale: Option; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_late_init [INFO] [stdout] help: move the declaration `scale` here and remove the assignments from the branches [INFO] [stdout] | [INFO] [stdout] 513 ~ [INFO] [stdout] 514 ~ let scale: Option = if doc["scale"].as_i64().is_some(){ [INFO] [stdout] 515 ~ Some(doc["scale"].as_i64().unwrap() as f64) [INFO] [stdout] 516 | } [INFO] [stdout] 517 | else{ [INFO] [stdout] 518 ~ doc["scale"].as_f64() [INFO] [stdout] 519 ~ }; [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the variable `counter` is used as a loop counter [INFO] [stdout] --> src/ministry_directory.rs:593:9 [INFO] [stdout] | [INFO] [stdout] 593 | for item in list { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ help: consider using: `for (counter, item) in list.iter().enumerate()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_counter_loop [INFO] [stdout] = note: `#[warn(clippy::explicit_counter_loop)]` 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/ministry_directory.rs:596:33 [INFO] [stdout] | [INFO] [stdout] 596 | self.parse_card(&item, counter_string) [INFO] [stdout] | ^^^^^ help: change this to: `item` [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: unneeded late initialization [INFO] [stdout] --> src/main.rs:365:5 [INFO] [stdout] | [INFO] [stdout] 365 | let directory_path; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_late_init [INFO] [stdout] help: move the declaration `directory_path` here and remove the assignments from the branches [INFO] [stdout] | [INFO] [stdout] 365 ~ [INFO] [stdout] 366 ~ let directory_path = if author_slug == "default" && deck_slug == "default"{ [INFO] [stdout] 367 ~ ".".to_string() [INFO] [stdout] 368 | } [INFO] [stdout] 369 | else{ [INFO] [stdout] 370 ~ path.to_str().unwrap_or_else(|| ".").to_string() [INFO] [stdout] 371 ~ }; [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary closure used to substitute value for `Option::None` [INFO] [stdout] --> src/main.rs:370:26 [INFO] [stdout] | [INFO] [stdout] 370 | directory_path = path.to_str().unwrap_or_else(|| ".").to_string(); [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] help: use `unwrap_or` instead [INFO] [stdout] | [INFO] [stdout] 370 - directory_path = path.to_str().unwrap_or_else(|| ".").to_string(); [INFO] [stdout] 370 + directory_path = path.to_str().unwrap_or(".").to_string(); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary closure used to substitute value for `Option::None` [INFO] [stdout] --> src/ministry_directory.rs:610:24 [INFO] [stdout] | [INFO] [stdout] 610 | let filename = asset_path.file_name().unwrap_or_else(|| std::ffi::OsStr::new("")).to_str().unwrap_or_else(|| ""); [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] help: use `unwrap_or` instead [INFO] [stdout] | [INFO] [stdout] 610 - let filename = asset_path.file_name().unwrap_or_else(|| std::ffi::OsStr::new("")).to_str().unwrap_or_else(|| ""); [INFO] [stdout] 610 + let filename = asset_path.file_name().unwrap_or_else(|| std::ffi::OsStr::new("")).to_str().unwrap_or(""); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded late initialization [INFO] [stdout] --> src/main.rs:380:13 [INFO] [stdout] | [INFO] [stdout] 380 | let start: usize; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_late_init [INFO] [stdout] help: move the declaration `start` here and remove the assignments from the branches [INFO] [stdout] | [INFO] [stdout] 380 ~ [INFO] [stdout] 381 ~ let start: usize = if start_id == "0" || start_id == "undefined" || start_id == "" || start_id == "null" { [INFO] [stdout] 382 ~ 0 [INFO] [stdout] 383 | } [INFO] [stdout] 384 | else{ [INFO] [stdout] 385 ~ deck.iter().position(|card| card.id == start_id).unwrap_or(0) [INFO] [stdout] 386 ~ }; [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: comparison to empty slice [INFO] [stdout] --> src/main.rs:381:62 [INFO] [stdout] | [INFO] [stdout] 381 | if start_id == "0" || start_id == "undefined" || start_id == "" || start_id == "null" { [INFO] [stdout] | ^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `start_id.is_empty()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#comparison_to_empty [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: comparison to empty slice [INFO] [stdout] --> src/main.rs:388:58 [INFO] [stdout] | [INFO] [stdout] 388 | if end_id == "0" || end_id == "undefined" || end_id == "" || end_id == "null" { [INFO] [stdout] | ^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `end_id.is_empty()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#comparison_to_empty [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the borrowed expression implements the required traits [INFO] [stdout] --> src/ministry_directory.rs:631:56 [INFO] [stdout] | [INFO] [stdout] 631 | let asset_modified = std::fs::metadata(&asset_path)?.modified()?; [INFO] [stdout] | ^^^^^^^^^^^ help: change this to: `asset_path` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrows_for_generic_args [INFO] [stdout] = note: `#[warn(clippy::needless_borrows_for_generic_args)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `unwrap` on `cached_metadata` after checking its variant with `is_some` [INFO] [stdout] --> src/ministry_directory_cache.rs:48:35 [INFO] [stdout] | [INFO] [stdout] 45 | if cached_metadata.is_some() { [INFO] [stdout] | ---------------------------- help: try: `if let Some() = cached_metadata` [INFO] [stdout] ... [INFO] [stdout] 48 | let cached_metadata = cached_metadata.unwrap(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_unwrap [INFO] [stdout] = note: `#[warn(clippy::unnecessary_unwrap)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `unwrap` on `cached_deck` after checking its variant with `is_some` [INFO] [stdout] --> src/ministry_directory_cache.rs:83:31 [INFO] [stdout] | [INFO] [stdout] 80 | if cached_deck.is_some() { [INFO] [stdout] | ------------------------ help: try: `if let Some() = cached_deck` [INFO] [stdout] ... [INFO] [stdout] 83 | let cached_deck = cached_deck.unwrap(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_unwrap [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary closure used to substitute value for `Option::None` [INFO] [stdout] --> src/main.rs:417:48 [INFO] [stdout] | [INFO] [stdout] 417 | let metadata = services.cache.get_metadata(path.to_str().unwrap_or_else(|| ".")).await; [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] help: use `unwrap_or` instead [INFO] [stdout] | [INFO] [stdout] 417 - let metadata = services.cache.get_metadata(path.to_str().unwrap_or_else(|| ".")).await; [INFO] [stdout] 417 + let metadata = services.cache.get_metadata(path.to_str().unwrap_or(".")).await; [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary closure used to substitute value for `Option::None` [INFO] [stdout] --> src/main.rs:418:40 [INFO] [stdout] | [INFO] [stdout] 418 | let deck = services.cache.get_deck(path.to_str().unwrap_or_else(|| ".")).await; [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] help: use `unwrap_or` instead [INFO] [stdout] | [INFO] [stdout] 418 - let deck = services.cache.get_deck(path.to_str().unwrap_or_else(|| ".")).await; [INFO] [stdout] 418 + let deck = services.cache.get_deck(path.to_str().unwrap_or(".")).await; [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary closure used to substitute value for `Option::None` [INFO] [stdout] --> src/main.rs:443:64 [INFO] [stdout] | [INFO] [stdout] 443 | let directory = ministry_directory::MinistryDirectory::new(path.to_str().unwrap_or_else(|| ".").to_string()); [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] help: use `unwrap_or` instead [INFO] [stdout] | [INFO] [stdout] 443 - let directory = ministry_directory::MinistryDirectory::new(path.to_str().unwrap_or_else(|| ".").to_string()); [INFO] [stdout] 443 + let directory = ministry_directory::MinistryDirectory::new(path.to_str().unwrap_or(".").to_string()); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/main.rs:445:48 [INFO] [stdout] | [INFO] [stdout] 445 | match directory.get_named_file(asset_path, &config, &file_directives).await{ [INFO] [stdout] | ^^^^^^^ help: change this to: `config` [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: named constant with interior mutability [INFO] [stdout] --> src/file_modifiers.rs:39:7 [INFO] [stdout] | [INFO] [stdout] 39 | const COLOR_MAP: LazyCell> = LazyCell::new(|| generate_color_map()); [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: did you mean to make this a `thread_local!` item [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#declare_interior_mutable_const [INFO] [stdout] = note: `#[warn(clippy::declare_interior_mutable_const)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant closure [INFO] [stdout] --> src/file_modifiers.rs:39:80 [INFO] [stdout] | [INFO] [stdout] 39 | const COLOR_MAP: LazyCell> = LazyCell::new(|| generate_color_map()); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ help: replace the closure with the function itself: `generate_color_map` [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: implementation of inherent method `to_string(&self) -> String` for type `file_modifiers::FileDirectives` [INFO] [stdout] --> src/file_modifiers.rs:43:5 [INFO] [stdout] | [INFO] [stdout] 43 | / pub fn to_string(&self) -> String{ [INFO] [stdout] 44 | | let mut directives = vec![]; [INFO] [stdout] 45 | | // unmodified is not included because... if the file isn't modified, we don't need to save anything [INFO] [stdout] 46 | | if self.grayscale.unwrap_or(false){ [INFO] [stdout] ... | [INFO] [stdout] 76 | | directives.join("_") [INFO] [stdout] 77 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] | [INFO] [stdout] = help: implement trait `Display` for type `file_modifiers::FileDirectives` instead [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#inherent_to_string [INFO] [stdout] = note: `#[warn(clippy::inherent_to_string)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this block may be rewritten with the `?` operator [INFO] [stdout] --> src/file_modifiers.rs:80:9 [INFO] [stdout] | [INFO] [stdout] 80 | / if self.color.is_none(){ [INFO] [stdout] 81 | | return None; [INFO] [stdout] 82 | | } [INFO] [stdout] | |_________^ help: replace it with: `self.color.as_ref()?;` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#question_mark [INFO] [stdout] = note: `#[warn(clippy::question_mark)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: borrow of a named constant with interior mutability [INFO] [stdout] --> src/file_modifiers.rs:84:30 [INFO] [stdout] | [INFO] [stdout] 84 | if let Some(color) = COLOR_MAP.get(color.replace("_", " ").to_lowercase().as_str()){ [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: there is a compiler inserted call to `Deref::deref` here [INFO] [stdout] = help: this lint can be silenced by assigning the value to a local variable before borrowing [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#borrow_interior_mutable_const [INFO] [stdout] = note: `#[warn(clippy::borrow_interior_mutable_const)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary closure used to substitute value for `Option::None` [INFO] [stdout] --> src/main.rs:62:64 [INFO] [stdout] | [INFO] [stdout] 62 | let directory = ministry_directory::MinistryDirectory::new(directory_root.to_str().unwrap_or_else(|| ".").to_string()); [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] help: use `unwrap_or` instead [INFO] [stdout] | [INFO] [stdout] 62 - let directory = ministry_directory::MinistryDirectory::new(directory_root.to_str().unwrap_or_else(|| ".").to_string()); [INFO] [stdout] 62 + let directory = ministry_directory::MinistryDirectory::new(directory_root.to_str().unwrap_or(".").to_string()); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded late initialization [INFO] [stdout] --> src/main.rs:456:5 [INFO] [stdout] | [INFO] [stdout] 456 | let directory: MinistryDirectory; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ created here [INFO] [stdout] 457 | directory = ministry_directory::MinistryDirectory::new(".".to_string()); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ initialised here [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_late_init [INFO] [stdout] help: move the declaration `directory` here [INFO] [stdout] | [INFO] [stdout] 456 ~ [INFO] [stdout] 457 ~ let directory: MinistryDirectory = ministry_directory::MinistryDirectory::new(".".to_string()); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/main.rs:458:48 [INFO] [stdout] | [INFO] [stdout] 458 | match directory.get_named_file(asset_path, &config, &file_directives).await{ [INFO] [stdout] | ^^^^^^^ help: change this to: `config` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you should consider adding a `Default` implementation for `Services` [INFO] [stdout] --> src/main.rs:172:5 [INFO] [stdout] | [INFO] [stdout] 172 | / pub fn new() -> Services{ [INFO] [stdout] 173 | | Services{ [INFO] [stdout] 174 | | cache: MinistryDirectoryCache::new(), [INFO] [stdout] 175 | | } [INFO] [stdout] 176 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default [INFO] [stdout] = note: `#[warn(clippy::new_without_default)]` on by default [INFO] [stdout] help: try adding this [INFO] [stdout] | [INFO] [stdout] 171 + impl Default for Services { [INFO] [stdout] 172 + fn default() -> Self { [INFO] [stdout] 173 + Self::new() [INFO] [stdout] 174 + } [INFO] [stdout] 175 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/main.rs:221:5 [INFO] [stdout] | [INFO] [stdout] 221 | / return Ok(format!(indoc!(r#" [INFO] [stdout] 222 | | [INFO] [stdout] 223 | | [INFO] [stdout] 224 | | [INFO] [stdout] ... | [INFO] [stdout] 260 | | [INFO] [stdout] 261 | | "#), VERSION, css_location, favicon, title, title, description, author, url, site_name, locale, image, extra_header, js_location)); [INFO] [stdout] | |______________________________________________________________________________________________________________________________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 221 ~ Ok(format!(indoc!(r#" [INFO] [stdout] 222 + [INFO] [stdout] 223 + [INFO] [stdout] 224 + [INFO] [stdout] 225 + [INFO] [stdout] 226 + [INFO] [stdout] 227 + [INFO] [stdout] 228 + [INFO] [stdout] 229 + {} [INFO] [stdout] 230 + [INFO] [stdout] 231 + [INFO] [stdout] 232 + [INFO] [stdout] 233 + [INFO] [stdout] 234 + [INFO] [stdout] 235 + [INFO] [stdout] 236 + [INFO] [stdout] 237 + [INFO] [stdout] 238 + {} [INFO] [stdout] 239 + [INFO] [stdout] 240 + [INFO] [stdout] 241 +
[INFO] [stdout] 242 + [INFO] [stdout] 243 +
[INFO] [stdout] 244 +
[INFO] [stdout] 245 +
[INFO] [stdout] 246 +
[INFO] [stdout] 247 +
[INFO] [stdout] 248 +
[INFO] [stdout] 249 +
[INFO] [stdout] 250 +
[INFO] [stdout] 251 +
[INFO] [stdout] 252 +
[INFO] [stdout] 253 +
[INFO] [stdout] 254 +
[INFO] [stdout] 255 +
[INFO] [stdout] 256 +
[INFO] [stdout] 257 +
[INFO] [stdout] 258 + [INFO] [stdout] 259 + [INFO] [stdout] 260 + [INFO] [stdout] 261 ~ "#), VERSION, css_location, favicon, title, title, description, author, url, site_name, locale, image, extra_header, js_location)) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/main.rs:265:5 [INFO] [stdout] | [INFO] [stdout] 265 | / return format!(indoc!(r#" [INFO] [stdout] 266 | | [INFO] [stdout] 267 | | [INFO] [stdout] 268 | | [INFO] [stdout] ... | [INFO] [stdout] 277 | | [INFO] [stdout] 278 | | "#), message); [INFO] [stdout] | |_________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 265 ~ format!(indoc!(r#" [INFO] [stdout] 266 + [INFO] [stdout] 267 + [INFO] [stdout] 268 + [INFO] [stdout] 269 + [INFO] [stdout] 270 + [INFO] [stdout] 271 + Error [INFO] [stdout] 272 + [INFO] [stdout] 273 + [INFO] [stdout] 274 +

Error

[INFO] [stdout] 275 +

{}

[INFO] [stdout] 276 + [INFO] [stdout] 277 + [INFO] [stdout] 278 ~ "#), message) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary closure used to substitute value for `Option::None` [INFO] [stdout] --> src/main.rs:302:48 [INFO] [stdout] | [INFO] [stdout] 302 | let metadata = services.cache.get_metadata(path.to_str().unwrap_or_else(|| ".")).await; [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] help: use `unwrap_or` instead [INFO] [stdout] | [INFO] [stdout] 302 - let metadata = services.cache.get_metadata(path.to_str().unwrap_or_else(|| ".")).await; [INFO] [stdout] 302 + let metadata = services.cache.get_metadata(path.to_str().unwrap_or(".")).await; [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: usage of `contains_key` followed by `insert` on a `HashMap` [INFO] [stdout] --> src/main.rs:507:25 [INFO] [stdout] | [INFO] [stdout] 507 | / if hash_map.contains_key(&author_slug){ [INFO] [stdout] 508 | | let decks: &mut Vec = hash_map.get_mut(&author_slug).unwrap(); [INFO] [stdout] 509 | | decks.push(metadata.to_summary()); [INFO] [stdout] ... | [INFO] [stdout] 512 | | hash_map.insert(author_slug, vec![metadata.to_summary()]); [INFO] [stdout] 513 | | } [INFO] [stdout] | |_________________________^ [INFO] [stdout] | [INFO] [stdout] = help: consider using the `Entry` API: https://doc.rust-lang.org/std/collections/struct.HashMap.html#entry-api [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_entry [INFO] [stdout] = note: `#[warn(clippy::map_entry)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary closure used to substitute value for `Option::None` [INFO] [stdout] --> src/main.rs:343:31 [INFO] [stdout] | [INFO] [stdout] 343 | match get_index(services, path.to_str().unwrap_or_else(|| ".")).await{ [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] help: use `unwrap_or` instead [INFO] [stdout] | [INFO] [stdout] 343 - match get_index(services, path.to_str().unwrap_or_else(|| ".")).await{ [INFO] [stdout] 343 + match get_index(services, path.to_str().unwrap_or(".")).await{ [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded late initialization [INFO] [stdout] --> src/main.rs:365:5 [INFO] [stdout] | [INFO] [stdout] 365 | let directory_path; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_late_init [INFO] [stdout] help: move the declaration `directory_path` here and remove the assignments from the branches [INFO] [stdout] | [INFO] [stdout] 365 ~ [INFO] [stdout] 366 ~ let directory_path = if author_slug == "default" && deck_slug == "default"{ [INFO] [stdout] 367 ~ ".".to_string() [INFO] [stdout] 368 | } [INFO] [stdout] 369 | else{ [INFO] [stdout] 370 ~ path.to_str().unwrap_or_else(|| ".").to_string() [INFO] [stdout] 371 ~ }; [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary closure used to substitute value for `Option::None` [INFO] [stdout] --> src/main.rs:370:26 [INFO] [stdout] | [INFO] [stdout] 370 | directory_path = path.to_str().unwrap_or_else(|| ".").to_string(); [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] help: use `unwrap_or` instead [INFO] [stdout] | [INFO] [stdout] 370 - directory_path = path.to_str().unwrap_or_else(|| ".").to_string(); [INFO] [stdout] 370 + directory_path = path.to_str().unwrap_or(".").to_string(); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded late initialization [INFO] [stdout] --> src/main.rs:380:13 [INFO] [stdout] | [INFO] [stdout] 380 | let start: usize; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_late_init [INFO] [stdout] help: move the declaration `start` here and remove the assignments from the branches [INFO] [stdout] | [INFO] [stdout] 380 ~ [INFO] [stdout] 381 ~ let start: usize = if start_id == "0" || start_id == "undefined" || start_id == "" || start_id == "null" { [INFO] [stdout] 382 ~ 0 [INFO] [stdout] 383 | } [INFO] [stdout] 384 | else{ [INFO] [stdout] 385 ~ deck.iter().position(|card| card.id == start_id).unwrap_or(0) [INFO] [stdout] 386 ~ }; [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: comparison to empty slice [INFO] [stdout] --> src/main.rs:381:62 [INFO] [stdout] | [INFO] [stdout] 381 | if start_id == "0" || start_id == "undefined" || start_id == "" || start_id == "null" { [INFO] [stdout] | ^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `start_id.is_empty()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#comparison_to_empty [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: comparison to empty slice [INFO] [stdout] --> src/main.rs:388:58 [INFO] [stdout] | [INFO] [stdout] 388 | if end_id == "0" || end_id == "undefined" || end_id == "" || end_id == "null" { [INFO] [stdout] | ^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `end_id.is_empty()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#comparison_to_empty [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary closure used to substitute value for `Option::None` [INFO] [stdout] --> src/main.rs:417:48 [INFO] [stdout] | [INFO] [stdout] 417 | let metadata = services.cache.get_metadata(path.to_str().unwrap_or_else(|| ".")).await; [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] help: use `unwrap_or` instead [INFO] [stdout] | [INFO] [stdout] 417 - let metadata = services.cache.get_metadata(path.to_str().unwrap_or_else(|| ".")).await; [INFO] [stdout] 417 + let metadata = services.cache.get_metadata(path.to_str().unwrap_or(".")).await; [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary closure used to substitute value for `Option::None` [INFO] [stdout] --> src/main.rs:418:40 [INFO] [stdout] | [INFO] [stdout] 418 | let deck = services.cache.get_deck(path.to_str().unwrap_or_else(|| ".")).await; [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] help: use `unwrap_or` instead [INFO] [stdout] | [INFO] [stdout] 418 - let deck = services.cache.get_deck(path.to_str().unwrap_or_else(|| ".")).await; [INFO] [stdout] 418 + let deck = services.cache.get_deck(path.to_str().unwrap_or(".")).await; [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary closure used to substitute value for `Option::None` [INFO] [stdout] --> src/main.rs:443:64 [INFO] [stdout] | [INFO] [stdout] 443 | let directory = ministry_directory::MinistryDirectory::new(path.to_str().unwrap_or_else(|| ".").to_string()); [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] help: use `unwrap_or` instead [INFO] [stdout] | [INFO] [stdout] 443 - let directory = ministry_directory::MinistryDirectory::new(path.to_str().unwrap_or_else(|| ".").to_string()); [INFO] [stdout] 443 + let directory = ministry_directory::MinistryDirectory::new(path.to_str().unwrap_or(".").to_string()); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/main.rs:445:48 [INFO] [stdout] | [INFO] [stdout] 445 | match directory.get_named_file(asset_path, &config, &file_directives).await{ [INFO] [stdout] | ^^^^^^^ help: change this to: `config` [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: unneeded late initialization [INFO] [stdout] --> src/main.rs:456:5 [INFO] [stdout] | [INFO] [stdout] 456 | let directory: MinistryDirectory; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ created here [INFO] [stdout] 457 | directory = ministry_directory::MinistryDirectory::new(".".to_string()); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ initialised here [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_late_init [INFO] [stdout] help: move the declaration `directory` here [INFO] [stdout] | [INFO] [stdout] 456 ~ [INFO] [stdout] 457 ~ let directory: MinistryDirectory = ministry_directory::MinistryDirectory::new(".".to_string()); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/main.rs:458:48 [INFO] [stdout] | [INFO] [stdout] 458 | match directory.get_named_file(asset_path, &config, &file_directives).await{ [INFO] [stdout] | ^^^^^^^ help: change this to: `config` [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: usage of `contains_key` followed by `insert` on a `HashMap` [INFO] [stdout] --> src/main.rs:507:25 [INFO] [stdout] | [INFO] [stdout] 507 | / if hash_map.contains_key(&author_slug){ [INFO] [stdout] 508 | | let decks: &mut Vec = hash_map.get_mut(&author_slug).unwrap(); [INFO] [stdout] 509 | | decks.push(metadata.to_summary()); [INFO] [stdout] ... | [INFO] [stdout] 512 | | hash_map.insert(author_slug, vec![metadata.to_summary()]); [INFO] [stdout] 513 | | } [INFO] [stdout] | |_________________________^ [INFO] [stdout] | [INFO] [stdout] = help: consider using the `Entry` API: https://doc.rust-lang.org/std/collections/struct.HashMap.html#entry-api [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_entry [INFO] [stdout] = note: `#[warn(clippy::map_entry)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] Finished `dev` profile [unoptimized + debuginfo] target(s) in 2m 09s [INFO] running `Command { std: "docker" "inspect" "4aeca694e8163c80f76c24b7271a873e35c0bba53413eb9d127268059ebb94bd", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "4aeca694e8163c80f76c24b7271a873e35c0bba53413eb9d127268059ebb94bd", kill_on_drop: false }` [INFO] [stdout] 4aeca694e8163c80f76c24b7271a873e35c0bba53413eb9d127268059ebb94bd