[INFO] cloning repository https://github.com/lholliger/www [INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/lholliger/www" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Flholliger%2Fwww", kill_on_drop: false }` [INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Flholliger%2Fwww'... [INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }` [INFO] [stdout] 44c653eaeaeaff47e888aac8c38d0f9a89495f0a [INFO] linting lholliger/www against nightly for clippy-nonminimal_bool-denied [INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Flholliger%2Fwww" "/workspace/builds/worker-5-tc1/source", kill_on_drop: false }` [INFO] [stderr] Cloning into '/workspace/builds/worker-5-tc1/source'... [INFO] [stderr] done. [INFO] started tweaking git repo https://github.com/lholliger/www [INFO] finished tweaking git repo https://github.com/lholliger/www [INFO] tweaked toml for git repo https://github.com/lholliger/www written to /workspace/builds/worker-5-tc1/source/Cargo.toml [INFO] validating manifest of git repo https://github.com/lholliger/www on toolchain nightly [INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+nightly" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }` [INFO] crate git repo https://github.com/lholliger/www 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 quick-js v0.4.1 [INFO] [stderr] Downloaded maud_macros v0.26.0 [INFO] [stderr] Downloaded unicode-id v0.3.5 [INFO] [stderr] Downloaded copy_dir v0.1.3 [INFO] [stderr] Downloaded maud v0.26.0 [INFO] [stderr] Downloaded katex v0.4.6 [INFO] [stderr] Downloaded libquickjs-sys v0.9.0 [INFO] [stderr] Downloaded markdown v1.0.0-alpha.21 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-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] 6f9c736778dbc498a5405bdf04cab25422adafc9f899b146e1a21068e99952df [INFO] running `Command { std: "docker" "start" "-a" "6f9c736778dbc498a5405bdf04cab25422adafc9f899b146e1a21068e99952df", kill_on_drop: false }` [INFO] running `Command { std: "docker" "inspect" "6f9c736778dbc498a5405bdf04cab25422adafc9f899b146e1a21068e99952df", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "6f9c736778dbc498a5405bdf04cab25422adafc9f899b146e1a21068e99952df", kill_on_drop: false }` [INFO] [stdout] 6f9c736778dbc498a5405bdf04cab25422adafc9f899b146e1a21068e99952df [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-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] ffe68e16f1a8d36d6d817c24c12be2f9eedaf95b87aa7d0238e51fb78bba30ca [INFO] running `Command { std: "docker" "start" "-a" "ffe68e16f1a8d36d6d817c24c12be2f9eedaf95b87aa7d0238e51fb78bba30ca", kill_on_drop: false }` [INFO] [stderr] Compiling proc-macro2 v1.0.89 [INFO] [stderr] Compiling libc v0.2.162 [INFO] [stderr] Checking bytes v1.8.0 [INFO] [stderr] Compiling serde v1.0.217 [INFO] [stderr] Checking tracing-core v0.1.32 [INFO] [stderr] Compiling unicase v2.7.0 [INFO] [stderr] Checking futures-util v0.3.31 [INFO] [stderr] Compiling proc-macro-error-attr v1.0.4 [INFO] [stderr] Compiling cc v1.1.37 [INFO] [stderr] Compiling copy_dir v0.1.3 [INFO] [stderr] Compiling rustversion v1.0.18 [INFO] [stderr] Compiling proc-macro-error v1.0.4 [INFO] [stderr] Checking ahash v0.8.11 [INFO] [stderr] Checking allocator-api2 v0.2.20 [INFO] [stderr] Compiling parking_lot_core v0.8.6 [INFO] [stderr] Compiling serde_json v1.0.135 [INFO] [stderr] Compiling num-traits v0.2.19 [INFO] [stderr] Checking instant v0.1.13 [INFO] [stderr] Checking regex-syntax v0.8.5 [INFO] [stderr] Checking sync_wrapper v1.0.1 [INFO] [stderr] Compiling katex v0.4.6 [INFO] [stderr] Checking arraydeque v0.5.1 [INFO] [stderr] Checking itertools v0.10.5 [INFO] [stderr] Checking http-range-header v0.4.1 [INFO] [stderr] Checking tracing-log v0.2.0 [INFO] [stderr] Checking unicode-id v0.3.5 [INFO] [stderr] Checking matchit v0.7.3 [INFO] [stderr] Compiling holligerme v0.1.0 (/opt/rustwide/workdir) [INFO] [stderr] Checking phf v0.11.2 [INFO] [stderr] Checking markdown v1.0.0-alpha.21 [INFO] [stdout] warning: the borrowed expression implements the required traits [INFO] [stdout] --> build/main.rs:5:63 [INFO] [stdout] | [INFO] [stdout] 5 | let git_hash = String::from_utf8(Command::new("git").args(&["rev-parse", "--short", "HEAD"]).output().unwrap().stdout).unwrap(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: change this to: `["rev-parse", "--short", "HEAD"]` [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: the borrowed expression implements the required traits [INFO] [stdout] --> build/main.rs:6:63 [INFO] [stdout] | [INFO] [stdout] 6 | ....args(&["show", "--no-patch", "--format=%ct", "HEAD"]).output().unwrap().stdout).unwrap(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: change this to: `["show", "--no-patch", "--format=%ct", "HEAD"]` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrows_for_generic_args [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the borrowed expression implements the required traits [INFO] [stdout] --> build/main.rs:7:66 [INFO] [stdout] | [INFO] [stdout] 7 | ...).args(&["show", "--no-patch", "--format=%B", "HEAD"]).output().unwrap().stdout).unwrap(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: change this to: `["show", "--no-patch", "--format=%B", "HEAD"]` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrows_for_generic_args [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] Compiling mime_guess v2.0.5 [INFO] [stderr] Checking hashbrown v0.14.5 [INFO] [stderr] Checking http v1.1.0 [INFO] [stderr] Checking parking_lot_core v0.9.10 [INFO] [stderr] Checking mio v1.0.2 [INFO] [stderr] Checking signal-hook-registry v1.4.2 [INFO] [stderr] Checking socket2 v0.5.7 [INFO] [stderr] Checking fs2 v0.4.3 [INFO] [stderr] Compiling quote v1.0.37 [INFO] [stderr] Checking parking_lot v0.12.3 [INFO] [stderr] Checking parking_lot v0.11.2 [INFO] [stderr] Compiling syn v2.0.87 [INFO] [stderr] Compiling syn v1.0.109 [INFO] [stderr] Checking hashlink v0.8.4 [INFO] [stderr] Checking http-body v1.0.1 [INFO] [stderr] Checking sled v0.34.7 [INFO] [stderr] Checking yaml-rust2 v0.8.1 [INFO] [stderr] Compiling libquickjs-sys v0.9.0 [INFO] [stderr] Checking regex-automata v0.4.9 [INFO] [stderr] Checking http-body-util v0.1.2 [INFO] [stderr] Checking regex v1.11.1 [INFO] [stderr] Compiling darling_core v0.14.4 [INFO] [stderr] Compiling serde_derive v1.0.217 [INFO] [stderr] Compiling tracing-attributes v0.1.27 [INFO] [stderr] Compiling tokio-macros v2.4.0 [INFO] [stderr] Compiling async-trait v0.1.83 [INFO] [stderr] Compiling thiserror-impl v1.0.69 [INFO] [stderr] Compiling maud_macros v0.26.0 [INFO] [stderr] Compiling clap_derive v4.5.40 [INFO] [stderr] Checking tokio v1.41.1 [INFO] [stderr] Checking thiserror v1.0.69 [INFO] [stderr] Checking tracing v0.1.40 [INFO] [stderr] Checking axum-core v0.4.5 [INFO] [stderr] Checking tracing-subscriber v0.3.18 [INFO] [stderr] Compiling darling_macro v0.14.4 [INFO] [stderr] Compiling darling v0.14.4 [INFO] [stderr] Compiling derive_builder_core v0.12.0 [INFO] [stderr] Checking clap v4.5.40 [INFO] [stderr] Compiling derive_builder_macro v0.12.0 [INFO] [stderr] Checking derive_builder v0.12.0 [INFO] [stderr] Checking maud v0.26.0 [INFO] [stderr] Checking toml v0.5.11 [INFO] [stderr] Checking serde_urlencoded v0.7.1 [INFO] [stderr] Checking serde_path_to_error v0.1.16 [INFO] [stderr] Checking bincode v1.3.3 [INFO] [stderr] Checking chrono v0.4.38 [INFO] [stderr] Checking hyper v1.5.0 [INFO] [stderr] Checking tokio-util v0.7.13 [INFO] [stderr] Checking tower v0.5.1 [INFO] [stderr] Checking tower-http v0.6.2 [INFO] [stderr] Checking gray_matter v0.2.8 [INFO] [stderr] Checking hyper-util v0.1.10 [INFO] [stderr] Checking axum v0.7.7 [INFO] [stderr] Checking quick-js v0.4.1 [INFO] [stdout] warning: struct `ImageCacheElement` is never constructed [INFO] [stdout] --> src/util/build/image.rs:15:8 [INFO] [stdout] | [INFO] [stdout] 15 | struct ImageCacheElement { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this boolean expression can be simplified [INFO] [stdout] --> src/paths/root.rs:52:25 [INFO] [stdout] | [INFO] [stdout] 52 | @if !self.meta_description.is_none() { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `self.meta_description.is_some()` [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/paths/root.rs:57:25 [INFO] [stdout] | [INFO] [stdout] 57 | @if !self.meta_image.is_none() { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `self.meta_image.is_some()` [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: called `unwrap` on `self.title` after checking its variant with `is_none` [INFO] [stdout] --> src/paths/root.rs:38:9 [INFO] [stdout] | [INFO] [stdout] 38 | / html! { [INFO] [stdout] 39 | | (maud::DOCTYPE); [INFO] [stdout] 40 | | html { [INFO] [stdout] 41 | | head { [INFO] [stdout] ... | [INFO] [stdout] 45 | | @if self.title.is_none() { [INFO] [stdout] | | ----------------------- help: try: `if let Some() = &self.title` [INFO] [stdout] ... | [INFO] [stdout] 105 | | } [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 `self.title` after checking its variant with `is_none` [INFO] [stdout] --> src/paths/root.rs:50:90 [INFO] [stdout] | [INFO] [stdout] 45 | @if self.title.is_none() { [INFO] [stdout] | ----------------------- help: try: `if let Some() = &self.title` [INFO] [stdout] ... [INFO] [stdout] 50 | meta property="og:title" content=(format!("{} | Lukas Holliger", self.title.as_ref().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: called `unwrap` on `self.meta_description` after checking its variant with `is_none` [INFO] [stdout] --> src/paths/root.rs:38:9 [INFO] [stdout] | [INFO] [stdout] 38 | / html! { [INFO] [stdout] 39 | | (maud::DOCTYPE); [INFO] [stdout] 40 | | html { [INFO] [stdout] 41 | | head { [INFO] [stdout] ... | [INFO] [stdout] 52 | | @if !self.meta_description.is_none() { [INFO] [stdout] | | ------------------------------- the check is happening here [INFO] [stdout] ... | [INFO] [stdout] 105 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: try using `match` [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: called `unwrap` on `self.meta_image` after checking its variant with `is_none` [INFO] [stdout] --> src/paths/root.rs:38:9 [INFO] [stdout] | [INFO] [stdout] 38 | / html! { [INFO] [stdout] 39 | | (maud::DOCTYPE); [INFO] [stdout] 40 | | html { [INFO] [stdout] 41 | | head { [INFO] [stdout] ... | [INFO] [stdout] 57 | | @if !self.meta_image.is_none() { [INFO] [stdout] | | ------------------------- the check is happening here [INFO] [stdout] ... | [INFO] [stdout] 105 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: try using `match` [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: length comparison to zero [INFO] [stdout] --> src/paths/root.rs:131:17 [INFO] [stdout] | [INFO] [stdout] 131 | @if message.len() > 0 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ help: using `!is_empty` is clearer and more explicit: `!message.is_empty()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stdout] = note: `#[warn(clippy::len_zero)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: length comparison to zero [INFO] [stdout] --> src/paths/root.rs:145:17 [INFO] [stdout] | [INFO] [stdout] 145 | @if message.len() > 0 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ help: using `!is_empty` is clearer and more explicit: `!message.is_empty()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `ImageCacheElement` is never constructed [INFO] [stdout] --> src/util/build/image.rs:15:8 [INFO] [stdout] | [INFO] [stdout] 15 | struct ImageCacheElement { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/paths/posts.rs:58:19 [INFO] [stdout] | [INFO] [stdout] 58 | Err(_) => return Err(error_page(StatusCode::NOT_FOUND, "Post not found :(", state)) [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] 58 - Err(_) => return Err(error_page(StatusCode::NOT_FOUND, "Post not found :(", state)) [INFO] [stdout] 58 + Err(_) => Err(error_page(StatusCode::NOT_FOUND, "Post not found :(", state)) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this boolean expression can be simplified [INFO] [stdout] --> src/paths/root.rs:52:25 [INFO] [stdout] | [INFO] [stdout] 52 | @if !self.meta_description.is_none() { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `self.meta_description.is_some()` [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/paths/root.rs:57:25 [INFO] [stdout] | [INFO] [stdout] 57 | @if !self.meta_image.is_none() { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `self.meta_image.is_some()` [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: called `unwrap` on `self.title` after checking its variant with `is_none` [INFO] [stdout] --> src/paths/root.rs:38:9 [INFO] [stdout] | [INFO] [stdout] 38 | / html! { [INFO] [stdout] 39 | | (maud::DOCTYPE); [INFO] [stdout] 40 | | html { [INFO] [stdout] 41 | | head { [INFO] [stdout] ... | [INFO] [stdout] 45 | | @if self.title.is_none() { [INFO] [stdout] | | ----------------------- help: try: `if let Some() = &self.title` [INFO] [stdout] ... | [INFO] [stdout] 105 | | } [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 `self.title` after checking its variant with `is_none` [INFO] [stdout] --> src/paths/root.rs:50:90 [INFO] [stdout] | [INFO] [stdout] 45 | @if self.title.is_none() { [INFO] [stdout] | ----------------------- help: try: `if let Some() = &self.title` [INFO] [stdout] ... [INFO] [stdout] 50 | meta property="og:title" content=(format!("{} | Lukas Holliger", self.title.as_ref().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: called `unwrap` on `self.meta_description` after checking its variant with `is_none` [INFO] [stdout] --> src/paths/root.rs:38:9 [INFO] [stdout] | [INFO] [stdout] 38 | / html! { [INFO] [stdout] 39 | | (maud::DOCTYPE); [INFO] [stdout] 40 | | html { [INFO] [stdout] 41 | | head { [INFO] [stdout] ... | [INFO] [stdout] 52 | | @if !self.meta_description.is_none() { [INFO] [stdout] | | ------------------------------- the check is happening here [INFO] [stdout] ... | [INFO] [stdout] 105 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: try using `match` [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: called `unwrap` on `self.meta_image` after checking its variant with `is_none` [INFO] [stdout] --> src/paths/root.rs:38:9 [INFO] [stdout] | [INFO] [stdout] 38 | / html! { [INFO] [stdout] 39 | | (maud::DOCTYPE); [INFO] [stdout] 40 | | html { [INFO] [stdout] 41 | | head { [INFO] [stdout] ... | [INFO] [stdout] 57 | | @if !self.meta_image.is_none() { [INFO] [stdout] | | ------------------------- the check is happening here [INFO] [stdout] ... | [INFO] [stdout] 105 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: try using `match` [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: length comparison to zero [INFO] [stdout] --> src/paths/root.rs:131:17 [INFO] [stdout] | [INFO] [stdout] 131 | @if message.len() > 0 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ help: using `!is_empty` is clearer and more explicit: `!message.is_empty()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stdout] = note: `#[warn(clippy::len_zero)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: length comparison to zero [INFO] [stdout] --> src/paths/root.rs:145:17 [INFO] [stdout] | [INFO] [stdout] 145 | @if message.len() > 0 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ help: using `!is_empty` is clearer and more explicit: `!message.is_empty()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/paths/posts.rs:58:19 [INFO] [stdout] | [INFO] [stdout] 58 | Err(_) => return Err(error_page(StatusCode::NOT_FOUND, "Post not found :(", state)) [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] 58 - Err(_) => return Err(error_page(StatusCode::NOT_FOUND, "Post not found :(", state)) [INFO] [stdout] 58 + Err(_) => Err(error_page(StatusCode::NOT_FOUND, "Post not found :(", state)) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&Vec` instead of `&[_]` involves a new object where a slice will do [INFO] [stdout] --> src/util/build/posts.rs:142:30 [INFO] [stdout] | [INFO] [stdout] 142 | pub fn get_posts_html(posts: &Vec, count: usize) -> Markup { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stdout] = note: `#[warn(clippy::ptr_arg)]` on by default [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 142 - pub fn get_posts_html(posts: &Vec, count: usize) -> Markup { [INFO] [stdout] 142 + pub fn get_posts_html(posts: &[Post], count: usize) -> Markup { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `Iterator::last` on a `DoubleEndedIterator`; this will needlessly iterate the entire iterator [INFO] [stdout] --> src/util/build/image.rs:37:19 [INFO] [stdout] | [INFO] [stdout] 37 | let ext = path.split('.').last().expect("No image extension").to_string(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#double_ended_iterator_last [INFO] [stdout] = note: `#[warn(clippy::double_ended_iterator_last)]` on by default [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 37 - let ext = path.split('.').last().expect("No image extension").to_string(); [INFO] [stdout] 37 + let ext = path.split('.').next_back().expect("No image extension").to_string(); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `Iterator::last` on a `DoubleEndedIterator`; this will needlessly iterate the entire iterator [INFO] [stdout] --> src/util/build/image.rs:58:23 [INFO] [stdout] | [INFO] [stdout] 58 | let ext = path.split('.').last().expect("No image extension").to_string(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#double_ended_iterator_last [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 58 - let ext = path.split('.').last().expect("No image extension").to_string(); [INFO] [stdout] 58 + let ext = path.split('.').next_back().expect("No image extension").to_string(); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `Iterator::last` on a `DoubleEndedIterator`; this will needlessly iterate the entire iterator [INFO] [stdout] --> src/util/build/image.rs:86:19 [INFO] [stdout] | [INFO] [stdout] 86 | let ext = path.split('.').last().expect("No image extension").to_string(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#double_ended_iterator_last [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 86 - let ext = path.split('.').last().expect("No image extension").to_string(); [INFO] [stdout] 86 + let ext = path.split('.').next_back().expect("No image extension").to_string(); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/util/build/image.rs:103:9 [INFO] [stdout] | [INFO] [stdout] 103 | return true; [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] 103 - return true; [INFO] [stdout] 103 + true [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this function has too many arguments (9/7) [INFO] [stdout] --> src/util/build/image.rs:138:5 [INFO] [stdout] | [INFO] [stdout] 138 | pub fn compress_with_encoding_options(&self, image_path: &str, webp_lossless: bool, webp_quality: u32, jxl_compression: f32, webp_animation_effort: u8, webp_effort: u8, jxl_effort: u8, override_resolutions: Option>) -> Result, &str> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#too_many_arguments [INFO] [stdout] = note: `#[warn(clippy::too_many_arguments)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/util/build/image.rs:144:9 [INFO] [stdout] | [INFO] [stdout] 144 | / if image_path.starts_with("http") { [INFO] [stdout] 145 | | if working_image.file_violates_cache_rules() { // may not exist [INFO] [stdout] 146 | | debug!("{} is not already cached! Downloading...", &image_path); [INFO] [stdout] 147 | | let curl = run_command_nicely(Command::new("curl").arg(&image_path).arg("-o").arg(&working_image.path)); [INFO] [stdout] ... | [INFO] [stdout] 157 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] = note: `#[warn(clippy::collapsible_if)]` on by default [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 144 ~ if image_path.starts_with("http") [INFO] [stdout] 145 ~ && working_image.file_violates_cache_rules() { // may not exist [INFO] [stdout] 146 | debug!("{} is not already cached! Downloading...", &image_path); [INFO] [stdout] ... [INFO] [stdout] 155 | working_image.cached = false; [INFO] [stdout] 156 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the borrowed expression implements the required traits [INFO] [stdout] --> src/util/build/image.rs:147:72 [INFO] [stdout] | [INFO] [stdout] 147 | let curl = run_command_nicely(Command::new("curl").arg(&image_path).arg("-o").arg(&working_image.path)); [INFO] [stdout] | ^^^^^^^^^^^ help: change this to: `image_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: writing `&Vec` instead of `&[_]` involves a new object where a slice will do [INFO] [stdout] --> src/util/build/posts.rs:142:30 [INFO] [stdout] | [INFO] [stdout] 142 | pub fn get_posts_html(posts: &Vec, count: usize) -> Markup { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stdout] = note: `#[warn(clippy::ptr_arg)]` on by default [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 142 - pub fn get_posts_html(posts: &Vec, count: usize) -> Markup { [INFO] [stdout] 142 + pub fn get_posts_html(posts: &[Post], count: usize) -> Markup { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: equality checks against true are unnecessary [INFO] [stdout] --> src/util/build/image.rs:226:24 [INFO] [stdout] | [INFO] [stdout] 226 | if webp_conversion.animated == true { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `webp_conversion.animated` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#bool_comparison [INFO] [stdout] = note: `#[warn(clippy::bool_comparison)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `Iterator::last` on a `DoubleEndedIterator`; this will needlessly iterate the entire iterator [INFO] [stdout] --> src/util/build/image.rs:37:19 [INFO] [stdout] | [INFO] [stdout] 37 | let ext = path.split('.').last().expect("No image extension").to_string(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#double_ended_iterator_last [INFO] [stdout] = note: `#[warn(clippy::double_ended_iterator_last)]` on by default [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 37 - let ext = path.split('.').last().expect("No image extension").to_string(); [INFO] [stdout] 37 + let ext = path.split('.').next_back().expect("No image extension").to_string(); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `Iterator::last` on a `DoubleEndedIterator`; this will needlessly iterate the entire iterator [INFO] [stdout] --> src/util/build/image.rs:58:23 [INFO] [stdout] | [INFO] [stdout] 58 | let ext = path.split('.').last().expect("No image extension").to_string(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#double_ended_iterator_last [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 58 - let ext = path.split('.').last().expect("No image extension").to_string(); [INFO] [stdout] 58 + let ext = path.split('.').next_back().expect("No image extension").to_string(); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `Iterator::last` on a `DoubleEndedIterator`; this will needlessly iterate the entire iterator [INFO] [stdout] --> src/util/build/image.rs:86:19 [INFO] [stdout] | [INFO] [stdout] 86 | let ext = path.split('.').last().expect("No image extension").to_string(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#double_ended_iterator_last [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 86 - let ext = path.split('.').last().expect("No image extension").to_string(); [INFO] [stdout] 86 + let ext = path.split('.').next_back().expect("No image extension").to_string(); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/util/build/image.rs:103:9 [INFO] [stdout] | [INFO] [stdout] 103 | return true; [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] 103 - return true; [INFO] [stdout] 103 + true [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this function has too many arguments (9/7) [INFO] [stdout] --> src/util/build/image.rs:138:5 [INFO] [stdout] | [INFO] [stdout] 138 | pub fn compress_with_encoding_options(&self, image_path: &str, webp_lossless: bool, webp_quality: u32, jxl_compression: f32, webp_animation_effort: u8, webp_effort: u8, jxl_effort: u8, override_resolutions: Option>) -> Result, &str> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#too_many_arguments [INFO] [stdout] = note: `#[warn(clippy::too_many_arguments)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/util/build/image.rs:144:9 [INFO] [stdout] | [INFO] [stdout] 144 | / if image_path.starts_with("http") { [INFO] [stdout] 145 | | if working_image.file_violates_cache_rules() { // may not exist [INFO] [stdout] 146 | | debug!("{} is not already cached! Downloading...", &image_path); [INFO] [stdout] 147 | | let curl = run_command_nicely(Command::new("curl").arg(&image_path).arg("-o").arg(&working_image.path)); [INFO] [stdout] ... | [INFO] [stdout] 157 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] = note: `#[warn(clippy::collapsible_if)]` on by default [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 144 ~ if image_path.starts_with("http") [INFO] [stdout] 145 ~ && working_image.file_violates_cache_rules() { // may not exist [INFO] [stdout] 146 | debug!("{} is not already cached! Downloading...", &image_path); [INFO] [stdout] ... [INFO] [stdout] 155 | working_image.cached = false; [INFO] [stdout] 156 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the borrowed expression implements the required traits [INFO] [stdout] --> src/util/build/image.rs:147:72 [INFO] [stdout] | [INFO] [stdout] 147 | let curl = run_command_nicely(Command::new("curl").arg(&image_path).arg("-o").arg(&working_image.path)); [INFO] [stdout] | ^^^^^^^^^^^ help: change this to: `image_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: unneeded `return` statement [INFO] [stdout] --> src/util/build/image.rs:344:5 [INFO] [stdout] | [INFO] [stdout] 344 | return (images_output, image_map); [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] 344 - return (images_output, image_map); [INFO] [stdout] 344 + (images_output, image_map) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of `unwrap_or` to construct default value [INFO] [stdout] --> src/util/build/image.rs:324:10 [INFO] [stdout] | [INFO] [stdout] 324 | .unwrap_or(String::new()); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `unwrap_or_default()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unwrap_or_default [INFO] [stdout] = note: `#[warn(clippy::unwrap_or_default)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/util/build/image.rs:380:5 [INFO] [stdout] | [INFO] [stdout] 380 | return (post_images, output); [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] 380 - return (post_images, output); [INFO] [stdout] 380 + (post_images, output) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: accessing first element with `image_map.get("webp").expect("No WEBP!").get(0)` [INFO] [stdout] --> src/util/build/image.rs:368:23 [INFO] [stdout] | [INFO] [stdout] 368 | image_map.get("webp").expect("No WEBP!").get(0) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `image_map.get("webp").expect("No WEBP!").first()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_first [INFO] [stdout] = note: `#[warn(clippy::get_first)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: accessing first element with `image_map.get("webp").expect("No WEBP!").get(0)` [INFO] [stdout] --> src/util/build/image.rs:375:17 [INFO] [stdout] | [INFO] [stdout] 375 | image_map.get("webp").expect("No WEBP!").get(0) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `image_map.get("webp").expect("No WEBP!").first()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_first [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/util/build/eightyeightthirtyone.rs:33:5 [INFO] [stdout] | [INFO] [stdout] 33 | return converted_badges; [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] 33 - return converted_badges; [INFO] [stdout] 33 + converted_badges [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of `unwrap_or` to construct default value [INFO] [stdout] --> src/util/build/eightyeightthirtyone.rs:13:10 [INFO] [stdout] | [INFO] [stdout] 13 | .unwrap_or(String::new()); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `unwrap_or_default()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unwrap_or_default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: equality checks against true are unnecessary [INFO] [stdout] --> src/util/build/image.rs:226:24 [INFO] [stdout] | [INFO] [stdout] 226 | if webp_conversion.animated == true { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `webp_conversion.animated` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#bool_comparison [INFO] [stdout] = note: `#[warn(clippy::bool_comparison)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: very complex type used. Consider factoring parts into `type` definitions [INFO] [stdout] --> src/util/build/eightyeightthirtyone.rs:37:86 [INFO] [stdout] | [INFO] [stdout] 37 | pub fn generate_badge_file(converted_badges: Vec<(String, String, Vec)>) -> (String, Vec, Vec<(String, Vec)>) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#type_complexity [INFO] [stdout] = note: `#[warn(clippy::type_complexity)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/util/build/eightyeightthirtyone.rs:73:5 [INFO] [stdout] | [INFO] [stdout] 73 | return (badge_build.into_string(), badges, image_data) [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] 73 - return (badge_build.into_string(), badges, image_data) [INFO] [stdout] 73 + (badge_build.into_string(), badges, image_data) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function call inside of `expect` [INFO] [stdout] --> src/util/build/eightyeightthirtyone.rs:46:49 [INFO] [stdout] | [INFO] [stdout] 46 | let data = std::fs::read(image).expect(&format!("Failed to read image: {}", image)); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `unwrap_or_else(|_| panic!("Failed to read image: {}", image))` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#expect_fun_call [INFO] [stdout] = note: `#[warn(clippy::expect_fun_call)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you seem to use `.enumerate()` and immediately discard the index [INFO] [stdout] --> src/util/build/eightyeightthirtyone.rs:57:45 [INFO] [stdout] | [INFO] [stdout] 57 | @for (_, badge) in badges.iter().enumerate() { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_enumerate_index [INFO] [stdout] = note: `#[warn(clippy::unused_enumerate_index)]` on by default [INFO] [stdout] help: remove the `.enumerate()` call [INFO] [stdout] | [INFO] [stdout] 57 - @for (_, badge) in badges.iter().enumerate() { [INFO] [stdout] 57 + @for badge in badges.iter() { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary use of `to_string` [INFO] [stdout] --> src/util/build/mod.rs:34:31 [INFO] [stdout] | [INFO] [stdout] 34 | image_map_tree.insert(image.0.to_string(), image.1.as_bytes())?; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ help: use: `&image.0` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_to_owned [INFO] [stdout] = note: `#[warn(clippy::unnecessary_to_owned)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: consider using `sort_by_key` [INFO] [stdout] --> src/util/build/mod.rs:59:5 [INFO] [stdout] | [INFO] [stdout] 59 | post_sorted.sort_by(|a, b| b.date.cmp(&a.date)); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_sort_by [INFO] [stdout] = note: `#[warn(clippy::unnecessary_sort_by)]` on by default [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 59 - post_sorted.sort_by(|a, b| b.date.cmp(&a.date)); [INFO] [stdout] 59 + post_sorted.sort_by_key(|b| std::cmp::Reverse(b.date)); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/util/build/image.rs:344:5 [INFO] [stdout] | [INFO] [stdout] 344 | return (images_output, image_map); [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] 344 - return (images_output, image_map); [INFO] [stdout] 344 + (images_output, image_map) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of `unwrap_or` to construct default value [INFO] [stdout] --> src/util/build/image.rs:324:10 [INFO] [stdout] | [INFO] [stdout] 324 | .unwrap_or(String::new()); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `unwrap_or_default()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unwrap_or_default [INFO] [stdout] = note: `#[warn(clippy::unwrap_or_default)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/util/build/image.rs:380:5 [INFO] [stdout] | [INFO] [stdout] 380 | return (post_images, output); [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] 380 - return (post_images, output); [INFO] [stdout] 380 + (post_images, output) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: accessing first element with `image_map.get("webp").expect("No WEBP!").get(0)` [INFO] [stdout] --> src/util/build/image.rs:368:23 [INFO] [stdout] | [INFO] [stdout] 368 | image_map.get("webp").expect("No WEBP!").get(0) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `image_map.get("webp").expect("No WEBP!").first()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_first [INFO] [stdout] = note: `#[warn(clippy::get_first)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: accessing first element with `image_map.get("webp").expect("No WEBP!").get(0)` [INFO] [stdout] --> src/util/build/image.rs:375:17 [INFO] [stdout] | [INFO] [stdout] 375 | image_map.get("webp").expect("No WEBP!").get(0) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `image_map.get("webp").expect("No WEBP!").first()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_first [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: matching on `Some` with `ok()` is redundant [INFO] [stdout] --> src/main.rs:109:15 [INFO] [stdout] | [INFO] [stdout] 109 | let app = if let Some(homeserver_url) = std::env::var("MATRIX_HOMESERVER_URL").ok() { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_result_ok [INFO] [stdout] = note: `#[warn(clippy::match_result_ok)]` on by default [INFO] [stdout] help: consider matching on `Ok(homeserver_url)` and removing the call to `ok` instead [INFO] [stdout] | [INFO] [stdout] 109 - let app = if let Some(homeserver_url) = std::env::var("MATRIX_HOMESERVER_URL").ok() { [INFO] [stdout] 109 + let app = if let Ok(homeserver_url) = std::env::var("MATRIX_HOMESERVER_URL") { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/util/build/eightyeightthirtyone.rs:33:5 [INFO] [stdout] | [INFO] [stdout] 33 | return converted_badges; [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] 33 - return converted_badges; [INFO] [stdout] 33 + converted_badges [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of `unwrap_or` to construct default value [INFO] [stdout] --> src/util/build/eightyeightthirtyone.rs:13:10 [INFO] [stdout] | [INFO] [stdout] 13 | .unwrap_or(String::new()); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `unwrap_or_default()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unwrap_or_default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: very complex type used. Consider factoring parts into `type` definitions [INFO] [stdout] --> src/util/build/eightyeightthirtyone.rs:37:86 [INFO] [stdout] | [INFO] [stdout] 37 | pub fn generate_badge_file(converted_badges: Vec<(String, String, Vec)>) -> (String, Vec, Vec<(String, Vec)>) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#type_complexity [INFO] [stdout] = note: `#[warn(clippy::type_complexity)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/util/build/eightyeightthirtyone.rs:73:5 [INFO] [stdout] | [INFO] [stdout] 73 | return (badge_build.into_string(), badges, image_data) [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] 73 - return (badge_build.into_string(), badges, image_data) [INFO] [stdout] 73 + (badge_build.into_string(), badges, image_data) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function call inside of `expect` [INFO] [stdout] --> src/util/build/eightyeightthirtyone.rs:46:49 [INFO] [stdout] | [INFO] [stdout] 46 | let data = std::fs::read(image).expect(&format!("Failed to read image: {}", image)); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `unwrap_or_else(|_| panic!("Failed to read image: {}", image))` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#expect_fun_call [INFO] [stdout] = note: `#[warn(clippy::expect_fun_call)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you seem to use `.enumerate()` and immediately discard the index [INFO] [stdout] --> src/util/build/eightyeightthirtyone.rs:57:45 [INFO] [stdout] | [INFO] [stdout] 57 | @for (_, badge) in badges.iter().enumerate() { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_enumerate_index [INFO] [stdout] = note: `#[warn(clippy::unused_enumerate_index)]` on by default [INFO] [stdout] help: remove the `.enumerate()` call [INFO] [stdout] | [INFO] [stdout] 57 - @for (_, badge) in badges.iter().enumerate() { [INFO] [stdout] 57 + @for badge in badges.iter() { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary use of `to_string` [INFO] [stdout] --> src/util/build/mod.rs:34:31 [INFO] [stdout] | [INFO] [stdout] 34 | image_map_tree.insert(image.0.to_string(), image.1.as_bytes())?; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ help: use: `&image.0` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_to_owned [INFO] [stdout] = note: `#[warn(clippy::unnecessary_to_owned)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: consider using `sort_by_key` [INFO] [stdout] --> src/util/build/mod.rs:59:5 [INFO] [stdout] | [INFO] [stdout] 59 | post_sorted.sort_by(|a, b| b.date.cmp(&a.date)); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_sort_by [INFO] [stdout] = note: `#[warn(clippy::unnecessary_sort_by)]` on by default [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 59 - post_sorted.sort_by(|a, b| b.date.cmp(&a.date)); [INFO] [stdout] 59 + post_sorted.sort_by_key(|b| std::cmp::Reverse(b.date)); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: matching on `Some` with `ok()` is redundant [INFO] [stdout] --> src/main.rs:109:15 [INFO] [stdout] | [INFO] [stdout] 109 | let app = if let Some(homeserver_url) = std::env::var("MATRIX_HOMESERVER_URL").ok() { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_result_ok [INFO] [stdout] = note: `#[warn(clippy::match_result_ok)]` on by default [INFO] [stdout] help: consider matching on `Ok(homeserver_url)` and removing the call to `ok` instead [INFO] [stdout] | [INFO] [stdout] 109 - let app = if let Some(homeserver_url) = std::env::var("MATRIX_HOMESERVER_URL").ok() { [INFO] [stdout] 109 + let app = if let Ok(homeserver_url) = std::env::var("MATRIX_HOMESERVER_URL") { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] Finished `dev` profile [unoptimized + debuginfo] target(s) in 1m 14s [INFO] running `Command { std: "docker" "inspect" "ffe68e16f1a8d36d6d817c24c12be2f9eedaf95b87aa7d0238e51fb78bba30ca", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "ffe68e16f1a8d36d6d817c24c12be2f9eedaf95b87aa7d0238e51fb78bba30ca", kill_on_drop: false }` [INFO] [stdout] ffe68e16f1a8d36d6d817c24c12be2f9eedaf95b87aa7d0238e51fb78bba30ca