[INFO] cloning repository https://github.com/Jsjjjs6066/BTMD [INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/Jsjjjs6066/BTMD" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FJsjjjs6066%2FBTMD", kill_on_drop: false }` [INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FJsjjjs6066%2FBTMD'... [INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }` [INFO] [stdout] 3501a33f1a8c02be202d91368ed39b79c85f9c34 [INFO] linting Jsjjjs6066/BTMD against nightly for clippy-nonminimal_bool-denied [INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FJsjjjs6066%2FBTMD" "/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/Jsjjjs6066/BTMD [INFO] finished tweaking git repo https://github.com/Jsjjjs6066/BTMD [INFO] tweaked toml for git repo https://github.com/Jsjjjs6066/BTMD written to /workspace/builds/worker-5-tc1/source/Cargo.toml [INFO] validating manifest of git repo https://github.com/Jsjjjs6066/BTMD 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/Jsjjjs6066/BTMD 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 enum_dispatch v0.3.13 [INFO] [stderr] Downloaded figlet-rs v0.1.5 [INFO] [stderr] Downloaded serde_jsonc v1.0.108 [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] c4e87d42552cfb2aa9d4ec98f0a658aa46e2232ea6a0ff6d1ff9dbd642d58e80 [INFO] running `Command { std: "docker" "start" "-a" "c4e87d42552cfb2aa9d4ec98f0a658aa46e2232ea6a0ff6d1ff9dbd642d58e80", kill_on_drop: false }` [INFO] running `Command { std: "docker" "inspect" "c4e87d42552cfb2aa9d4ec98f0a658aa46e2232ea6a0ff6d1ff9dbd642d58e80", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "c4e87d42552cfb2aa9d4ec98f0a658aa46e2232ea6a0ff6d1ff9dbd642d58e80", kill_on_drop: false }` [INFO] [stdout] c4e87d42552cfb2aa9d4ec98f0a658aa46e2232ea6a0ff6d1ff9dbd642d58e80 [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] 27b93c73e15587e5f85cf3e152c88415485e8cfddc69435178180274e62f8e33 [INFO] running `Command { std: "docker" "start" "-a" "27b93c73e15587e5f85cf3e152c88415485e8cfddc69435178180274e62f8e33", kill_on_drop: false }` [INFO] [stderr] Compiling proc-macro2 v1.0.101 [INFO] [stderr] Compiling libc v0.2.175 [INFO] [stderr] Compiling parking_lot_core v0.9.11 [INFO] [stderr] Checking cfg-if v1.0.3 [INFO] [stderr] Checking log v0.4.28 [INFO] [stderr] Compiling rustix v1.0.8 [INFO] [stderr] Compiling serde_jsonc v1.0.108 [INFO] [stderr] Compiling litrs v0.4.2 [INFO] [stderr] Checking linux-raw-sys v0.9.4 [INFO] [stderr] Compiling lock_api v0.4.13 [INFO] [stderr] Compiling convert_case v0.7.1 [INFO] [stderr] Checking itoa v1.0.15 [INFO] [stderr] Compiling once_cell v1.21.3 [INFO] [stderr] Checking ryu v1.0.20 [INFO] [stderr] Checking figlet-rs v0.1.5 [INFO] [stderr] Compiling document-features v0.2.11 [INFO] [stderr] Compiling quote v1.0.40 [INFO] [stderr] Compiling syn v2.0.106 [INFO] [stderr] Checking signal-hook-registry v1.4.6 [INFO] [stderr] Checking mio v1.0.4 [INFO] [stderr] Checking parking_lot v0.12.4 [INFO] [stderr] Checking signal-hook v0.3.18 [INFO] [stderr] Checking signal-hook-mio v0.2.4 [INFO] [stderr] Compiling serde_derive v1.0.219 [INFO] [stderr] Compiling derive_more-impl v2.0.1 [INFO] [stderr] Compiling enum_dispatch v0.3.13 [INFO] [stderr] Compiling btmd_macro v0.1.0 (/opt/rustwide/workdir/btmd_macro) [INFO] [stderr] Checking derive_more v2.0.1 [INFO] [stderr] Checking serde v1.0.219 [INFO] [stderr] Checking bitflags v2.9.4 [INFO] [stderr] Checking crossterm v0.29.0 [INFO] [stderr] Checking btmd v0.1.0 (/opt/rustwide/workdir) [INFO] [stdout] warning: `crate` references the macro call's crate [INFO] [stdout] --> src/config/mod.rs:32:17 [INFO] [stdout] | [INFO] [stdout] 32 | use crate::config::ConfigPreset; [INFO] [stdout] | ^^^^^ help: to reference the macro definition's crate, use: `$crate` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#crate_in_macro_def [INFO] [stdout] = note: `#[warn(clippy::crate_in_macro_def)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant field names in struct initialization [INFO] [stdout] --> src/content/content_builder.rs:29:13 [INFO] [stdout] | [INFO] [stdout] 29 | rerender_needed: rerender_needed, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `rerender_needed` [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/element/mod.rs:77:13 [INFO] [stdout] | [INFO] [stdout] 77 | position: position, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ help: replace it with: `position` [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: unnecessary `>= y + 1` or `x - 1 >=` [INFO] [stdout] --> src/page.rs:54:25 [INFO] [stdout] | [INFO] [stdout] 54 | x >= start_x && x <= start_x + size_x - 1 && y >= start_y && y <= start_y + size_y - 1 [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: change it to: `x < start_x + size_x` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#int_plus_one [INFO] [stdout] = note: `#[warn(clippy::int_plus_one)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary `>= y + 1` or `x - 1 >=` [INFO] [stdout] --> src/page.rs:54:70 [INFO] [stdout] | [INFO] [stdout] 54 | x >= start_x && x <= start_x + size_x - 1 && y >= start_y && y <= start_y + size_y - 1 [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: change it to: `y < start_y + size_y` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#int_plus_one [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `crate` references the macro call's crate [INFO] [stdout] --> src/config/mod.rs:32:17 [INFO] [stdout] | [INFO] [stdout] 32 | use crate::config::ConfigPreset; [INFO] [stdout] | ^^^^^ help: to reference the macro definition's crate, use: `$crate` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#crate_in_macro_def [INFO] [stdout] = note: `#[warn(clippy::crate_in_macro_def)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant field names in struct initialization [INFO] [stdout] --> src/content/content_builder.rs:29:13 [INFO] [stdout] | [INFO] [stdout] 29 | rerender_needed: rerender_needed, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `rerender_needed` [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/element/mod.rs:77:13 [INFO] [stdout] | [INFO] [stdout] 77 | position: position, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ help: replace it with: `position` [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: unnecessary `>= y + 1` or `x - 1 >=` [INFO] [stdout] --> src/page.rs:54:25 [INFO] [stdout] | [INFO] [stdout] 54 | x >= start_x && x <= start_x + size_x - 1 && y >= start_y && y <= start_y + size_y - 1 [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: change it to: `x < start_x + size_x` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#int_plus_one [INFO] [stdout] = note: `#[warn(clippy::int_plus_one)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary `>= y + 1` or `x - 1 >=` [INFO] [stdout] --> src/page.rs:54:70 [INFO] [stdout] | [INFO] [stdout] 54 | x >= start_x && x <= start_x + size_x - 1 && y >= start_y && y <= start_y + size_y - 1 [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: change it to: `y < start_y + size_y` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#int_plus_one [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of `unwrap_or` to construct default value [INFO] [stdout] --> src/config/mod.rs:24:27 [INFO] [stdout] | [INFO] [stdout] 24 | self.map.get(key).unwrap_or(Default::default()) [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: you should consider adding a `Default` implementation for `ContentBuilder` [INFO] [stdout] --> src/content/content_builder.rs:12:5 [INFO] [stdout] | [INFO] [stdout] 12 | / pub fn new() -> Self { [INFO] [stdout] 13 | | ContentBuilder { [INFO] [stdout] 14 | | content: Vec::new(), [INFO] [stdout] 15 | | } [INFO] [stdout] 16 | | } [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] 11 + impl Default for ContentBuilder { [INFO] [stdout] 12 + fn default() -> Self { [INFO] [stdout] 13 + Self::new() [INFO] [stdout] 14 + } [INFO] [stdout] 15 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this boolean expression can be simplified [INFO] [stdout] --> src/element/border.rs:248:16 [INFO] [stdout] | [INFO] [stdout] 248 | if !(i % width as u32 == 0) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `(i % width as u32 != 0)` [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: casting to the same type is unnecessary (`u32` -> `u32`) [INFO] [stdout] --> src/element/border.rs:125:62 [INFO] [stdout] | [INFO] [stdout] 125 | ... (i + 2) % parent_size.0 as u32 + pos.0 as u32, [INFO] [stdout] | ^^^^^^^^^^^^ help: try: `pos.0` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_cast [INFO] [stdout] = note: `#[warn(clippy::unnecessary_cast)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: casting to the same type is unnecessary (`u32` -> `u32`) [INFO] [stdout] --> src/element/border.rs:135:56 [INFO] [stdout] | [INFO] [stdout] 135 | ... i % parent_size.0 as u32 + pos.0 as u32, [INFO] [stdout] | ^^^^^^^^^^^^ help: try: `pos.0` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_cast [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: deref which would be done by auto-deref [INFO] [stdout] --> src/element/border.rs:191:47 [INFO] [stdout] | [INFO] [stdout] 191 | ... temp.push_str(&*" ".repeat(width - 2 - (i as usize - 1) % width)); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `&" ".repeat(width - 2 - (i as usize - 1) % width)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_auto_deref [INFO] [stdout] = note: `#[warn(clippy::explicit_auto_deref)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: deref which would be done by auto-deref [INFO] [stdout] --> src/element/border.rs:209:43 [INFO] [stdout] | [INFO] [stdout] 209 | ... temp.push_str(&*" ".repeat(spaces)); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ help: try: `&" ".repeat(spaces)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_auto_deref [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: comparison to empty slice [INFO] [stdout] --> src/element/border.rs:216:24 [INFO] [stdout] | [INFO] [stdout] 216 | if temp != "" { [INFO] [stdout] | ^^^^^^^^^^ help: using `!is_empty` is clearer and more explicit: `!temp.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: this expression borrows a value the compiler would automatically borrow [INFO] [stdout] --> src/element/border.rs:250:21 [INFO] [stdout] | [INFO] [stdout] 250 | (&*" ".repeat(width - 1 - i as usize % width)).to_string(), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: change this to: `(*" ".repeat(width - 1 - i as usize % width))` [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: returning the result of a `let` binding from a block [INFO] [stdout] --> src/element/border.rs:306:13 [INFO] [stdout] | [INFO] [stdout] 297 | / let res = parse_vec_to_vec( [INFO] [stdout] 298 | | (*args [INFO] [stdout] 299 | | .get(0) [INFO] [stdout] 300 | | .unwrap_or(&Value::Array(vec![])) [INFO] [stdout] ... | [INFO] [stdout] 304 | | &page.registry, [INFO] [stdout] 305 | | ); [INFO] [stdout] | |______________- unnecessary `let` binding [INFO] [stdout] 306 | res [INFO] [stdout] | ^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#let_and_return [INFO] [stdout] = note: `#[warn(clippy::let_and_return)]` on by default [INFO] [stdout] help: return the expression directly [INFO] [stdout] | [INFO] [stdout] 297 ~ [INFO] [stdout] 298 ~ parse_vec_to_vec( [INFO] [stdout] 299 + (*args [INFO] [stdout] 300 + .get(0) [INFO] [stdout] 301 + .unwrap_or(&Value::Array(vec![])) [INFO] [stdout] 302 + .as_array() [INFO] [stdout] 303 + .unwrap_or(&vec![])) [INFO] [stdout] 304 + .clone(), [INFO] [stdout] 305 + &page.registry, [INFO] [stdout] 306 + ) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: accessing first element with `args.get(0)` [INFO] [stdout] --> src/element/border.rs:298:19 [INFO] [stdout] | [INFO] [stdout] 298 | (*args [INFO] [stdout] | ___________________^ [INFO] [stdout] 299 | | .get(0) [INFO] [stdout] | |___________________________^ help: try: `args.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: this boolean expression can be simplified [INFO] [stdout] --> src/element/group.rs:91:16 [INFO] [stdout] | [INFO] [stdout] 91 | if !(i % width as u32 == 0) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `(i % width as u32 != 0)` [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: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/element/group.rs:50:21 [INFO] [stdout] | [INFO] [stdout] 50 | &(parent_size), [INFO] [stdout] | ^^^^^^^^^^^^^^ help: change this to: `(parent_size)` [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: casting to the same type is unnecessary (`u32` -> `u32`) [INFO] [stdout] --> src/element/group.rs:53:25 [INFO] [stdout] | [INFO] [stdout] 53 | i as u32 % parent_size.0 as u32 + pos.0, [INFO] [stdout] | ^^^^^^^^ help: try: `i` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_cast [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual implementation of `.is_multiple_of()` [INFO] [stdout] --> src/element/group.rs:61:32 [INFO] [stdout] | [INFO] [stdout] 61 | ... if i % parent_size.0 as u32 != 0 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace with: `!i.is_multiple_of(parent_size.0 as u32)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_is_multiple_of [INFO] [stdout] = note: `#[warn(clippy::manual_is_multiple_of)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: deref which would be done by auto-deref [INFO] [stdout] --> src/element/group.rs:62:47 [INFO] [stdout] | [INFO] [stdout] 62 | ... temp.push_str(&*" ".repeat( [INFO] [stdout] | _____________________________________^ [INFO] [stdout] 63 | | ... (width as u32 - (i) % width as u32).try_into().unwrap(), [INFO] [stdout] 64 | | ... )); [INFO] [stdout] | |_______________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_auto_deref [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 62 ~ temp.push_str(&" ".repeat( [INFO] [stdout] 63 + (width as u32 - (i) % width as u32).try_into().unwrap(), [INFO] [stdout] 64 ~ )); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual implementation of `.is_multiple_of()` [INFO] [stdout] --> src/element/group.rs:74:35 [INFO] [stdout] | [INFO] [stdout] 74 | } else if i % parent_size.0 as u32 == 0 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace with: `i.is_multiple_of(parent_size.0 as u32)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_is_multiple_of [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: deref which would be done by auto-deref [INFO] [stdout] --> src/element/group.rs:80:43 [INFO] [stdout] | [INFO] [stdout] 80 | ... temp.push_str(&*" ".repeat(spaces)); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ help: try: `&" ".repeat(spaces)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_auto_deref [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual implementation of `.is_multiple_of()` [INFO] [stdout] --> src/element/group.rs:91:17 [INFO] [stdout] | [INFO] [stdout] 91 | if !(i % width as u32 == 0) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ help: replace with: `i.is_multiple_of(width as u32)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_is_multiple_of [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression borrows a value the compiler would automatically borrow [INFO] [stdout] --> src/element/group.rs:93:21 [INFO] [stdout] | [INFO] [stdout] 93 | (&*" ".repeat((width as u32 - i % width as u32) as usize)).to_string(), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: change this to: `(*" ".repeat((width as u32 - i % width as u32) as usize))` [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: returning the result of a `let` binding from a block [INFO] [stdout] --> src/element/group.rs:114:13 [INFO] [stdout] | [INFO] [stdout] 105 | / let res = parse_vec_to_vec( [INFO] [stdout] 106 | | (*args [INFO] [stdout] 107 | | .get(0) [INFO] [stdout] 108 | | .unwrap_or(&Value::Array(vec![])) [INFO] [stdout] ... | [INFO] [stdout] 112 | | &page.registry, [INFO] [stdout] 113 | | ); [INFO] [stdout] | |______________- unnecessary `let` binding [INFO] [stdout] 114 | res [INFO] [stdout] | ^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#let_and_return [INFO] [stdout] help: return the expression directly [INFO] [stdout] | [INFO] [stdout] 105 ~ [INFO] [stdout] 106 ~ parse_vec_to_vec( [INFO] [stdout] 107 + (*args [INFO] [stdout] 108 + .get(0) [INFO] [stdout] 109 + .unwrap_or(&Value::Array(vec![])) [INFO] [stdout] 110 + .as_array() [INFO] [stdout] 111 + .unwrap_or(&vec![])) [INFO] [stdout] 112 + .clone(), [INFO] [stdout] 113 + &page.registry, [INFO] [stdout] 114 + ) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: accessing first element with `args.get(0)` [INFO] [stdout] --> src/element/group.rs:106:19 [INFO] [stdout] | [INFO] [stdout] 106 | (*args [INFO] [stdout] | ___________________^ [INFO] [stdout] 107 | | .get(0) [INFO] [stdout] | |___________________________^ help: try: `args.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: called `.iter().nth()` on a `Vec` [INFO] [stdout] --> src/element/heading.rs:29:50 [INFO] [stdout] | [INFO] [stdout] 29 | ... let config: ConfigType = unwrap_val!(args_parsed.iter().nth(1).unwrap_or(arg_parser.preset.vec.iter().nth(1).unwrap()), Config); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#iter_nth [INFO] [stdout] = note: `#[warn(clippy::iter_nth)]` on by default [INFO] [stdout] help: `get` is equivalent but more concise [INFO] [stdout] | [INFO] [stdout] 29 - let config: ConfigType = unwrap_val!(args_parsed.iter().nth(1).unwrap_or(arg_parser.preset.vec.iter().nth(1).unwrap()), Config); [INFO] [stdout] 29 + let config: ConfigType = unwrap_val!(args_parsed.get(1).unwrap_or(arg_parser.preset.vec.iter().nth(1).unwrap()), Config); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `.iter().nth()` on a `Vec` [INFO] [stdout] --> src/element/heading.rs:29:86 [INFO] [stdout] | [INFO] [stdout] 29 | ... let config: ConfigType = unwrap_val!(args_parsed.iter().nth(1).unwrap_or(arg_parser.preset.vec.iter().nth(1).unwrap()), Config); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#iter_nth [INFO] [stdout] help: `get` is equivalent but more concise [INFO] [stdout] | [INFO] [stdout] 29 - let config: ConfigType = unwrap_val!(args_parsed.iter().nth(1).unwrap_or(arg_parser.preset.vec.iter().nth(1).unwrap()), Config); [INFO] [stdout] 29 + let config: ConfigType = unwrap_val!(args_parsed.iter().nth(1).unwrap_or(arg_parser.preset.vec.get(1).unwrap()), Config); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of `unwrap_or` to construct default value [INFO] [stdout] --> src/config/mod.rs:24:27 [INFO] [stdout] | [INFO] [stdout] 24 | self.map.get(key).unwrap_or(Default::default()) [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: you should consider adding a `Default` implementation for `ContentBuilder` [INFO] [stdout] --> src/content/content_builder.rs:12:5 [INFO] [stdout] | [INFO] [stdout] 12 | / pub fn new() -> Self { [INFO] [stdout] 13 | | ContentBuilder { [INFO] [stdout] 14 | | content: Vec::new(), [INFO] [stdout] 15 | | } [INFO] [stdout] 16 | | } [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] 11 + impl Default for ContentBuilder { [INFO] [stdout] 12 + fn default() -> Self { [INFO] [stdout] 13 + Self::new() [INFO] [stdout] 14 + } [INFO] [stdout] 15 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: very complex type used. Consider factoring parts into `type` definitions [INFO] [stdout] --> src/element/mod.rs:34:18 [INFO] [stdout] | [INFO] [stdout] 34 | render_func: fn( [INFO] [stdout] | __________________^ [INFO] [stdout] 35 | | holder: &mut Element, [INFO] [stdout] 36 | | page: &mut Page, [INFO] [stdout] 37 | | args: Vec, [INFO] [stdout] ... | [INFO] [stdout] 40 | | pos: (u32, u32), [INFO] [stdout] 41 | | ) -> Content, [INFO] [stdout] | |________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#type_complexity [INFO] [stdout] = note: `#[warn(clippy::type_complexity)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: very complex type used. Consider factoring parts into `type` definitions [INFO] [stdout] --> src/element/mod.rs:44:28 [INFO] [stdout] | [INFO] [stdout] 44 | prepare_children_func: fn(&Vec, &Page) -> 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] [INFO] [stdout] [INFO] [stdout] warning: very complex type used. Consider factoring parts into `type` definitions [INFO] [stdout] --> src/element/mod.rs:56:22 [INFO] [stdout] | [INFO] [stdout] 56 | render_func: fn( [INFO] [stdout] | ______________________^ [INFO] [stdout] 57 | | holder: &mut Element, [INFO] [stdout] 58 | | page: &mut Page, [INFO] [stdout] 59 | | args: Vec, [INFO] [stdout] ... | [INFO] [stdout] 62 | | pos: (u32, u32), [INFO] [stdout] 63 | | ) -> Content, [INFO] [stdout] | |____________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#type_complexity [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: very complex type used. Consider factoring parts into `type` definitions [INFO] [stdout] --> src/element/mod.rs:65:36 [INFO] [stdout] | [INFO] [stdout] 65 | prepare_children_function: fn(&Vec, &Page) -> 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] [INFO] [stdout] [INFO] [stdout] warning: very complex type used. Consider factoring parts into `type` definitions [INFO] [stdout] --> src/element/mod.rs:84:22 [INFO] [stdout] | [INFO] [stdout] 84 | render_func: fn( [INFO] [stdout] | ______________________^ [INFO] [stdout] 85 | | holder: &mut Element, [INFO] [stdout] 86 | | page: &mut Page, [INFO] [stdout] 87 | | args: Vec, [INFO] [stdout] ... | [INFO] [stdout] 90 | | pos: (u32, u32), [INFO] [stdout] 91 | | ) -> Content, [INFO] [stdout] | |____________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#type_complexity [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/element/mod.rs:98:74 [INFO] [stdout] | [INFO] [stdout] 98 | prepare_children_func: |_, _| -> Vec>> { return Vec::new() }, [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] 98 - prepare_children_func: |_, _| -> Vec>> { return Vec::new() }, [INFO] [stdout] 98 + prepare_children_func: |_, _| -> Vec>> { Vec::new() }, [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary use of `.write(true)` because there is `.append(true)` [INFO] [stdout] --> src/logger.rs:17:13 [INFO] [stdout] | [INFO] [stdout] 17 | .write(true) [INFO] [stdout] | ^^^^^^^^^^^^ help: remove `.write(true)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ineffective_open_options [INFO] [stdout] = note: `#[warn(clippy::ineffective_open_options)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this boolean expression can be simplified [INFO] [stdout] --> src/element/border.rs:248:16 [INFO] [stdout] | [INFO] [stdout] 248 | if !(i % width as u32 == 0) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `(i % width as u32 != 0)` [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: file opened with `create`, but `truncate` behavior not defined [INFO] [stdout] --> src/logger.rs:29:14 [INFO] [stdout] | [INFO] [stdout] 29 | .create(true) [INFO] [stdout] | ^^^^^^^^^^^^- help: add: `.truncate(true)` [INFO] [stdout] | [INFO] [stdout] = help: if you intend to overwrite an existing file entirely, call `.truncate(true)` [INFO] [stdout] = help: if you instead know that you may want to keep some parts of the old file, call `.truncate(false)` [INFO] [stdout] = help: alternatively, use `.append(true)` to append to the file instead of overwriting it [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#suspicious_open_options [INFO] [stdout] = note: `#[warn(clippy::suspicious_open_options)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: casting to the same type is unnecessary (`u32` -> `u32`) [INFO] [stdout] --> src/element/border.rs:125:62 [INFO] [stdout] | [INFO] [stdout] 125 | ... (i + 2) % parent_size.0 as u32 + pos.0 as u32, [INFO] [stdout] | ^^^^^^^^^^^^ help: try: `pos.0` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_cast [INFO] [stdout] = note: `#[warn(clippy::unnecessary_cast)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: casting to the same type is unnecessary (`u32` -> `u32`) [INFO] [stdout] --> src/element/border.rs:135:56 [INFO] [stdout] | [INFO] [stdout] 135 | ... i % parent_size.0 as u32 + pos.0 as u32, [INFO] [stdout] | ^^^^^^^^^^^^ help: try: `pos.0` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_cast [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: deref which would be done by auto-deref [INFO] [stdout] --> src/element/border.rs:191:47 [INFO] [stdout] | [INFO] [stdout] 191 | ... temp.push_str(&*" ".repeat(width - 2 - (i as usize - 1) % width)); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `&" ".repeat(width - 2 - (i as usize - 1) % width)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_auto_deref [INFO] [stdout] = note: `#[warn(clippy::explicit_auto_deref)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: deref which would be done by auto-deref [INFO] [stdout] --> src/element/border.rs:209:43 [INFO] [stdout] | [INFO] [stdout] 209 | ... temp.push_str(&*" ".repeat(spaces)); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ help: try: `&" ".repeat(spaces)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_auto_deref [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: comparison to empty slice [INFO] [stdout] --> src/element/border.rs:216:24 [INFO] [stdout] | [INFO] [stdout] 216 | if temp != "" { [INFO] [stdout] | ^^^^^^^^^^ help: using `!is_empty` is clearer and more explicit: `!temp.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: this `if` statement can be collapsed [INFO] [stdout] --> src/parse.rs:19:9 [INFO] [stdout] | [INFO] [stdout] 19 | / if let Some(arr) = element.as_array() { [INFO] [stdout] 20 | | if let Some(element_type) = arr.get(0).and_then(|v: &Value| v.as_str()) { [INFO] [stdout] 21 | | let args: Vec = arr[1..].to_vec(); [INFO] [stdout] 22 | | let element_instance: Arc> = Arc::new(RwLock::new( [INFO] [stdout] ... | [INFO] [stdout] 27 | | } [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] 19 ~ if let Some(arr) = element.as_array() [INFO] [stdout] 20 ~ && let Some(element_type) = arr.get(0).and_then(|v: &Value| v.as_str()) { [INFO] [stdout] 21 | let args: Vec = arr[1..].to_vec(); [INFO] [stdout] ... [INFO] [stdout] 25 | body.push(element_instance); [INFO] [stdout] 26 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: accessing first element with `arr.get(0)` [INFO] [stdout] --> src/parse.rs:20:41 [INFO] [stdout] | [INFO] [stdout] 20 | if let Some(element_type) = arr.get(0).and_then(|v: &Value| v.as_str()) { [INFO] [stdout] | ^^^^^^^^^^ help: try: `arr.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: this expression borrows a value the compiler would automatically borrow [INFO] [stdout] --> src/element/border.rs:250:21 [INFO] [stdout] | [INFO] [stdout] 250 | (&*" ".repeat(width - 1 - i as usize % width)).to_string(), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: change this to: `(*" ".repeat(width - 1 - i as usize % width))` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] = note: `#[warn(clippy::needless_borrow)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/parse.rs:44:9 [INFO] [stdout] | [INFO] [stdout] 44 | / if let Some(arr) = element.as_array() { [INFO] [stdout] 45 | | if let Some(element_type) = arr.get(0).and_then(|v: &Value| v.as_str()) { [INFO] [stdout] 46 | | let args: Vec = arr[1..].to_vec(); [INFO] [stdout] 47 | | let element_instance: Arc> = Arc::new(RwLock::new( [INFO] [stdout] ... | [INFO] [stdout] 52 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 44 ~ if let Some(arr) = element.as_array() [INFO] [stdout] 45 ~ && let Some(element_type) = arr.get(0).and_then(|v: &Value| v.as_str()) { [INFO] [stdout] 46 | let args: Vec = arr[1..].to_vec(); [INFO] [stdout] ... [INFO] [stdout] 50 | body.push(element_instance); [INFO] [stdout] 51 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: accessing first element with `arr.get(0)` [INFO] [stdout] --> src/parse.rs:45:41 [INFO] [stdout] | [INFO] [stdout] 45 | if let Some(element_type) = arr.get(0).and_then(|v: &Value| v.as_str()) { [INFO] [stdout] | ^^^^^^^^^^ help: try: `arr.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: returning the result of a `let` binding from a block [INFO] [stdout] --> src/element/border.rs:306:13 [INFO] [stdout] | [INFO] [stdout] 297 | / let res = parse_vec_to_vec( [INFO] [stdout] 298 | | (*args [INFO] [stdout] 299 | | .get(0) [INFO] [stdout] 300 | | .unwrap_or(&Value::Array(vec![])) [INFO] [stdout] ... | [INFO] [stdout] 304 | | &page.registry, [INFO] [stdout] 305 | | ); [INFO] [stdout] | |______________- unnecessary `let` binding [INFO] [stdout] 306 | res [INFO] [stdout] | ^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#let_and_return [INFO] [stdout] = note: `#[warn(clippy::let_and_return)]` on by default [INFO] [stdout] help: return the expression directly [INFO] [stdout] | [INFO] [stdout] 297 ~ [INFO] [stdout] 298 ~ parse_vec_to_vec( [INFO] [stdout] 299 + (*args [INFO] [stdout] 300 + .get(0) [INFO] [stdout] 301 + .unwrap_or(&Value::Array(vec![])) [INFO] [stdout] 302 + .as_array() [INFO] [stdout] 303 + .unwrap_or(&vec![])) [INFO] [stdout] 304 + .clone(), [INFO] [stdout] 305 + &page.registry, [INFO] [stdout] 306 + ) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: accessing first element with `args.get(0)` [INFO] [stdout] --> src/element/border.rs:298:19 [INFO] [stdout] | [INFO] [stdout] 298 | (*args [INFO] [stdout] | ___________________^ [INFO] [stdout] 299 | | .get(0) [INFO] [stdout] | |___________________________^ help: try: `args.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: redundant pattern matching, consider using `is_none()` [INFO] [stdout] --> src/args/arg_parser.rs:23:20 [INFO] [stdout] | [INFO] [stdout] 23 | if let None = vec_to_parse_val { [INFO] [stdout] | -------^^^^------------------- help: try: `if vec_to_parse_val.is_none()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_pattern_matching [INFO] [stdout] = note: `#[warn(clippy::redundant_pattern_matching)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of `filter_map` with an identity function [INFO] [stdout] --> src/values/array.rs:21:22 [INFO] [stdout] | [INFO] [stdout] 21 | .filter_map(|v| v) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ help: try: `flatten()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#filter_map_identity [INFO] [stdout] = note: `#[warn(clippy::filter_map_identity)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this boolean expression can be simplified [INFO] [stdout] --> src/element/group.rs:91:16 [INFO] [stdout] | [INFO] [stdout] 91 | if !(i % width as u32 == 0) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `(i % width as u32 != 0)` [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: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/element/group.rs:50:21 [INFO] [stdout] | [INFO] [stdout] 50 | &(parent_size), [INFO] [stdout] | ^^^^^^^^^^^^^^ help: change this to: `(parent_size)` [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: casting to the same type is unnecessary (`u32` -> `u32`) [INFO] [stdout] --> src/element/group.rs:53:25 [INFO] [stdout] | [INFO] [stdout] 53 | i as u32 % parent_size.0 as u32 + pos.0, [INFO] [stdout] | ^^^^^^^^ help: try: `i` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_cast [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual implementation of `.is_multiple_of()` [INFO] [stdout] --> src/element/group.rs:61:32 [INFO] [stdout] | [INFO] [stdout] 61 | ... if i % parent_size.0 as u32 != 0 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace with: `!i.is_multiple_of(parent_size.0 as u32)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_is_multiple_of [INFO] [stdout] = note: `#[warn(clippy::manual_is_multiple_of)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: deref which would be done by auto-deref [INFO] [stdout] --> src/element/group.rs:62:47 [INFO] [stdout] | [INFO] [stdout] 62 | ... temp.push_str(&*" ".repeat( [INFO] [stdout] | _____________________________________^ [INFO] [stdout] 63 | | ... (width as u32 - (i) % width as u32).try_into().unwrap(), [INFO] [stdout] 64 | | ... )); [INFO] [stdout] | |_______________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_auto_deref [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 62 ~ temp.push_str(&" ".repeat( [INFO] [stdout] 63 + (width as u32 - (i) % width as u32).try_into().unwrap(), [INFO] [stdout] 64 ~ )); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual implementation of `.is_multiple_of()` [INFO] [stdout] --> src/element/group.rs:74:35 [INFO] [stdout] | [INFO] [stdout] 74 | } else if i % parent_size.0 as u32 == 0 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace with: `i.is_multiple_of(parent_size.0 as u32)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_is_multiple_of [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: deref which would be done by auto-deref [INFO] [stdout] --> src/element/group.rs:80:43 [INFO] [stdout] | [INFO] [stdout] 80 | ... temp.push_str(&*" ".repeat(spaces)); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ help: try: `&" ".repeat(spaces)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_auto_deref [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: accessing first element with `arr.get(0)` [INFO] [stdout] --> src/values/element.rs:18:49 [INFO] [stdout] | [INFO] [stdout] 18 | if let Some(element_type) = arr.get(0).and_then(|v: &Value| v.as_str()) { [INFO] [stdout] | ^^^^^^^^^^ help: try: `arr.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: manual implementation of `.is_multiple_of()` [INFO] [stdout] --> src/element/group.rs:91:17 [INFO] [stdout] | [INFO] [stdout] 91 | if !(i % width as u32 == 0) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ help: replace with: `i.is_multiple_of(width as u32)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_is_multiple_of [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression borrows a value the compiler would automatically borrow [INFO] [stdout] --> src/element/group.rs:93:21 [INFO] [stdout] | [INFO] [stdout] 93 | (&*" ".repeat((width as u32 - i % width as u32) as usize)).to_string(), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: change this to: `(*" ".repeat((width as u32 - i % width as u32) as usize))` [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: returning the result of a `let` binding from a block [INFO] [stdout] --> src/element/group.rs:114:13 [INFO] [stdout] | [INFO] [stdout] 105 | / let res = parse_vec_to_vec( [INFO] [stdout] 106 | | (*args [INFO] [stdout] 107 | | .get(0) [INFO] [stdout] 108 | | .unwrap_or(&Value::Array(vec![])) [INFO] [stdout] ... | [INFO] [stdout] 112 | | &page.registry, [INFO] [stdout] 113 | | ); [INFO] [stdout] | |______________- unnecessary `let` binding [INFO] [stdout] 114 | res [INFO] [stdout] | ^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#let_and_return [INFO] [stdout] help: return the expression directly [INFO] [stdout] | [INFO] [stdout] 105 ~ [INFO] [stdout] 106 ~ parse_vec_to_vec( [INFO] [stdout] 107 + (*args [INFO] [stdout] 108 + .get(0) [INFO] [stdout] 109 + .unwrap_or(&Value::Array(vec![])) [INFO] [stdout] 110 + .as_array() [INFO] [stdout] 111 + .unwrap_or(&vec![])) [INFO] [stdout] 112 + .clone(), [INFO] [stdout] 113 + &page.registry, [INFO] [stdout] 114 + ) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: accessing first element with `args.get(0)` [INFO] [stdout] --> src/element/group.rs:106:19 [INFO] [stdout] | [INFO] [stdout] 106 | (*args [INFO] [stdout] | ___________________^ [INFO] [stdout] 107 | | .get(0) [INFO] [stdout] | |___________________________^ help: try: `args.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: called `.iter().nth()` on a `Vec` [INFO] [stdout] --> src/element/heading.rs:29:50 [INFO] [stdout] | [INFO] [stdout] 29 | ... let config: ConfigType = unwrap_val!(args_parsed.iter().nth(1).unwrap_or(arg_parser.preset.vec.iter().nth(1).unwrap()), Config); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#iter_nth [INFO] [stdout] = note: `#[warn(clippy::iter_nth)]` on by default [INFO] [stdout] help: `get` is equivalent but more concise [INFO] [stdout] | [INFO] [stdout] 29 - let config: ConfigType = unwrap_val!(args_parsed.iter().nth(1).unwrap_or(arg_parser.preset.vec.iter().nth(1).unwrap()), Config); [INFO] [stdout] 29 + let config: ConfigType = unwrap_val!(args_parsed.get(1).unwrap_or(arg_parser.preset.vec.iter().nth(1).unwrap()), Config); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `.iter().nth()` on a `Vec` [INFO] [stdout] --> src/element/heading.rs:29:86 [INFO] [stdout] | [INFO] [stdout] 29 | ... let config: ConfigType = unwrap_val!(args_parsed.iter().nth(1).unwrap_or(arg_parser.preset.vec.iter().nth(1).unwrap()), Config); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#iter_nth [INFO] [stdout] help: `get` is equivalent but more concise [INFO] [stdout] | [INFO] [stdout] 29 - let config: ConfigType = unwrap_val!(args_parsed.iter().nth(1).unwrap_or(arg_parser.preset.vec.iter().nth(1).unwrap()), Config); [INFO] [stdout] 29 + let config: ConfigType = unwrap_val!(args_parsed.iter().nth(1).unwrap_or(arg_parser.preset.vec.get(1).unwrap()), Config); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: very complex type used. Consider factoring parts into `type` definitions [INFO] [stdout] --> src/element/mod.rs:34:18 [INFO] [stdout] | [INFO] [stdout] 34 | render_func: fn( [INFO] [stdout] | __________________^ [INFO] [stdout] 35 | | holder: &mut Element, [INFO] [stdout] 36 | | page: &mut Page, [INFO] [stdout] 37 | | args: Vec, [INFO] [stdout] ... | [INFO] [stdout] 40 | | pos: (u32, u32), [INFO] [stdout] 41 | | ) -> Content, [INFO] [stdout] | |________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#type_complexity [INFO] [stdout] = note: `#[warn(clippy::type_complexity)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: very complex type used. Consider factoring parts into `type` definitions [INFO] [stdout] --> src/element/mod.rs:44:28 [INFO] [stdout] | [INFO] [stdout] 44 | prepare_children_func: fn(&Vec, &Page) -> 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] [INFO] [stdout] [INFO] [stdout] warning: very complex type used. Consider factoring parts into `type` definitions [INFO] [stdout] --> src/element/mod.rs:56:22 [INFO] [stdout] | [INFO] [stdout] 56 | render_func: fn( [INFO] [stdout] | ______________________^ [INFO] [stdout] 57 | | holder: &mut Element, [INFO] [stdout] 58 | | page: &mut Page, [INFO] [stdout] 59 | | args: Vec, [INFO] [stdout] ... | [INFO] [stdout] 62 | | pos: (u32, u32), [INFO] [stdout] 63 | | ) -> Content, [INFO] [stdout] | |____________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#type_complexity [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: very complex type used. Consider factoring parts into `type` definitions [INFO] [stdout] --> src/element/mod.rs:65:36 [INFO] [stdout] | [INFO] [stdout] 65 | prepare_children_function: fn(&Vec, &Page) -> 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] [INFO] [stdout] [INFO] [stdout] warning: very complex type used. Consider factoring parts into `type` definitions [INFO] [stdout] --> src/element/mod.rs:84:22 [INFO] [stdout] | [INFO] [stdout] 84 | render_func: fn( [INFO] [stdout] | ______________________^ [INFO] [stdout] 85 | | holder: &mut Element, [INFO] [stdout] 86 | | page: &mut Page, [INFO] [stdout] 87 | | args: Vec, [INFO] [stdout] ... | [INFO] [stdout] 90 | | pos: (u32, u32), [INFO] [stdout] 91 | | ) -> Content, [INFO] [stdout] | |____________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#type_complexity [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/element/mod.rs:98:74 [INFO] [stdout] | [INFO] [stdout] 98 | prepare_children_func: |_, _| -> Vec>> { return Vec::new() }, [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] 98 - prepare_children_func: |_, _| -> Vec>> { return Vec::new() }, [INFO] [stdout] 98 + prepare_children_func: |_, _| -> Vec>> { Vec::new() }, [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: deref which would be done by auto-deref [INFO] [stdout] --> src/lib.rs:15:51 [INFO] [stdout] | [INFO] [stdout] 15 | registry.register_element("none".to_string(), &*element::NONE); [INFO] [stdout] | ^^^^^^^^^^^^^^^ help: try: `&element::NONE` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_auto_deref [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: deref which would be done by auto-deref [INFO] [stdout] --> src/lib.rs:17:51 [INFO] [stdout] | [INFO] [stdout] 17 | registry.register_element("para".to_string(), &*element::PARA); [INFO] [stdout] | ^^^^^^^^^^^^^^^ help: try: `&element::PARA` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_auto_deref [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: deref which would be done by auto-deref [INFO] [stdout] --> src/lib.rs:21:52 [INFO] [stdout] | [INFO] [stdout] 21 | registry.register_element("label".to_string(), &*element::LABEL); [INFO] [stdout] | ^^^^^^^^^^^^^^^^ help: try: `&element::LABEL` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_auto_deref [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary use of `.write(true)` because there is `.append(true)` [INFO] [stdout] --> src/logger.rs:17:13 [INFO] [stdout] | [INFO] [stdout] 17 | .write(true) [INFO] [stdout] | ^^^^^^^^^^^^ help: remove `.write(true)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ineffective_open_options [INFO] [stdout] = note: `#[warn(clippy::ineffective_open_options)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: deref which would be done by auto-deref [INFO] [stdout] --> src/lib.rs:24:51 [INFO] [stdout] | [INFO] [stdout] 24 | registry.register_element("line".to_string(), &*element::LINE); [INFO] [stdout] | ^^^^^^^^^^^^^^^ help: try: `&element::LINE` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_auto_deref [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: deref which would be done by auto-deref [INFO] [stdout] --> src/lib.rs:26:53 [INFO] [stdout] | [INFO] [stdout] 26 | registry.register_element("border".to_string(), &*element::BORDER); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ help: try: `&element::BORDER` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_auto_deref [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: deref which would be done by auto-deref [INFO] [stdout] --> src/lib.rs:29:54 [INFO] [stdout] | [INFO] [stdout] 29 | registry.register_element("heading".to_string(), &*element::HEADING); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ help: try: `&element::HEADING` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_auto_deref [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: deref which would be done by auto-deref [INFO] [stdout] --> src/lib.rs:32:55 [INFO] [stdout] | [INFO] [stdout] 32 | registry.register_element("new line".to_string(), &*element::NEW_LINE); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ help: try: `&element::NEW_LINE` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_auto_deref [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: deref which would be done by auto-deref [INFO] [stdout] --> src/lib.rs:37:52 [INFO] [stdout] | [INFO] [stdout] 37 | registry.register_element("group".to_string(), &*element::GROUP); [INFO] [stdout] | ^^^^^^^^^^^^^^^^ help: try: `&element::GROUP` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_auto_deref [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: file opened with `create`, but `truncate` behavior not defined [INFO] [stdout] --> src/logger.rs:29:14 [INFO] [stdout] | [INFO] [stdout] 29 | .create(true) [INFO] [stdout] | ^^^^^^^^^^^^- help: add: `.truncate(true)` [INFO] [stdout] | [INFO] [stdout] = help: if you intend to overwrite an existing file entirely, call `.truncate(true)` [INFO] [stdout] = help: if you instead know that you may want to keep some parts of the old file, call `.truncate(false)` [INFO] [stdout] = help: alternatively, use `.append(true)` to append to the file instead of overwriting it [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#suspicious_open_options [INFO] [stdout] = note: `#[warn(clippy::suspicious_open_options)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/parse.rs:19:9 [INFO] [stdout] | [INFO] [stdout] 19 | / if let Some(arr) = element.as_array() { [INFO] [stdout] 20 | | if let Some(element_type) = arr.get(0).and_then(|v: &Value| v.as_str()) { [INFO] [stdout] 21 | | let args: Vec = arr[1..].to_vec(); [INFO] [stdout] 22 | | let element_instance: Arc> = Arc::new(RwLock::new( [INFO] [stdout] ... | [INFO] [stdout] 27 | | } [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] 19 ~ if let Some(arr) = element.as_array() [INFO] [stdout] 20 ~ && let Some(element_type) = arr.get(0).and_then(|v: &Value| v.as_str()) { [INFO] [stdout] 21 | let args: Vec = arr[1..].to_vec(); [INFO] [stdout] ... [INFO] [stdout] 25 | body.push(element_instance); [INFO] [stdout] 26 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: accessing first element with `arr.get(0)` [INFO] [stdout] --> src/parse.rs:20:41 [INFO] [stdout] | [INFO] [stdout] 20 | if let Some(element_type) = arr.get(0).and_then(|v: &Value| v.as_str()) { [INFO] [stdout] | ^^^^^^^^^^ help: try: `arr.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: this `if` statement can be collapsed [INFO] [stdout] --> src/parse.rs:44:9 [INFO] [stdout] | [INFO] [stdout] 44 | / if let Some(arr) = element.as_array() { [INFO] [stdout] 45 | | if let Some(element_type) = arr.get(0).and_then(|v: &Value| v.as_str()) { [INFO] [stdout] 46 | | let args: Vec = arr[1..].to_vec(); [INFO] [stdout] 47 | | let element_instance: Arc> = Arc::new(RwLock::new( [INFO] [stdout] ... | [INFO] [stdout] 52 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 44 ~ if let Some(arr) = element.as_array() [INFO] [stdout] 45 ~ && let Some(element_type) = arr.get(0).and_then(|v: &Value| v.as_str()) { [INFO] [stdout] 46 | let args: Vec = arr[1..].to_vec(); [INFO] [stdout] ... [INFO] [stdout] 50 | body.push(element_instance); [INFO] [stdout] 51 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: accessing first element with `arr.get(0)` [INFO] [stdout] --> src/parse.rs:45:41 [INFO] [stdout] | [INFO] [stdout] 45 | if let Some(element_type) = arr.get(0).and_then(|v: &Value| v.as_str()) { [INFO] [stdout] | ^^^^^^^^^^ help: try: `arr.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: redundant pattern matching, consider using `is_none()` [INFO] [stdout] --> src/args/arg_parser.rs:23:20 [INFO] [stdout] | [INFO] [stdout] 23 | if let None = vec_to_parse_val { [INFO] [stdout] | -------^^^^------------------- help: try: `if vec_to_parse_val.is_none()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_pattern_matching [INFO] [stdout] = note: `#[warn(clippy::redundant_pattern_matching)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of `filter_map` with an identity function [INFO] [stdout] --> src/values/array.rs:21:22 [INFO] [stdout] | [INFO] [stdout] 21 | .filter_map(|v| v) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ help: try: `flatten()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#filter_map_identity [INFO] [stdout] = note: `#[warn(clippy::filter_map_identity)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: accessing first element with `arr.get(0)` [INFO] [stdout] --> src/values/element.rs:18:49 [INFO] [stdout] | [INFO] [stdout] 18 | if let Some(element_type) = arr.get(0).and_then(|v: &Value| v.as_str()) { [INFO] [stdout] | ^^^^^^^^^^ help: try: `arr.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: deref which would be done by auto-deref [INFO] [stdout] --> src/lib.rs:15:51 [INFO] [stdout] | [INFO] [stdout] 15 | registry.register_element("none".to_string(), &*element::NONE); [INFO] [stdout] | ^^^^^^^^^^^^^^^ help: try: `&element::NONE` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_auto_deref [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: deref which would be done by auto-deref [INFO] [stdout] --> src/lib.rs:17:51 [INFO] [stdout] | [INFO] [stdout] 17 | registry.register_element("para".to_string(), &*element::PARA); [INFO] [stdout] | ^^^^^^^^^^^^^^^ help: try: `&element::PARA` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_auto_deref [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: deref which would be done by auto-deref [INFO] [stdout] --> src/lib.rs:21:52 [INFO] [stdout] | [INFO] [stdout] 21 | registry.register_element("label".to_string(), &*element::LABEL); [INFO] [stdout] | ^^^^^^^^^^^^^^^^ help: try: `&element::LABEL` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_auto_deref [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: deref which would be done by auto-deref [INFO] [stdout] --> src/lib.rs:24:51 [INFO] [stdout] | [INFO] [stdout] 24 | registry.register_element("line".to_string(), &*element::LINE); [INFO] [stdout] | ^^^^^^^^^^^^^^^ help: try: `&element::LINE` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_auto_deref [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: deref which would be done by auto-deref [INFO] [stdout] --> src/lib.rs:26:53 [INFO] [stdout] | [INFO] [stdout] 26 | registry.register_element("border".to_string(), &*element::BORDER); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ help: try: `&element::BORDER` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_auto_deref [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: deref which would be done by auto-deref [INFO] [stdout] --> src/lib.rs:29:54 [INFO] [stdout] | [INFO] [stdout] 29 | registry.register_element("heading".to_string(), &*element::HEADING); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ help: try: `&element::HEADING` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_auto_deref [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: deref which would be done by auto-deref [INFO] [stdout] --> src/lib.rs:32:55 [INFO] [stdout] | [INFO] [stdout] 32 | registry.register_element("new line".to_string(), &*element::NEW_LINE); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ help: try: `&element::NEW_LINE` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_auto_deref [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: deref which would be done by auto-deref [INFO] [stdout] --> src/lib.rs:37:52 [INFO] [stdout] | [INFO] [stdout] 37 | registry.register_element("group".to_string(), &*element::GROUP); [INFO] [stdout] | ^^^^^^^^^^^^^^^^ help: try: `&element::GROUP` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_auto_deref [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] Finished `dev` profile [unoptimized + debuginfo] target(s) in 15.02s [INFO] running `Command { std: "docker" "inspect" "27b93c73e15587e5f85cf3e152c88415485e8cfddc69435178180274e62f8e33", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "27b93c73e15587e5f85cf3e152c88415485e8cfddc69435178180274e62f8e33", kill_on_drop: false }` [INFO] [stdout] 27b93c73e15587e5f85cf3e152c88415485e8cfddc69435178180274e62f8e33