[INFO] cloning repository https://github.com/JCoussanes/rustywriter [INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/JCoussanes/rustywriter" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FJCoussanes%2Frustywriter", kill_on_drop: false }` [INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FJCoussanes%2Frustywriter'... [INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }` [INFO] [stdout] 0eb17ba7c8b2ada5c80a2aca7f79da896910a558 [INFO] linting JCoussanes/rustywriter against nightly for clippy-nonminimal_bool-denied [INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FJCoussanes%2Frustywriter" "/workspace/builds/worker-4-tc1/source", kill_on_drop: false }` [INFO] [stderr] Cloning into '/workspace/builds/worker-4-tc1/source'... [INFO] [stderr] done. [INFO] started tweaking git repo https://github.com/JCoussanes/rustywriter [INFO] finished tweaking git repo https://github.com/JCoussanes/rustywriter [INFO] tweaked toml for git repo https://github.com/JCoussanes/rustywriter written to /workspace/builds/worker-4-tc1/source/Cargo.toml [INFO] validating manifest of git repo https://github.com/JCoussanes/rustywriter 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/JCoussanes/rustywriter 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] Downloading crates ... [INFO] [stderr] Downloaded uuid-macro-internal v1.18.1 [INFO] [stderr] Downloaded ropey v1.6.1 [INFO] [stderr] Downloaded ron v0.9.0 [INFO] [stderr] Downloaded fern v0.7.1 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+nightly" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }` [INFO] [stdout] 8f39483fc6ecf1313babef595c6b9c8685856aef22c7228cd280db6a59255b27 [INFO] running `Command { std: "docker" "start" "-a" "8f39483fc6ecf1313babef595c6b9c8685856aef22c7228cd280db6a59255b27", kill_on_drop: false }` [INFO] running `Command { std: "docker" "inspect" "8f39483fc6ecf1313babef595c6b9c8685856aef22c7228cd280db6a59255b27", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "8f39483fc6ecf1313babef595c6b9c8685856aef22c7228cd280db6a59255b27", kill_on_drop: false }` [INFO] [stdout] 8f39483fc6ecf1313babef595c6b9c8685856aef22c7228cd280db6a59255b27 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+nightly" "clippy" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }` [INFO] [stdout] 6cf668ecbd10eb8ceeae60c214b7977f52448b5bfad81ba2a2bfb95f5c059da6 [INFO] running `Command { std: "docker" "start" "-a" "6cf668ecbd10eb8ceeae60c214b7977f52448b5bfad81ba2a2bfb95f5c059da6", kill_on_drop: false }` [INFO] [stderr] Compiling wasm-bindgen-shared v0.2.101 [INFO] [stderr] Checking unicode-ident v1.0.18 [INFO] [stderr] Compiling bumpalo v3.19.0 [INFO] [stderr] Compiling wasm-bindgen v0.2.101 [INFO] [stderr] Compiling indexmap v1.9.3 [INFO] [stderr] Compiling ahash v0.7.8 [INFO] [stderr] Compiling getrandom v0.3.3 [INFO] [stderr] Compiling syn v2.0.106 [INFO] [stderr] Checking getrandom v0.2.16 [INFO] [stderr] Compiling signal-hook v0.3.18 [INFO] [stderr] Checking signal-hook-registry v1.4.6 [INFO] [stderr] Checking regex-syntax v0.8.6 [INFO] [stderr] Compiling rustix v0.38.44 [INFO] [stderr] Checking parking_lot_core v0.9.11 [INFO] [stderr] Checking mio v1.0.4 [INFO] [stderr] Checking linux-raw-sys v0.4.15 [INFO] [stderr] Checking utf8-width v0.1.7 [INFO] [stderr] Checking base64 v0.22.1 [INFO] [stderr] Compiling syn v1.0.109 [INFO] [stderr] Checking html-escape v0.2.13 [INFO] [stderr] Checking castaway v0.2.4 [INFO] [stderr] Checking tokio v1.47.1 [INFO] [stderr] Checking parking_lot v0.12.4 [INFO] [stderr] Checking winnow v0.7.13 [INFO] [stderr] Compiling indoc v2.0.6 [INFO] [stderr] Checking compact_str v0.8.1 [INFO] [stderr] Checking signal-hook-mio v0.2.4 [INFO] [stderr] Checking unicode-truncate v1.1.0 [INFO] [stderr] Checking lru v0.12.5 [INFO] [stderr] Checking unicode-width v0.2.0 [INFO] [stderr] Checking str_indices v0.4.4 [INFO] [stderr] Checking toml_writer v1.0.2 [INFO] [stderr] Checking chrono v0.4.41 [INFO] [stderr] Checking fern v0.7.1 [INFO] [stderr] Checking ropey v1.6.1 [INFO] [stderr] Checking toml_parser v1.0.2 [INFO] [stderr] Checking regex-automata v0.4.10 [INFO] [stderr] Checking regex v1.11.2 [INFO] [stderr] Compiling sycamore-macro v0.8.2 [INFO] [stderr] Compiling wasm-bindgen-backend v0.2.101 [INFO] [stderr] Compiling darling_core v0.20.11 [INFO] [stderr] Compiling serde_derive v1.0.219 [INFO] [stderr] Compiling futures-macro v0.3.31 [INFO] [stderr] Compiling uuid-macro-internal v1.18.1 [INFO] [stderr] Compiling strum_macros v0.26.4 [INFO] [stderr] Compiling thiserror-impl v2.0.16 [INFO] [stderr] Compiling wasm-bindgen-macro-support v0.2.101 [INFO] [stderr] Checking futures-util v0.3.31 [INFO] [stderr] Compiling darling_macro v0.20.11 [INFO] [stderr] Checking thiserror v2.0.16 [INFO] [stderr] Compiling wasm-bindgen-macro v0.2.101 [INFO] [stderr] Compiling darling v0.20.11 [INFO] [stderr] Checking strum v0.26.3 [INFO] [stderr] Compiling instability v0.3.9 [INFO] [stderr] Checking js-sys v0.3.78 [INFO] [stderr] Checking serde v1.0.219 [INFO] [stderr] Checking futures-executor v0.3.31 [INFO] [stderr] Checking futures v0.3.31 [INFO] [stderr] Checking bitflags v2.9.4 [INFO] [stderr] Checking uuid v1.18.1 [INFO] [stderr] Checking sycamore-reactive v0.8.1 [INFO] [stderr] Checking serde_spanned v1.0.0 [INFO] [stderr] Checking toml_datetime v0.7.0 [INFO] [stderr] Checking rw_compiler v0.7.0 (/opt/rustwide/workdir/rw_compiler) [INFO] [stderr] Checking web-sys v0.3.78 [INFO] [stderr] Checking wasm-bindgen-futures v0.4.51 [INFO] [stderr] Checking ron v0.9.0 [INFO] [stderr] Checking toml v0.9.5 [INFO] [stdout] warning: writing `&Vec` instead of `&[_]` involves a new object where a slice will do [INFO] [stdout] --> rw_compiler/src/compiler.rs:372:44 [INFO] [stdout] | [INFO] [stdout] 372 | pub fn compile_texts(&self, fragments: &Vec) -> Vec { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stdout] = note: `#[warn(clippy::ptr_arg)]` on by default [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 372 - pub fn compile_texts(&self, fragments: &Vec) -> Vec { [INFO] [stdout] 372 + pub fn compile_texts(&self, fragments: &[Fragment]) -> Vec { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> rw_compiler/src/compiler.rs:376:42 [INFO] [stdout] | [INFO] [stdout] 376 | fragment_stack.insert(0, (0, &child)); [INFO] [stdout] | ^^^^^^ help: change this to: `child` [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: length comparison to zero [INFO] [stdout] --> rw_compiler/src/compiler.rs:381:15 [INFO] [stdout] | [INFO] [stdout] 381 | while fragment_stack.len() > 0 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: using `!is_empty` is clearer and more explicit: `!fragment_stack.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: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> rw_compiler/src/compiler.rs:400:27 [INFO] [stdout] | [INFO] [stdout] 400 | .join(&sep), [INFO] [stdout] | ^^^^ help: change this to: `sep` [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: compiling a regex in a loop [INFO] [stdout] --> rw_compiler/src/compiler.rs:403:33 [INFO] [stdout] | [INFO] [stdout] 403 | let titles_re = Regex::new(r"(?m)^(#*) ").expect("Error creating title regex."); [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] help: move the regex construction outside this loop [INFO] [stdout] --> rw_compiler/src/compiler.rs:381:9 [INFO] [stdout] | [INFO] [stdout] 381 | while fragment_stack.len() > 0 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#regex_creation_in_loops [INFO] [stdout] = note: `#[warn(clippy::regex_creation_in_loops)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> rw_compiler/src/compiler.rs:411:79 [INFO] [stdout] | [INFO] [stdout] 411 | ... merged_string = [merged_string, render_part].join(&sep); [INFO] [stdout] | ^^^^ help: change this to: `sep` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> rw_compiler/src/compiler.rs:427:74 [INFO] [stdout] | [INFO] [stdout] 427 | fragment_stack.insert(prev_last_pos, (depth + 1, &child)); [INFO] [stdout] | ^^^^^^ help: change this to: `child` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> rw_compiler/src/compiler.rs:443:22 [INFO] [stdout] | [INFO] [stdout] 443 | .get_mut(&variation) [INFO] [stdout] | ^^^^^^^^^^ help: change this to: `variation` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> rw_compiler/src/compiler.rs:466:22 [INFO] [stdout] | [INFO] [stdout] 466 | .get_mut(&variation) [INFO] [stdout] | ^^^^^^^^^^ help: change this to: `variation` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> rw_compiler/src/compiler.rs:473:22 [INFO] [stdout] | [INFO] [stdout] 473 | .get(&variation) [INFO] [stdout] | ^^^^^^^^^^ help: change this to: `variation` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> rw_compiler/src/compiler.rs:507:22 [INFO] [stdout] | [INFO] [stdout] 507 | .get_mut(&variation) [INFO] [stdout] | ^^^^^^^^^^ help: change this to: `variation` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> rw_compiler/src/compiler.rs:528:22 [INFO] [stdout] | [INFO] [stdout] 528 | .get_mut(&variation) [INFO] [stdout] | ^^^^^^^^^^ help: change this to: `variation` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> rw_compiler/src/compiler.rs:558:22 [INFO] [stdout] | [INFO] [stdout] 558 | .get_mut(&variation) [INFO] [stdout] | ^^^^^^^^^^ help: change this to: `variation` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> rw_compiler/src/compiler.rs:565:22 [INFO] [stdout] | [INFO] [stdout] 565 | .get(&variation) [INFO] [stdout] | ^^^^^^^^^^ help: change this to: `variation` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> rw_compiler/src/compiler.rs:603:22 [INFO] [stdout] | [INFO] [stdout] 603 | .get_mut(&variation) [INFO] [stdout] | ^^^^^^^^^^ help: change this to: `variation` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> rw_compiler/src/compiler.rs:626:18 [INFO] [stdout] | [INFO] [stdout] 626 | .get(&variation) [INFO] [stdout] | ^^^^^^^^^^ help: change this to: `variation` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> rw_compiler/src/compiler.rs:632:18 [INFO] [stdout] | [INFO] [stdout] 632 | .get(&variation) [INFO] [stdout] | ^^^^^^^^^^ help: change this to: `variation` [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] [stderr] Checking sycamore-core v0.8.2 [INFO] [stderr] Checking sycamore-futures v0.8.0 [INFO] [stdout] warning: writing `&Vec` instead of `&[_]` involves a new object where a slice will do [INFO] [stdout] --> rw_compiler/src/compiler.rs:372:44 [INFO] [stdout] | [INFO] [stdout] 372 | pub fn compile_texts(&self, fragments: &Vec) -> Vec { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stdout] = note: `#[warn(clippy::ptr_arg)]` on by default [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 372 - pub fn compile_texts(&self, fragments: &Vec) -> Vec { [INFO] [stdout] 372 + pub fn compile_texts(&self, fragments: &[Fragment]) -> Vec { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> rw_compiler/src/compiler.rs:376:42 [INFO] [stdout] | [INFO] [stdout] 376 | fragment_stack.insert(0, (0, &child)); [INFO] [stdout] | ^^^^^^ help: change this to: `child` [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: length comparison to zero [INFO] [stdout] --> rw_compiler/src/compiler.rs:381:15 [INFO] [stdout] | [INFO] [stdout] 381 | while fragment_stack.len() > 0 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: using `!is_empty` is clearer and more explicit: `!fragment_stack.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: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> rw_compiler/src/compiler.rs:400:27 [INFO] [stdout] | [INFO] [stdout] 400 | .join(&sep), [INFO] [stdout] | ^^^^ help: change this to: `sep` [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: compiling a regex in a loop [INFO] [stdout] --> rw_compiler/src/compiler.rs:403:33 [INFO] [stdout] | [INFO] [stdout] 403 | let titles_re = Regex::new(r"(?m)^(#*) ").expect("Error creating title regex."); [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] help: move the regex construction outside this loop [INFO] [stdout] --> rw_compiler/src/compiler.rs:381:9 [INFO] [stdout] | [INFO] [stdout] 381 | while fragment_stack.len() > 0 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#regex_creation_in_loops [INFO] [stdout] = note: `#[warn(clippy::regex_creation_in_loops)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> rw_compiler/src/compiler.rs:411:79 [INFO] [stdout] | [INFO] [stdout] 411 | ... merged_string = [merged_string, render_part].join(&sep); [INFO] [stdout] | ^^^^ help: change this to: `sep` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> rw_compiler/src/compiler.rs:427:74 [INFO] [stdout] | [INFO] [stdout] 427 | fragment_stack.insert(prev_last_pos, (depth + 1, &child)); [INFO] [stdout] | ^^^^^^ help: change this to: `child` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> rw_compiler/src/compiler.rs:443:22 [INFO] [stdout] | [INFO] [stdout] 443 | .get_mut(&variation) [INFO] [stdout] | ^^^^^^^^^^ help: change this to: `variation` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> rw_compiler/src/compiler.rs:466:22 [INFO] [stdout] | [INFO] [stdout] 466 | .get_mut(&variation) [INFO] [stdout] | ^^^^^^^^^^ help: change this to: `variation` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> rw_compiler/src/compiler.rs:473:22 [INFO] [stdout] | [INFO] [stdout] 473 | .get(&variation) [INFO] [stdout] | ^^^^^^^^^^ help: change this to: `variation` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> rw_compiler/src/compiler.rs:507:22 [INFO] [stdout] | [INFO] [stdout] 507 | .get_mut(&variation) [INFO] [stdout] | ^^^^^^^^^^ help: change this to: `variation` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> rw_compiler/src/compiler.rs:528:22 [INFO] [stdout] | [INFO] [stdout] 528 | .get_mut(&variation) [INFO] [stdout] | ^^^^^^^^^^ help: change this to: `variation` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> rw_compiler/src/compiler.rs:558:22 [INFO] [stdout] | [INFO] [stdout] 558 | .get_mut(&variation) [INFO] [stdout] | ^^^^^^^^^^ help: change this to: `variation` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> rw_compiler/src/compiler.rs:565:22 [INFO] [stdout] | [INFO] [stdout] 565 | .get(&variation) [INFO] [stdout] | ^^^^^^^^^^ help: change this to: `variation` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> rw_compiler/src/compiler.rs:603:22 [INFO] [stdout] | [INFO] [stdout] 603 | .get_mut(&variation) [INFO] [stdout] | ^^^^^^^^^^ help: change this to: `variation` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> rw_compiler/src/compiler.rs:626:18 [INFO] [stdout] | [INFO] [stdout] 626 | .get(&variation) [INFO] [stdout] | ^^^^^^^^^^ help: change this to: `variation` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> rw_compiler/src/compiler.rs:632:18 [INFO] [stdout] | [INFO] [stdout] 632 | .get(&variation) [INFO] [stdout] | ^^^^^^^^^^ help: change this to: `variation` [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] [stderr] Checking crossterm v0.28.1 [INFO] [stderr] Checking rw_app v0.1.0 (/opt/rustwide/workdir/rw_app) [INFO] [stderr] Checking rw_core v0.1.0 (/opt/rustwide/workdir/rw_core) [INFO] [stdout] warning: enum `Content` is never used [INFO] [stdout] --> rw_app/src/main.rs:35:6 [INFO] [stdout] | [INFO] [stdout] 35 | enum Content { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `load_content_file` is never used [INFO] [stdout] --> rw_app/src/main.rs:40:4 [INFO] [stdout] | [INFO] [stdout] 40 | fn load_content_file(uuid: Uuid, content: Content, root: &Path) -> String { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `map_variation` is never used [INFO] [stdout] --> rw_app/src/main.rs:55:4 [INFO] [stdout] | [INFO] [stdout] 55 | fn map_variation(doctype: &Doctype, has_children: Option) -> Variation { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `map_fragment_type` is never used [INFO] [stdout] --> rw_app/src/main.rs:65:4 [INFO] [stdout] | [INFO] [stdout] 65 | fn map_fragment_type(doctype: &Doctype) -> FragmentType { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `apply_formatter` is never used [INFO] [stdout] --> rw_app/src/main.rs:73:4 [INFO] [stdout] | [INFO] [stdout] 73 | fn apply_formatter(content: String) -> String { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `create_compile_fragment_list` is never used [INFO] [stdout] --> rw_app/src/main.rs:78:4 [INFO] [stdout] | [INFO] [stdout] 78 | fn create_compile_fragment_list( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `create_compiler` is never used [INFO] [stdout] --> rw_app/src/main.rs:124:4 [INFO] [stdout] | [INFO] [stdout] 124 | fn create_compiler(export_profile: &ExportProfile) -> Compiler { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `create_final_files` is never used [INFO] [stdout] --> rw_app/src/main.rs:195:4 [INFO] [stdout] | [INFO] [stdout] 195 | fn create_final_files( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `export_text` is never used [INFO] [stdout] --> rw_app/src/main.rs:215:4 [INFO] [stdout] | [INFO] [stdout] 215 | fn export_text(text_settings: &TextSettings) { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: enum `Frontmatter` is never used [INFO] [stdout] --> rw_app/src/frontmatter.rs:6:10 [INFO] [stdout] | [INFO] [stdout] 6 | pub enum Frontmatter { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `get_frontmatter` is never used [INFO] [stdout] --> rw_app/src/frontmatter.rs:10:4 [INFO] [stdout] | [INFO] [stdout] 10 | fn get_frontmatter(frontmatter: Frontmatter, title: String, _author: Vec) -> String { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `add_frontmatter` is never used [INFO] [stdout] --> rw_app/src/frontmatter.rs:26:8 [INFO] [stdout] | [INFO] [stdout] 26 | pub fn add_frontmatter( [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: enum `Separation` is never used [INFO] [stdout] --> rw_app/src/settings.rs:12:6 [INFO] [stdout] | [INFO] [stdout] 12 | enum Separation { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: enum `ExportFormat` is never used [INFO] [stdout] --> rw_app/src/settings.rs:20:10 [INFO] [stdout] | [INFO] [stdout] 20 | pub enum ExportFormat { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `Document` is never constructed [INFO] [stdout] --> rw_app/src/settings.rs:25:12 [INFO] [stdout] | [INFO] [stdout] 25 | pub struct Document { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: enum `Doctype` is never used [INFO] [stdout] --> rw_app/src/settings.rs:33:10 [INFO] [stdout] | [INFO] [stdout] 33 | pub enum Doctype { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `TextSettings` is never constructed [INFO] [stdout] --> rw_app/src/settings.rs:40:12 [INFO] [stdout] | [INFO] [stdout] 40 | pub struct TextSettings { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `ExportProfile` is never constructed [INFO] [stdout] --> rw_app/src/settings.rs:47:12 [INFO] [stdout] | [INFO] [stdout] 47 | pub struct ExportProfile { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `TextMetadata` is never constructed [INFO] [stdout] --> rw_app/src/settings.rs:79:12 [INFO] [stdout] | [INFO] [stdout] 79 | pub struct TextMetadata { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `TextContent` is never constructed [INFO] [stdout] --> rw_app/src/settings.rs:87:12 [INFO] [stdout] | [INFO] [stdout] 87 | pub struct TextContent { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `TextSave` is never constructed [INFO] [stdout] --> rw_app/src/settings.rs:92:12 [INFO] [stdout] | [INFO] [stdout] 92 | pub struct TextSave { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `SAVE_FILENAME` is never used [INFO] [stdout] --> rw_app/src/settings.rs:100:7 [INFO] [stdout] | [INFO] [stdout] 100 | const SAVE_FILENAME: &str = ".rw_save.ron"; [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `embedded_export_profiles` is never used [INFO] [stdout] --> rw_app/src/settings.rs:102:8 [INFO] [stdout] | [INFO] [stdout] 102 | pub fn embedded_export_profiles() -> HashMap { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `load_save` is never used [INFO] [stdout] --> rw_app/src/settings.rs:155:8 [INFO] [stdout] | [INFO] [stdout] 155 | pub fn load_save(root: &Path) -> TextSettings { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: all variants have the same postfix: `Break` [INFO] [stdout] --> rw_app/src/settings.rs:12:1 [INFO] [stdout] | [INFO] [stdout] 12 | / enum Separation { [INFO] [stdout] 13 | | CustomBreak(String), [INFO] [stdout] 14 | | LineBreak, [INFO] [stdout] 15 | | PageBreak, [INFO] [stdout] 16 | | FileBreak, [INFO] [stdout] 17 | | } [INFO] [stdout] | |_^ [INFO] [stdout] | [INFO] [stdout] = help: remove the postfixes and use full paths to the variants instead of glob imports [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#enum_variant_names [INFO] [stdout] = note: `#[warn(clippy::enum_variant_names)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `project` [INFO] [stdout] --> rw_core/src/io/project.rs:38:5 [INFO] [stdout] | [INFO] [stdout] 38 | project: &Project, [INFO] [stdout] | ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_project` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `outline` [INFO] [stdout] --> rw_core/src/io/project.rs:55:59 [INFO] [stdout] | [INFO] [stdout] 55 | pub(super) fn _save_outline_into_file(project_dir: &Path, outline: &Outline) -> Result<()> { [INFO] [stdout] | ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_outline` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `PROJECT_DIR_NAME` is never used [INFO] [stdout] --> rw_core/src/io/project.rs:9:7 [INFO] [stdout] | [INFO] [stdout] 9 | const PROJECT_DIR_NAME: &str = ".rw"; [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `init_project` is never used [INFO] [stdout] --> rw_core/src/io/project.rs:11:8 [INFO] [stdout] | [INFO] [stdout] 11 | pub fn init_project(root: &Path) -> Result<()> { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `Outline` [INFO] [stdout] --> rw_core/src/io/tests.rs:10:20 [INFO] [stdout] | [INFO] [stdout] 10 | use crate::model::{Outline, Project}; [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function call inside of `expect` [INFO] [stdout] --> rw_app/src/main.rs:45:18 [INFO] [stdout] | [INFO] [stdout] 45 | .expect(format!("Error reading body for uuid: {}.", uuid).as_str()) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `unwrap_or_else(|_| panic!("Error reading body for uuid: {}.", uuid))` [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: function call inside of `expect` [INFO] [stdout] --> rw_app/src/main.rs:50:18 [INFO] [stdout] | [INFO] [stdout] 50 | .expect(format!("Error reading synopsis for uuid: {}.", uuid).as_str()) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `unwrap_or_else(|_| panic!("Error reading synopsis for uuid: {}.", uuid))` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#expect_fun_call [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: length comparison to zero [INFO] [stdout] --> rw_app/src/main.rs:90:11 [INFO] [stdout] | [INFO] [stdout] 90 | while document_stack.len() > 0 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: using `!is_empty` is clearer and more explicit: `!document_stack.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] --> rw_app/src/main.rs:94:24 [INFO] [stdout] | [INFO] [stdout] 94 | if !visited && document.children.len() > 0 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: using `!is_empty` is clearer and more explicit: `!document.children.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: unnecessary use of `get(&fragment.id).is_some()` [INFO] [stdout] --> rw_core/src/model/outline.rs:80:27 [INFO] [stdout] | [INFO] [stdout] 80 | if self.fragments.get(&fragment.id).is_some() { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `contains_key(&fragment.id)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_get_then_check [INFO] [stdout] = note: `#[warn(clippy::unnecessary_get_then_check)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary use of `get(&id).is_none()` [INFO] [stdout] --> rw_core/src/model/outline.rs:106:27 [INFO] [stdout] | [INFO] [stdout] 106 | if self.fragments.get(&id).is_none() { [INFO] [stdout] | ---------------^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: replace it with: `!self.fragments.contains_key(&id)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_get_then_check [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> rw_core/src/model/outline.rs:165:26 [INFO] [stdout] | [INFO] [stdout] 165 | .get_mut(&parent_id) [INFO] [stdout] | ^^^^^^^^^^ help: change this to: `parent_id` [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: function call inside of `expect` [INFO] [stdout] --> rw_core/src/io/project.rs:23:22 [INFO] [stdout] | [INFO] [stdout] 23 | .expect(format!("{:?} is not valid path.", root).as_str()) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `unwrap_or_else(|| panic!("{:?} is not valid path.", root))` [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: the borrowed expression implements the required traits [INFO] [stdout] --> rw_core/src/io/project.rs:27:20 [INFO] [stdout] | [INFO] [stdout] 27 | create_dir(&root)?; [INFO] [stdout] | ^^^^^ help: change this to: `root` [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: missing documentation for a method [INFO] [stdout] --> rw_core/src/model/outline.rs:38:5 [INFO] [stdout] | [INFO] [stdout] 38 | / pub fn get_fragment_coordinates( [INFO] [stdout] 39 | | &self, [INFO] [stdout] 40 | | id: FragmentId, [INFO] [stdout] 41 | | ) -> Result { [INFO] [stdout] | |__________________________________________________^ [INFO] [stdout] | [INFO] [stdout] note: the lint level is defined here [INFO] [stdout] --> rw_core/src/lib.rs:3:9 [INFO] [stdout] | [INFO] [stdout] 3 | #![warn(missing_docs)] [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: missing documentation for a method [INFO] [stdout] --> rw_core/src/model/outline.rs:75:5 [INFO] [stdout] | [INFO] [stdout] 75 | / pub fn add_fragment( [INFO] [stdout] 76 | | &mut self, [INFO] [stdout] 77 | | fragment: Fragment, [INFO] [stdout] 78 | | parent_id: Option, [INFO] [stdout] 79 | | ) -> Result<(), OutlineError> { [INFO] [stdout] | |_________________________________^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: missing documentation for a method [INFO] [stdout] --> rw_core/src/model/outline.rs:101:5 [INFO] [stdout] | [INFO] [stdout] 101 | / pub fn move_fragment( [INFO] [stdout] 102 | | &mut self, [INFO] [stdout] 103 | | id: FragmentId, [INFO] [stdout] 104 | | new_coordinates: FragmentCoordinates, [INFO] [stdout] 105 | | ) -> Result<(), OutlineError> { [INFO] [stdout] | |_________________________________^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: missing documentation for a method [INFO] [stdout] --> rw_core/src/model/outline.rs:142:5 [INFO] [stdout] | [INFO] [stdout] 142 | pub fn remove_fragment(&mut self, id: FragmentId) -> Result<(), OutlineError> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: missing documentation for a method [INFO] [stdout] --> rw_core/src/model/outline.rs:146:5 [INFO] [stdout] | [INFO] [stdout] 146 | pub fn force_remove_fragment(&mut self, id: FragmentId) -> Result<(), OutlineError> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: enum `Separation` is never used [INFO] [stdout] --> rw_app/src/settings.rs:12:6 [INFO] [stdout] | [INFO] [stdout] 12 | enum Separation { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `full_text_compildation_output_multi_string` is never used [INFO] [stdout] --> rw_app/src/tests/long_values.rs:770:15 [INFO] [stdout] | [INFO] [stdout] 770 | pub(super) fn full_text_compildation_output_multi_string() -> Vec { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: all variants have the same postfix: `Break` [INFO] [stdout] --> rw_app/src/settings.rs:12:1 [INFO] [stdout] | [INFO] [stdout] 12 | / enum Separation { [INFO] [stdout] 13 | | CustomBreak(String), [INFO] [stdout] 14 | | LineBreak, [INFO] [stdout] 15 | | PageBreak, [INFO] [stdout] 16 | | FileBreak, [INFO] [stdout] 17 | | } [INFO] [stdout] | |_^ [INFO] [stdout] | [INFO] [stdout] = help: remove the postfixes and use full paths to the variants instead of glob imports [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#enum_variant_names [INFO] [stdout] = note: `#[warn(clippy::enum_variant_names)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `project` [INFO] [stdout] --> rw_core/src/io/project.rs:38:5 [INFO] [stdout] | [INFO] [stdout] 38 | project: &Project, [INFO] [stdout] | ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_project` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `outline` [INFO] [stdout] --> rw_core/src/io/project.rs:55:59 [INFO] [stdout] | [INFO] [stdout] 55 | pub(super) fn _save_outline_into_file(project_dir: &Path, outline: &Outline) -> Result<()> { [INFO] [stdout] | ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_outline` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `init_project` is never used [INFO] [stdout] --> rw_core/src/io/project.rs:11:8 [INFO] [stdout] | [INFO] [stdout] 11 | pub fn init_project(root: &Path) -> Result<()> { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary use of `get(&fragment.id).is_some()` [INFO] [stdout] --> rw_core/src/model/outline.rs:80:27 [INFO] [stdout] | [INFO] [stdout] 80 | if self.fragments.get(&fragment.id).is_some() { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `contains_key(&fragment.id)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_get_then_check [INFO] [stdout] = note: `#[warn(clippy::unnecessary_get_then_check)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary use of `get(&id).is_none()` [INFO] [stdout] --> rw_core/src/model/outline.rs:106:27 [INFO] [stdout] | [INFO] [stdout] 106 | if self.fragments.get(&id).is_none() { [INFO] [stdout] | ---------------^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: replace it with: `!self.fragments.contains_key(&id)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_get_then_check [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> rw_core/src/model/outline.rs:165:26 [INFO] [stdout] | [INFO] [stdout] 165 | .get_mut(&parent_id) [INFO] [stdout] | ^^^^^^^^^^ help: change this to: `parent_id` [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: field assignment outside of initializer for an instance created with Default::default() [INFO] [stdout] --> rw_core/src/model/tests/t_fragment.rs:55:5 [INFO] [stdout] | [INFO] [stdout] 55 | expected.id = FragmentId::default(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] note: consider initializing the variable with `model::fragment::Fragment { id: FragmentId::default(), ..Default::default() }` and removing relevant reassignments [INFO] [stdout] --> rw_core/src/model/tests/t_fragment.rs:54:5 [INFO] [stdout] | [INFO] [stdout] 54 | let mut expected = Fragment::default(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#field_reassign_with_default [INFO] [stdout] = note: `#[warn(clippy::field_reassign_with_default)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field assignment outside of initializer for an instance created with Default::default() [INFO] [stdout] --> rw_core/src/model/tests/t_fragment.rs:70:5 [INFO] [stdout] | [INFO] [stdout] 70 | expected.id = FragmentId::default(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] note: consider initializing the variable with `model::fragment::Fragment { id: FragmentId::default(), type_: FragmentType::Structure, ..Default::default() }` and removing relevant reassignments [INFO] [stdout] --> rw_core/src/model/tests/t_fragment.rs:69:5 [INFO] [stdout] | [INFO] [stdout] 69 | let mut expected = Fragment::default(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#field_reassign_with_default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field assignment outside of initializer for an instance created with Default::default() [INFO] [stdout] --> rw_core/src/model/tests/t_fragment.rs:84:5 [INFO] [stdout] | [INFO] [stdout] 84 | expected.id = FragmentId::default(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] note: consider initializing the variable with `model::fragment::Fragment { id: FragmentId::default(), body: "Test body".to_string(), ..Default::default() }` and removing relevant reassignments [INFO] [stdout] --> rw_core/src/model/tests/t_fragment.rs:83:5 [INFO] [stdout] | [INFO] [stdout] 83 | let mut expected = Fragment::default(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#field_reassign_with_default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field assignment outside of initializer for an instance created with Default::default() [INFO] [stdout] --> rw_core/src/model/tests/t_fragment.rs:101:5 [INFO] [stdout] | [INFO] [stdout] 101 | expected.id = FragmentId::default(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] note: consider initializing the variable with `model::fragment::Fragment { id: FragmentId::default(), children: Vec::from(children), ..Default::default() }` and removing relevant reassignments [INFO] [stdout] --> rw_core/src/model/tests/t_fragment.rs:100:5 [INFO] [stdout] | [INFO] [stdout] 100 | let mut expected = Fragment::default(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#field_reassign_with_default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `[Uuid; 2]` which implements the `Copy` trait [INFO] [stdout] --> rw_core/src/model/tests/t_fragment.rs:97:29 [INFO] [stdout] | [INFO] [stdout] 97 | .children(Vec::from(children.clone())) [INFO] [stdout] | ^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `children` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] = note: `#[warn(clippy::clone_on_copy)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field assignment outside of initializer for an instance created with Default::default() [INFO] [stdout] --> rw_core/src/model/tests/t_fragment.rs:119:5 [INFO] [stdout] | [INFO] [stdout] 119 | expected.id = FragmentId::default(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] note: consider initializing the variable with `model::fragment::Fragment { id: FragmentId::default(), children: Vec::from(children), ..Default::default() }` and removing relevant reassignments [INFO] [stdout] --> rw_core/src/model/tests/t_fragment.rs:118:5 [INFO] [stdout] | [INFO] [stdout] 118 | let mut expected = Fragment::default(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#field_reassign_with_default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `Uuid` which implements the `Copy` trait [INFO] [stdout] --> rw_core/src/model/tests/t_fragment.rs:114:16 [INFO] [stdout] | [INFO] [stdout] 114 | .child(children[0].clone()) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `children[0]` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `Uuid` which implements the `Copy` trait [INFO] [stdout] --> rw_core/src/model/tests/t_fragment.rs:115:16 [INFO] [stdout] | [INFO] [stdout] 115 | .child(children[1].clone()) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `children[1]` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field assignment outside of initializer for an instance created with Default::default() [INFO] [stdout] --> rw_core/src/model/tests/t_fragment.rs:138:5 [INFO] [stdout] | [INFO] [stdout] 138 | expected.id = FragmentId::default(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] note: consider initializing the variable with `model::fragment::Fragment { id: FragmentId::default(), ..Default::default() }` and removing relevant reassignments [INFO] [stdout] --> rw_core/src/model/tests/t_fragment.rs:137:5 [INFO] [stdout] | [INFO] [stdout] 137 | let mut expected = Fragment::default(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#field_reassign_with_default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field assignment outside of initializer for an instance created with Default::default() [INFO] [stdout] --> rw_core/src/model/tests/t_fragment.rs:152:5 [INFO] [stdout] | [INFO] [stdout] 152 | expected.id = FragmentId::default(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] note: consider initializing the variable with `model::fragment::Fragment { id: FragmentId::default(), ..Default::default() }` and removing relevant reassignments [INFO] [stdout] --> rw_core/src/model/tests/t_fragment.rs:151:5 [INFO] [stdout] | [INFO] [stdout] 151 | let mut expected = Fragment::default(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#field_reassign_with_default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field assignment outside of initializer for an instance created with Default::default() [INFO] [stdout] --> rw_core/src/model/tests/t_fragment.rs:166:5 [INFO] [stdout] | [INFO] [stdout] 166 | expected.id = FragmentId::default(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] note: consider initializing the variable with `model::fragment::Fragment { id: FragmentId::default(), ..Default::default() }` and removing relevant reassignments [INFO] [stdout] --> rw_core/src/model/tests/t_fragment.rs:165:5 [INFO] [stdout] | [INFO] [stdout] 165 | let mut expected = Fragment::default(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#field_reassign_with_default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field assignment outside of initializer for an instance created with Default::default() [INFO] [stdout] --> rw_core/src/model/tests/t_fragment.rs:180:5 [INFO] [stdout] | [INFO] [stdout] 180 | expected.id = FragmentId::default(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] note: consider initializing the variable with `model::fragment::Fragment { id: FragmentId::default(), ..Default::default() }` and removing relevant reassignments [INFO] [stdout] --> rw_core/src/model/tests/t_fragment.rs:179:5 [INFO] [stdout] | [INFO] [stdout] 179 | let mut expected = Fragment::default(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#field_reassign_with_default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field assignment outside of initializer for an instance created with Default::default() [INFO] [stdout] --> rw_core/src/model/tests/t_fragment.rs:194:5 [INFO] [stdout] | [INFO] [stdout] 194 | expected.id = FragmentId::default(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] note: consider initializing the variable with `model::fragment::Fragment { id: FragmentId::default(), ..Default::default() }` and removing relevant reassignments [INFO] [stdout] --> rw_core/src/model/tests/t_fragment.rs:193:5 [INFO] [stdout] | [INFO] [stdout] 193 | let mut expected = Fragment::default(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#field_reassign_with_default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field assignment outside of initializer for an instance created with Default::default() [INFO] [stdout] --> rw_core/src/model/tests/t_fragment.rs:210:5 [INFO] [stdout] | [INFO] [stdout] 210 | expected.id = FragmentId::default(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] note: consider initializing the variable with `model::fragment::Fragment { id: FragmentId::default(), ..Default::default() }` and removing relevant reassignments [INFO] [stdout] --> rw_core/src/model/tests/t_fragment.rs:209:5 [INFO] [stdout] | [INFO] [stdout] 209 | let mut expected = Fragment::default(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#field_reassign_with_default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function call inside of `expect` [INFO] [stdout] --> rw_app/src/main.rs:45:18 [INFO] [stdout] | [INFO] [stdout] 45 | .expect(format!("Error reading body for uuid: {}.", uuid).as_str()) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `unwrap_or_else(|_| panic!("Error reading body for uuid: {}.", uuid))` [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: field assignment outside of initializer for an instance created with Default::default() [INFO] [stdout] --> rw_core/src/model/tests/t_fragment.rs:224:5 [INFO] [stdout] | [INFO] [stdout] 224 | expected.id = FragmentId::default(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] note: consider initializing the variable with `model::fragment::Fragment { id: FragmentId::default(), ..Default::default() }` and removing relevant reassignments [INFO] [stdout] --> rw_core/src/model/tests/t_fragment.rs:223:5 [INFO] [stdout] | [INFO] [stdout] 223 | let mut expected = Fragment::default(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#field_reassign_with_default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function call inside of `expect` [INFO] [stdout] --> rw_app/src/main.rs:50:18 [INFO] [stdout] | [INFO] [stdout] 50 | .expect(format!("Error reading synopsis for uuid: {}.", uuid).as_str()) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `unwrap_or_else(|_| panic!("Error reading synopsis for uuid: {}.", uuid))` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#expect_fun_call [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: length comparison to zero [INFO] [stdout] --> rw_app/src/main.rs:90:11 [INFO] [stdout] | [INFO] [stdout] 90 | while document_stack.len() > 0 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: using `!is_empty` is clearer and more explicit: `!document_stack.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] --> rw_app/src/main.rs:94:24 [INFO] [stdout] | [INFO] [stdout] 94 | if !visited && document.children.len() > 0 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: using `!is_empty` is clearer and more explicit: `!document.children.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: function call inside of `expect` [INFO] [stdout] --> rw_core/src/io/project.rs:23:22 [INFO] [stdout] | [INFO] [stdout] 23 | .expect(format!("{:?} is not valid path.", root).as_str()) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `unwrap_or_else(|| panic!("{:?} is not valid path.", root))` [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] [stderr] Checking ratatui v0.29.0 [INFO] [stdout] warning: the borrowed expression implements the required traits [INFO] [stdout] --> rw_core/src/io/project.rs:27:20 [INFO] [stdout] | [INFO] [stdout] 27 | create_dir(&root)?; [INFO] [stdout] | ^^^^^ help: change this to: `root` [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: this boolean expression can be simplified [INFO] [stdout] --> rw_core/src/io/tests.rs:21:16 [INFO] [stdout] | [INFO] [stdout] 21 | && !p [INFO] [stdout] | ________________^ [INFO] [stdout] 22 | | .read_dir() [INFO] [stdout] 23 | | .expect("Error reading dir in test_init()") [INFO] [stdout] 24 | | .next() [INFO] [stdout] 25 | | .is_none() [INFO] [stdout] | |__________________________^ [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] help: try [INFO] [stdout] | [INFO] [stdout] 21 ~ && p [INFO] [stdout] 22 + .read_dir() [INFO] [stdout] 23 + .expect("Error reading dir in test_init()") [INFO] [stdout] 24 + .next().is_some() [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: missing documentation for a method [INFO] [stdout] --> rw_core/src/model/outline.rs:38:5 [INFO] [stdout] | [INFO] [stdout] 38 | / pub fn get_fragment_coordinates( [INFO] [stdout] 39 | | &self, [INFO] [stdout] 40 | | id: FragmentId, [INFO] [stdout] 41 | | ) -> Result { [INFO] [stdout] | |__________________________________________________^ [INFO] [stdout] | [INFO] [stdout] note: the lint level is defined here [INFO] [stdout] --> rw_core/src/lib.rs:3:9 [INFO] [stdout] | [INFO] [stdout] 3 | #![warn(missing_docs)] [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: missing documentation for a method [INFO] [stdout] --> rw_core/src/model/outline.rs:75:5 [INFO] [stdout] | [INFO] [stdout] 75 | / pub fn add_fragment( [INFO] [stdout] 76 | | &mut self, [INFO] [stdout] 77 | | fragment: Fragment, [INFO] [stdout] 78 | | parent_id: Option, [INFO] [stdout] 79 | | ) -> Result<(), OutlineError> { [INFO] [stdout] | |_________________________________^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: missing documentation for a method [INFO] [stdout] --> rw_core/src/model/outline.rs:101:5 [INFO] [stdout] | [INFO] [stdout] 101 | / pub fn move_fragment( [INFO] [stdout] 102 | | &mut self, [INFO] [stdout] 103 | | id: FragmentId, [INFO] [stdout] 104 | | new_coordinates: FragmentCoordinates, [INFO] [stdout] 105 | | ) -> Result<(), OutlineError> { [INFO] [stdout] | |_________________________________^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: missing documentation for a method [INFO] [stdout] --> rw_core/src/model/outline.rs:142:5 [INFO] [stdout] | [INFO] [stdout] 142 | pub fn remove_fragment(&mut self, id: FragmentId) -> Result<(), OutlineError> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: missing documentation for a method [INFO] [stdout] --> rw_core/src/model/outline.rs:146:5 [INFO] [stdout] | [INFO] [stdout] 146 | pub fn force_remove_fragment(&mut self, id: FragmentId) -> Result<(), OutlineError> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] Checking rw_ui_ratatui v0.1.0 (/opt/rustwide/workdir/rw_ui_ratatui) [INFO] [stdout] warning: unused imports: `RwAction` and `TextInputAction` [INFO] [stdout] --> rw_ui_ratatui/src/panel/editor_panel.rs:8:35 [INFO] [stdout] | [INFO] [stdout] 8 | editors::{Editor, TextEditor, TextInputAction}, [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] 9 | input_system::{ActionHandler, DocumentedAction, RwAction}, [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `EditorPanelAction` [INFO] [stdout] --> rw_ui_ratatui/src/main.rs:24:26 [INFO] [stdout] | [INFO] [stdout] 24 | use panel::{EditorPanel, EditorPanelAction, MetaPanel, OutlinerPanel, Panel}; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: value assigned to `count` is never read [INFO] [stdout] --> rw_ui_ratatui/src/mock.rs:85:9 [INFO] [stdout] | [INFO] [stdout] 85 | count += 1; [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: maybe it is overwritten before being read? [INFO] [stdout] = note: `#[warn(unused_assignments)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `ActionContext` [INFO] [stdout] --> rw_ui_ratatui/src/input_system/tests/mod.rs:1:13 [INFO] [stdout] | [INFO] [stdout] 1 | use super::{ActionContext, BindingError, BindingsRegistry, GlobalAction, RwAction}; [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `panel::EditorPanelAction` [INFO] [stdout] --> rw_ui_ratatui/src/input_system/tests/binding.rs:6:60 [INFO] [stdout] | [INFO] [stdout] 6 | editors::TextInputAction, input_system::ActionContext, panel::EditorPanelAction, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `RwAction` and `TextInputAction` [INFO] [stdout] --> rw_ui_ratatui/src/panel/editor_panel.rs:8:35 [INFO] [stdout] | [INFO] [stdout] 8 | editors::{Editor, TextEditor, TextInputAction}, [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] 9 | input_system::{ActionHandler, DocumentedAction, RwAction}, [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `EditorPanelAction` [INFO] [stdout] --> rw_ui_ratatui/src/main.rs:24:26 [INFO] [stdout] | [INFO] [stdout] 24 | use panel::{EditorPanel, EditorPanelAction, MetaPanel, OutlinerPanel, Panel}; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unreachable pattern [INFO] [stdout] --> rw_ui_ratatui/src/panel/meta_panel.rs:293:17 [INFO] [stdout] | [INFO] [stdout] 288 | MetaField::Title | MetaField::Synopsis | MetaField::Notes => match action { [INFO] [stdout] | --------------------------------------------------------- matches all the relevant values [INFO] [stdout] ... [INFO] [stdout] 293 | MetaField::Title => {} [INFO] [stdout] | ^^^^^^^^^^^^^^^^ no value can reach this [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unreachable_patterns)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unreachable pattern [INFO] [stdout] --> rw_ui_ratatui/src/panel/meta_panel.rs:296:17 [INFO] [stdout] | [INFO] [stdout] 288 | MetaField::Title | MetaField::Synopsis | MetaField::Notes => match action { [INFO] [stdout] | --------------------------------------------------------- matches all the relevant values [INFO] [stdout] ... [INFO] [stdout] 296 | MetaField::Synopsis => self.edit_state.synopsis.handle_action(action), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ no value can reach this [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unreachable pattern [INFO] [stdout] --> rw_ui_ratatui/src/panel/meta_panel.rs:297:17 [INFO] [stdout] | [INFO] [stdout] 288 | MetaField::Title | MetaField::Synopsis | MetaField::Notes => match action { [INFO] [stdout] | --------------------------------------------------------- matches all the relevant values [INFO] [stdout] ... [INFO] [stdout] 297 | MetaField::Notes => self.edit_state.notes.handle_action(action), [INFO] [stdout] | ^^^^^^^^^^^^^^^^ no value can reach this [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `k_ev` [INFO] [stdout] --> rw_ui_ratatui/src/panel/outliner_panel.rs:77:33 [INFO] [stdout] | [INFO] [stdout] 77 | fn handle_inputs(&mut self, k_ev: KeyEvent) -> bool { [INFO] [stdout] | ^^^^ help: if this is intentional, prefix it with an underscore: `_k_ev` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: trait `DocumentedAction` is never used [INFO] [stdout] --> rw_ui_ratatui/src/input_system.rs:19:11 [INFO] [stdout] | [INFO] [stdout] 19 | pub trait DocumentedAction { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `text` is never used [INFO] [stdout] --> rw_ui_ratatui/src/panel/editor_panel.rs:30:8 [INFO] [stdout] | [INFO] [stdout] 21 | impl EditorPanel { [INFO] [stdout] | ---------------- method in this implementation [INFO] [stdout] ... [INFO] [stdout] 30 | fn text(&self) -> String { [INFO] [stdout] | ^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: returning the result of a `let` binding from a block [INFO] [stdout] --> rw_ui_ratatui/src/editors/text_editor/wrapped_view.rs:156:9 [INFO] [stdout] | [INFO] [stdout] 143 | / let res = match self [INFO] [stdout] 144 | | .lines [INFO] [stdout] 145 | | .iter() [INFO] [stdout] 146 | | .enumerate() [INFO] [stdout] ... | [INFO] [stdout] 153 | | }), [INFO] [stdout] 154 | | }; [INFO] [stdout] | |__________- unnecessary `let` binding [INFO] [stdout] 155 | [INFO] [stdout] 156 | 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] 143 ~ [INFO] [stdout] 144 | [INFO] [stdout] 145 ~ match self [INFO] [stdout] 146 + .lines [INFO] [stdout] 147 + .iter() [INFO] [stdout] 148 + .enumerate() [INFO] [stdout] 149 + .find(|(_, e)| idx >= e.begin && idx < e.end) [INFO] [stdout] 150 + { [INFO] [stdout] 151 + Some((pos, _)) => Ok(pos), [INFO] [stdout] 152 + None => Err(ErrViews::CharIndexOutOfBounds { [INFO] [stdout] 153 + char_index: idx, [INFO] [stdout] 154 + view_last_char_index: after_last_pos, [INFO] [stdout] 155 + }), [INFO] [stdout] 156 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `map_or` can be simplified [INFO] [stdout] --> rw_ui_ratatui/src/editors/text_editor.rs:209:12 [INFO] [stdout] | [INFO] [stdout] 209 | if self [INFO] [stdout] | ____________^ [INFO] [stdout] 210 | | .max_len [INFO] [stdout] 211 | | .map_or(true, |max| self.buffer.len_chars() < max) [INFO] [stdout] | |______________________________________________________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_map_or [INFO] [stdout] = note: `#[warn(clippy::unnecessary_map_or)]` on by default [INFO] [stdout] help: use `is_none_or` instead [INFO] [stdout] | [INFO] [stdout] 211 - .map_or(true, |max| self.buffer.len_chars() < max) [INFO] [stdout] 211 + .is_none_or(|max| self.buffer.len_chars() < max) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` can be collapsed into the outer `match` [INFO] [stdout] --> rw_ui_ratatui/src/editors/text_editor.rs:227:17 [INFO] [stdout] | [INFO] [stdout] 227 | / if self.cursor > 0 { [INFO] [stdout] 228 | | self.cursor -= 1; [INFO] [stdout] 229 | | } [INFO] [stdout] | |_________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_match [INFO] [stdout] = note: `#[warn(clippy::collapsible_match)]` on by default [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 226 ~ CursorMove::Left [INFO] [stdout] 227 ~ if self.cursor > 0 => { [INFO] [stdout] 228 | self.cursor -= 1; [INFO] [stdout] 229 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` can be collapsed into the outer `match` [INFO] [stdout] --> rw_ui_ratatui/src/editors/text_editor.rs:232:17 [INFO] [stdout] | [INFO] [stdout] 232 | / if self.cursor < self.buffer.len_chars() { [INFO] [stdout] 233 | | self.cursor += 1; [INFO] [stdout] 234 | | } [INFO] [stdout] | |_________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_match [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 231 ~ CursorMove::Right [INFO] [stdout] 232 ~ if self.cursor < self.buffer.len_chars() => { [INFO] [stdout] 233 | self.cursor += 1; [INFO] [stdout] 234 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual implementation of an assign operation [INFO] [stdout] --> rw_ui_ratatui/src/editors/list_selector/dropdown.rs:47:13 [INFO] [stdout] | [INFO] [stdout] 47 | / self.scroll_window_start = [INFO] [stdout] 48 | | self.scroll_window_start - (self.scroll_window_end - last_option); [INFO] [stdout] | |_________________________________________________________________________________^ help: replace it with: `self.scroll_window_start -= (self.scroll_window_end - last_option)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stdout] = note: `#[warn(clippy::assign_op_pattern)]` 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] --> rw_ui_ratatui/src/editors/list_selector/dropdown.rs:92:18 [INFO] [stdout] | [INFO] [stdout] 92 | options: &Vec, [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stdout] = note: `#[warn(clippy::ptr_arg)]` on by default [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 92 - options: &Vec, [INFO] [stdout] 92 + options: &[String], [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> rw_ui_ratatui/src/editors/list_selector/dropdown.rs:129:55 [INFO] [stdout] | [INFO] [stdout] 129 | let prefix = if selected.contains(&i) { "✔ " } else { " " }; [INFO] [stdout] | ^^ help: change this to: `i` [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: use of `default` to create a unit struct [INFO] [stdout] --> rw_ui_ratatui/src/editors/list_selector/dropdown.rs:147:9 [INFO] [stdout] | [INFO] [stdout] 147 | Clear::default().render(self.area, buf); [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#default_constructed_unit_structs [INFO] [stdout] = note: `#[warn(clippy::default_constructed_unit_structs)]` on by default [INFO] [stdout] help: remove this call to `default` [INFO] [stdout] | [INFO] [stdout] 147 - Clear::default().render(self.area, buf); [INFO] [stdout] 147 + Clear.render(self.area, buf); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `if let .. else` expression looks like `matches!` macro [INFO] [stdout] --> rw_ui_ratatui/src/editors/list_selector/options_editor.rs:18:9 [INFO] [stdout] | [INFO] [stdout] 18 | / if let Self::Disabled = self { [INFO] [stdout] 19 | | false [INFO] [stdout] 20 | | } else { [INFO] [stdout] 21 | | true [INFO] [stdout] 22 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_like_matches_macro [INFO] [stdout] = note: `#[warn(clippy::match_like_matches_macro)]` on by default [INFO] [stdout] help: use `matches!` directly [INFO] [stdout] | [INFO] [stdout] 18 - if let Self::Disabled = self { [INFO] [stdout] 19 - false [INFO] [stdout] 20 - } else { [INFO] [stdout] 21 - true [INFO] [stdout] 22 - } [INFO] [stdout] 18 + !matches!(self, Self::Disabled) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: match expression looks like `matches!` macro [INFO] [stdout] --> rw_ui_ratatui/src/editors/list_selector/selection_mode.rs:31:9 [INFO] [stdout] | [INFO] [stdout] 31 | / match self { [INFO] [stdout] 32 | | Self::Single(_) => true, [INFO] [stdout] 33 | | _ => false, [INFO] [stdout] 34 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_like_matches_macro [INFO] [stdout] help: use `matches!` directly [INFO] [stdout] | [INFO] [stdout] 31 - match self { [INFO] [stdout] 32 - Self::Single(_) => true, [INFO] [stdout] 33 - _ => false, [INFO] [stdout] 34 - } [INFO] [stdout] 31 + matches!(self, Self::Single(_)) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: match expression looks like `matches!` macro [INFO] [stdout] --> rw_ui_ratatui/src/editors/list_selector/selection_mode.rs:38:9 [INFO] [stdout] | [INFO] [stdout] 38 | / match self { [INFO] [stdout] 39 | | Self::Multi(_) => true, [INFO] [stdout] 40 | | _ => false, [INFO] [stdout] 41 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_like_matches_macro [INFO] [stdout] help: use `matches!` directly [INFO] [stdout] | [INFO] [stdout] 38 - match self { [INFO] [stdout] 39 - Self::Multi(_) => true, [INFO] [stdout] 40 - _ => false, [INFO] [stdout] 41 - } [INFO] [stdout] 38 + matches!(self, Self::Multi(_)) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&Vec` instead of `&[_]` involves a new object where a slice will do [INFO] [stdout] --> rw_ui_ratatui/src/editors/list_selector.rs:202:18 [INFO] [stdout] | [INFO] [stdout] 202 | options: &Vec, [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 202 - options: &Vec, [INFO] [stdout] 202 + options: &[String], [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&Vec` instead of `&[_]` involves a new object where a slice will do [INFO] [stdout] --> rw_ui_ratatui/src/editors/list_selector.rs:220:18 [INFO] [stdout] | [INFO] [stdout] 220 | options: &Vec, [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 220 - options: &Vec, [INFO] [stdout] 220 + options: &[String], [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `.into_iter()` call is equivalent to `.iter()` and will not consume the `BTreeSet` [INFO] [stdout] --> rw_ui_ratatui/src/editors/list_selector.rs:226:46 [INFO] [stdout] | [INFO] [stdout] 226 | SelectionMode::Multi(idx_set.into_iter().map(|i| options[*i].clone()).collect()) [INFO] [stdout] | ^^^^^^^^^ help: call directly: `iter` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#into_iter_on_ref [INFO] [stdout] = note: `#[warn(clippy::into_iter_on_ref)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods with the following characteristics: (`to_*` and `self` type is not `Copy`) usually take `self` by reference [INFO] [stdout] --> rw_ui_ratatui/src/editors.rs:52:23 [INFO] [stdout] | [INFO] [stdout] 52 | pub fn to_editing(&mut self) { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: consider choosing a less ambiguous name [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#wrong_self_convention [INFO] [stdout] = note: `#[warn(clippy::wrong_self_convention)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you seem to be trying to use `match` for an equality check. Consider using `if` [INFO] [stdout] --> rw_ui_ratatui/src/editors.rs:53:9 [INFO] [stdout] | [INFO] [stdout] 53 | / match self { [INFO] [stdout] 54 | | Self::Focused => *self = Self::Editing, [INFO] [stdout] 55 | | _ => {} [INFO] [stdout] 56 | | }; [INFO] [stdout] | |_________^ help: try: `if self == &Self::Focused { *self = Self::Editing }` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stdout] = note: `#[warn(clippy::single_match)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods with the following characteristics: (`to_*` and `self` type is not `Copy`) usually take `self` by reference [INFO] [stdout] --> rw_ui_ratatui/src/editors.rs:59:23 [INFO] [stdout] | [INFO] [stdout] 59 | pub fn to_focused(&mut self) { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: consider choosing a less ambiguous name [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#wrong_self_convention [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods with the following characteristics: (`to_*` and `self` type is not `Copy`) usually take `self` by reference [INFO] [stdout] --> rw_ui_ratatui/src/editors.rs:66:23 [INFO] [stdout] | [INFO] [stdout] 66 | pub fn to_default(&mut self) { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: consider choosing a less ambiguous name [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#wrong_self_convention [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you seem to be trying to use `match` for an equality check. Consider using `if` [INFO] [stdout] --> rw_ui_ratatui/src/editors.rs:67:9 [INFO] [stdout] | [INFO] [stdout] 67 | / match self { [INFO] [stdout] 68 | | Self::Focused => *self = Self::Default, [INFO] [stdout] 69 | | _ => {} [INFO] [stdout] 70 | | } [INFO] [stdout] | |_________^ help: try: `if self == &Self::Focused { *self = Self::Default }` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: match expression looks like `matches!` macro [INFO] [stdout] --> rw_ui_ratatui/src/input_system.rs:85:9 [INFO] [stdout] | [INFO] [stdout] 85 | / match *self { [INFO] [stdout] 86 | | RwAction::Global(_) => true, [INFO] [stdout] 87 | | _ => false, [INFO] [stdout] 88 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_like_matches_macro [INFO] [stdout] help: use `matches!` directly [INFO] [stdout] | [INFO] [stdout] 85 - match *self { [INFO] [stdout] 86 - RwAction::Global(_) => true, [INFO] [stdout] 87 - _ => false, [INFO] [stdout] 88 - } [INFO] [stdout] 85 + matches!(*self, RwAction::Global(_)) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you seem to be trying to use `match` for destructuring a single pattern. Consider using `if let` [INFO] [stdout] --> rw_ui_ratatui/src/input_system.rs:130:13 [INFO] [stdout] | [INFO] [stdout] 130 | / match context.use_direct_char(c) { [INFO] [stdout] 131 | | Some(a) => return Some(a), [INFO] [stdout] 132 | | _ => {} [INFO] [stdout] 133 | | } [INFO] [stdout] | |_____________^ help: try: `if let Some(a) = context.use_direct_char(c) { return Some(a) }` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` has identical blocks [INFO] [stdout] --> rw_ui_ratatui/src/input_system.rs:137:81 [INFO] [stdout] | [INFO] [stdout] 137 | if act.get_context() == ActionContext::Global && key_event == *k_ev { [INFO] [stdout] | _________________________________________________________________________________^ [INFO] [stdout] 138 | | Some(*act) [INFO] [stdout] 139 | | } else if act.get_context() == context && key_event == *k_ev { [INFO] [stdout] | |_____________^ [INFO] [stdout] | [INFO] [stdout] note: same as this [INFO] [stdout] --> rw_ui_ratatui/src/input_system.rs:139:74 [INFO] [stdout] | [INFO] [stdout] 139 | } else if act.get_context() == context && key_event == *k_ev { [INFO] [stdout] | __________________________________________________________________________^ [INFO] [stdout] 140 | | Some(*act) [INFO] [stdout] 141 | | } else { [INFO] [stdout] | |_____________^ [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#if_same_then_else [INFO] [stdout] = note: `#[warn(clippy::if_same_then_else)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `impl` can be derived [INFO] [stdout] --> rw_ui_ratatui/src/input_system.rs:148:1 [INFO] [stdout] | [INFO] [stdout] 148 | / impl Default for BindingsRegistry { [INFO] [stdout] 149 | | fn default() -> Self { [INFO] [stdout] 150 | | Self { [INFO] [stdout] 151 | | bindings: HashMap::new(), [INFO] [stdout] ... | [INFO] [stdout] 154 | | } [INFO] [stdout] | |_^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#derivable_impls [INFO] [stdout] = note: `#[warn(clippy::derivable_impls)]` on by default [INFO] [stdout] help: replace the manual implementation with a derive attribute [INFO] [stdout] | [INFO] [stdout] 104 + #[derive(Default)] [INFO] [stdout] 105 | pub struct BindingsRegistry { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: returning the result of a `let` binding from a block [INFO] [stdout] --> rw_ui_ratatui/src/panel/meta_panel/render.rs:250:9 [INFO] [stdout] | [INFO] [stdout] 238 | / let field_area = if let Some(n) = label { [INFO] [stdout] 239 | | let chunks = Layout::default() [INFO] [stdout] 240 | | .direction(Direction::Horizontal) [INFO] [stdout] 241 | | .constraints([Constraint::Length(10), Constraint::Min(1)]) [INFO] [stdout] ... | [INFO] [stdout] 247 | | area [INFO] [stdout] 248 | | }; [INFO] [stdout] | |__________- unnecessary `let` binding [INFO] [stdout] 249 | [INFO] [stdout] 250 | field_area [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] 238 ~ [INFO] [stdout] 239 | [INFO] [stdout] 240 ~ if let Some(n) = label { [INFO] [stdout] 241 + let chunks = Layout::default() [INFO] [stdout] 242 + .direction(Direction::Horizontal) [INFO] [stdout] 243 + .constraints([Constraint::Length(10), Constraint::Min(1)]) [INFO] [stdout] 244 + .split(area); [INFO] [stdout] 245 + [INFO] [stdout] 246 + Span::raw(&format!("{}: ", n)).render(chunks[0], buf); [INFO] [stdout] 247 + chunks[1] [INFO] [stdout] 248 + } else { [INFO] [stdout] 249 + area [INFO] [stdout] 250 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the borrowed expression implements the required traits [INFO] [stdout] --> rw_ui_ratatui/src/panel/meta_panel/render.rs:244:23 [INFO] [stdout] | [INFO] [stdout] 244 | Span::raw(&format!("{}: ", n)).render(chunks[0], buf); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ help: change this to: `format!("{}: ", n)` [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: casting integer literal to `usize` is unnecessary [INFO] [stdout] --> rw_ui_ratatui/src/panel/meta_panel.rs:44:85 [INFO] [stdout] | [INFO] [stdout] 44 | let target_index = (5 + current_index).wrapping_add_signed(offset.into()) % 5 as usize; [INFO] [stdout] | ^^^^^^^^^^ help: try: `5_usize` [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: all variants have the same postfix: `Field` [INFO] [stdout] --> rw_ui_ratatui/src/panel/meta_panel.rs:241:1 [INFO] [stdout] | [INFO] [stdout] 241 | / pub enum MetadataPanelAction { [INFO] [stdout] 242 | | SelectNextField, [INFO] [stdout] 243 | | SelectPreviousField, [INFO] [stdout] 244 | | EditCurrentField, [INFO] [stdout] ... | [INFO] [stdout] 250 | | MoveRightInCurrentField, [INFO] [stdout] 251 | | } [INFO] [stdout] | |_^ [INFO] [stdout] | [INFO] [stdout] = help: remove the postfixes and use full paths to the variants instead of glob imports [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#enum_variant_names [INFO] [stdout] = note: `#[warn(clippy::enum_variant_names)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `map_or` can be simplified [INFO] [stdout] --> rw_ui_ratatui/src/panel/outliner_panel.rs:100:24 [INFO] [stdout] | [INFO] [stdout] 100 | || self [INFO] [stdout] | ________________________^ [INFO] [stdout] 101 | | .nodes [INFO] [stdout] 102 | | .get(i + 1) [INFO] [stdout] 103 | | .map_or(true, |next| next.depth < node.depth); [INFO] [stdout] | |_____________________________________________________________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_map_or [INFO] [stdout] help: use `is_none_or` instead [INFO] [stdout] | [INFO] [stdout] 103 - .map_or(true, |next| next.depth < node.depth); [INFO] [stdout] 103 + .is_none_or(|next| next.depth < node.depth); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this match could be replaced by its body itself [INFO] [stdout] --> rw_ui_ratatui/src/panel/editor_panel.rs:81:9 [INFO] [stdout] | [INFO] [stdout] 81 | / match k_ev { [INFO] [stdout] 82 | | _ => self.editor.handle_input(k_ev), [INFO] [stdout] 83 | | } [INFO] [stdout] | |_________^ help: consider using the match body instead: `self.editor.handle_input(k_ev);` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_single_binding [INFO] [stdout] = note: `#[warn(clippy::match_single_binding)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> rw_ui_ratatui/src/main.rs:141:9 [INFO] [stdout] | [INFO] [stdout] 141 | / if event::poll(std::time::Duration::from_millis(250))? { [INFO] [stdout] 142 | | if let Event::Key(k_ev) = event::read()? { [INFO] [stdout] 143 | | if let Some(action) = main_app [INFO] [stdout] 144 | | .bindings_registry [INFO] [stdout] ... | [INFO] [stdout] 160 | | } [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] 141 ~ if event::poll(std::time::Duration::from_millis(250))? [INFO] [stdout] 142 ~ && let Event::Key(k_ev) = event::read()? { [INFO] [stdout] 143 | if let Some(action) = main_app [INFO] [stdout] ... [INFO] [stdout] 158 | } [INFO] [stdout] 159 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you seem to be trying to use `match` for an equality check. Consider using `if` [INFO] [stdout] --> rw_ui_ratatui/src/main.rs:241:13 [INFO] [stdout] | [INFO] [stdout] 241 | / match self.ui_state.mode { [INFO] [stdout] 242 | | UiModes::Edit => self.ui_state.editor_panel.handle_action(action), [INFO] [stdout] 243 | | _ => {} [INFO] [stdout] 244 | | } [INFO] [stdout] | |_____________^ help: try: `if self.ui_state.mode == UiModes::Edit { self.ui_state.editor_panel.handle_action(action) }` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you should consider adding a `Default` implementation for `RustyWriter` [INFO] [stdout] --> rw_ui_ratatui/src/main.rs:257:5 [INFO] [stdout] | [INFO] [stdout] 257 | / pub fn new() -> Self { [INFO] [stdout] 258 | | let mut ui_state = UiState { [INFO] [stdout] 259 | | outline_panel: OutlinerPanel::new(mock_outliner_nodes(), 20), [INFO] [stdout] 260 | | editor_panel: EditorPanel::new(mock_main_data()), [INFO] [stdout] ... | [INFO] [stdout] 278 | | } [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] 256 + impl Default for RustyWriter { [INFO] [stdout] 257 + fn default() -> Self { [INFO] [stdout] 258 + Self::new() [INFO] [stdout] 259 + } [INFO] [stdout] 260 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing [INFO] [stdout] --> rw_ui_ratatui/src/editors/text_editor/render.rs:104:20 [INFO] [stdout] | [INFO] [stdout] 104 | pub fn to_line(&self) -> Line { [INFO] [stdout] | ^^^^^ ^^^^ the same lifetime is hidden here [INFO] [stdout] | | [INFO] [stdout] | the lifetime is elided here [INFO] [stdout] | [INFO] [stdout] = help: the same lifetime is referred to in inconsistent ways, making the signature confusing [INFO] [stdout] = note: `#[warn(mismatched_lifetime_syntaxes)]` on by default [INFO] [stdout] help: use `'_` for type paths [INFO] [stdout] | [INFO] [stdout] 104 | pub fn to_line(&self) -> Line<'_> { [INFO] [stdout] | ++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing [INFO] [stdout] --> rw_ui_ratatui/src/editors/list_selector/options_editor.rs:54:20 [INFO] [stdout] | [INFO] [stdout] 54 | pub fn to_line(&self, label: String, style: Style) -> Line { [INFO] [stdout] | ^^^^^ the lifetime is elided here ^^^^ the same lifetime is hidden here [INFO] [stdout] | [INFO] [stdout] = help: the same lifetime is referred to in inconsistent ways, making the signature confusing [INFO] [stdout] help: use `'_` for type paths [INFO] [stdout] | [INFO] [stdout] 54 | pub fn to_line(&self, label: String, style: Style) -> Line<'_> { [INFO] [stdout] | ++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing [INFO] [stdout] --> rw_ui_ratatui/src/panel.rs:53:16 [INFO] [stdout] | [INFO] [stdout] 53 | fn borders(&self, focused: bool) -> Block { [INFO] [stdout] | ^^^^^ ^^^^^ the same lifetime is hidden here [INFO] [stdout] | | [INFO] [stdout] | the lifetime is elided here [INFO] [stdout] | [INFO] [stdout] = help: the same lifetime is referred to in inconsistent ways, making the signature confusing [INFO] [stdout] help: use `'_` for type paths [INFO] [stdout] | [INFO] [stdout] 53 | fn borders(&self, focused: bool) -> Block<'_> { [INFO] [stdout] | ++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: value assigned to `count` is never read [INFO] [stdout] --> rw_ui_ratatui/src/mock.rs:85:9 [INFO] [stdout] | [INFO] [stdout] 85 | count += 1; [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: maybe it is overwritten before being read? [INFO] [stdout] = note: `#[warn(unused_assignments)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unreachable pattern [INFO] [stdout] --> rw_ui_ratatui/src/panel/meta_panel.rs:293:17 [INFO] [stdout] | [INFO] [stdout] 288 | MetaField::Title | MetaField::Synopsis | MetaField::Notes => match action { [INFO] [stdout] | --------------------------------------------------------- matches all the relevant values [INFO] [stdout] ... [INFO] [stdout] 293 | MetaField::Title => {} [INFO] [stdout] | ^^^^^^^^^^^^^^^^ no value can reach this [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unreachable_patterns)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unreachable pattern [INFO] [stdout] --> rw_ui_ratatui/src/panel/meta_panel.rs:296:17 [INFO] [stdout] | [INFO] [stdout] 288 | MetaField::Title | MetaField::Synopsis | MetaField::Notes => match action { [INFO] [stdout] | --------------------------------------------------------- matches all the relevant values [INFO] [stdout] ... [INFO] [stdout] 296 | MetaField::Synopsis => self.edit_state.synopsis.handle_action(action), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ no value can reach this [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unreachable pattern [INFO] [stdout] --> rw_ui_ratatui/src/panel/meta_panel.rs:297:17 [INFO] [stdout] | [INFO] [stdout] 288 | MetaField::Title | MetaField::Synopsis | MetaField::Notes => match action { [INFO] [stdout] | --------------------------------------------------------- matches all the relevant values [INFO] [stdout] ... [INFO] [stdout] 297 | MetaField::Notes => self.edit_state.notes.handle_action(action), [INFO] [stdout] | ^^^^^^^^^^^^^^^^ no value can reach this [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `k_ev` [INFO] [stdout] --> rw_ui_ratatui/src/panel/outliner_panel.rs:77:33 [INFO] [stdout] | [INFO] [stdout] 77 | fn handle_inputs(&mut self, k_ev: KeyEvent) -> bool { [INFO] [stdout] | ^^^^ help: if this is intentional, prefix it with an underscore: `_k_ev` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: trait `DocumentedAction` is never used [INFO] [stdout] --> rw_ui_ratatui/src/input_system.rs:19:11 [INFO] [stdout] | [INFO] [stdout] 19 | pub trait DocumentedAction { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `text` is never used [INFO] [stdout] --> rw_ui_ratatui/src/panel/editor_panel.rs:30:8 [INFO] [stdout] | [INFO] [stdout] 21 | impl EditorPanel { [INFO] [stdout] | ---------------- method in this implementation [INFO] [stdout] ... [INFO] [stdout] 30 | fn text(&self) -> String { [INFO] [stdout] | ^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: returning the result of a `let` binding from a block [INFO] [stdout] --> rw_ui_ratatui/src/editors/text_editor/wrapped_view.rs:156:9 [INFO] [stdout] | [INFO] [stdout] 143 | / let res = match self [INFO] [stdout] 144 | | .lines [INFO] [stdout] 145 | | .iter() [INFO] [stdout] 146 | | .enumerate() [INFO] [stdout] ... | [INFO] [stdout] 153 | | }), [INFO] [stdout] 154 | | }; [INFO] [stdout] | |__________- unnecessary `let` binding [INFO] [stdout] 155 | [INFO] [stdout] 156 | 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] 143 ~ [INFO] [stdout] 144 | [INFO] [stdout] 145 ~ match self [INFO] [stdout] 146 + .lines [INFO] [stdout] 147 + .iter() [INFO] [stdout] 148 + .enumerate() [INFO] [stdout] 149 + .find(|(_, e)| idx >= e.begin && idx < e.end) [INFO] [stdout] 150 + { [INFO] [stdout] 151 + Some((pos, _)) => Ok(pos), [INFO] [stdout] 152 + None => Err(ErrViews::CharIndexOutOfBounds { [INFO] [stdout] 153 + char_index: idx, [INFO] [stdout] 154 + view_last_char_index: after_last_pos, [INFO] [stdout] 155 + }), [INFO] [stdout] 156 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `map_or` can be simplified [INFO] [stdout] --> rw_ui_ratatui/src/editors/text_editor.rs:209:12 [INFO] [stdout] | [INFO] [stdout] 209 | if self [INFO] [stdout] | ____________^ [INFO] [stdout] 210 | | .max_len [INFO] [stdout] 211 | | .map_or(true, |max| self.buffer.len_chars() < max) [INFO] [stdout] | |______________________________________________________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_map_or [INFO] [stdout] = note: `#[warn(clippy::unnecessary_map_or)]` on by default [INFO] [stdout] help: use `is_none_or` instead [INFO] [stdout] | [INFO] [stdout] 211 - .map_or(true, |max| self.buffer.len_chars() < max) [INFO] [stdout] 211 + .is_none_or(|max| self.buffer.len_chars() < max) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` can be collapsed into the outer `match` [INFO] [stdout] --> rw_ui_ratatui/src/editors/text_editor.rs:227:17 [INFO] [stdout] | [INFO] [stdout] 227 | / if self.cursor > 0 { [INFO] [stdout] 228 | | self.cursor -= 1; [INFO] [stdout] 229 | | } [INFO] [stdout] | |_________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_match [INFO] [stdout] = note: `#[warn(clippy::collapsible_match)]` on by default [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 226 ~ CursorMove::Left [INFO] [stdout] 227 ~ if self.cursor > 0 => { [INFO] [stdout] 228 | self.cursor -= 1; [INFO] [stdout] 229 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` can be collapsed into the outer `match` [INFO] [stdout] --> rw_ui_ratatui/src/editors/text_editor.rs:232:17 [INFO] [stdout] | [INFO] [stdout] 232 | / if self.cursor < self.buffer.len_chars() { [INFO] [stdout] 233 | | self.cursor += 1; [INFO] [stdout] 234 | | } [INFO] [stdout] | |_________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_match [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 231 ~ CursorMove::Right [INFO] [stdout] 232 ~ if self.cursor < self.buffer.len_chars() => { [INFO] [stdout] 233 | self.cursor += 1; [INFO] [stdout] 234 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual implementation of an assign operation [INFO] [stdout] --> rw_ui_ratatui/src/editors/list_selector/dropdown.rs:47:13 [INFO] [stdout] | [INFO] [stdout] 47 | / self.scroll_window_start = [INFO] [stdout] 48 | | self.scroll_window_start - (self.scroll_window_end - last_option); [INFO] [stdout] | |_________________________________________________________________________________^ help: replace it with: `self.scroll_window_start -= (self.scroll_window_end - last_option)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stdout] = note: `#[warn(clippy::assign_op_pattern)]` 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] --> rw_ui_ratatui/src/editors/list_selector/dropdown.rs:92:18 [INFO] [stdout] | [INFO] [stdout] 92 | options: &Vec, [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stdout] = note: `#[warn(clippy::ptr_arg)]` on by default [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 92 - options: &Vec, [INFO] [stdout] 92 + options: &[String], [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> rw_ui_ratatui/src/editors/list_selector/dropdown.rs:129:55 [INFO] [stdout] | [INFO] [stdout] 129 | let prefix = if selected.contains(&i) { "✔ " } else { " " }; [INFO] [stdout] | ^^ help: change this to: `i` [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: use of `default` to create a unit struct [INFO] [stdout] --> rw_ui_ratatui/src/editors/list_selector/dropdown.rs:147:9 [INFO] [stdout] | [INFO] [stdout] 147 | Clear::default().render(self.area, buf); [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#default_constructed_unit_structs [INFO] [stdout] = note: `#[warn(clippy::default_constructed_unit_structs)]` on by default [INFO] [stdout] help: remove this call to `default` [INFO] [stdout] | [INFO] [stdout] 147 - Clear::default().render(self.area, buf); [INFO] [stdout] 147 + Clear.render(self.area, buf); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `if let .. else` expression looks like `matches!` macro [INFO] [stdout] --> rw_ui_ratatui/src/editors/list_selector/options_editor.rs:18:9 [INFO] [stdout] | [INFO] [stdout] 18 | / if let Self::Disabled = self { [INFO] [stdout] 19 | | false [INFO] [stdout] 20 | | } else { [INFO] [stdout] 21 | | true [INFO] [stdout] 22 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_like_matches_macro [INFO] [stdout] = note: `#[warn(clippy::match_like_matches_macro)]` on by default [INFO] [stdout] help: use `matches!` directly [INFO] [stdout] | [INFO] [stdout] 18 - if let Self::Disabled = self { [INFO] [stdout] 19 - false [INFO] [stdout] 20 - } else { [INFO] [stdout] 21 - true [INFO] [stdout] 22 - } [INFO] [stdout] 18 + !matches!(self, Self::Disabled) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: match expression looks like `matches!` macro [INFO] [stdout] --> rw_ui_ratatui/src/editors/list_selector/selection_mode.rs:31:9 [INFO] [stdout] | [INFO] [stdout] 31 | / match self { [INFO] [stdout] 32 | | Self::Single(_) => true, [INFO] [stdout] 33 | | _ => false, [INFO] [stdout] 34 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_like_matches_macro [INFO] [stdout] help: use `matches!` directly [INFO] [stdout] | [INFO] [stdout] 31 - match self { [INFO] [stdout] 32 - Self::Single(_) => true, [INFO] [stdout] 33 - _ => false, [INFO] [stdout] 34 - } [INFO] [stdout] 31 + matches!(self, Self::Single(_)) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: match expression looks like `matches!` macro [INFO] [stdout] --> rw_ui_ratatui/src/editors/list_selector/selection_mode.rs:38:9 [INFO] [stdout] | [INFO] [stdout] 38 | / match self { [INFO] [stdout] 39 | | Self::Multi(_) => true, [INFO] [stdout] 40 | | _ => false, [INFO] [stdout] 41 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_like_matches_macro [INFO] [stdout] help: use `matches!` directly [INFO] [stdout] | [INFO] [stdout] 38 - match self { [INFO] [stdout] 39 - Self::Multi(_) => true, [INFO] [stdout] 40 - _ => false, [INFO] [stdout] 41 - } [INFO] [stdout] 38 + matches!(self, Self::Multi(_)) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&Vec` instead of `&[_]` involves a new object where a slice will do [INFO] [stdout] --> rw_ui_ratatui/src/editors/list_selector.rs:202:18 [INFO] [stdout] | [INFO] [stdout] 202 | options: &Vec, [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 202 - options: &Vec, [INFO] [stdout] 202 + options: &[String], [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&Vec` instead of `&[_]` involves a new object where a slice will do [INFO] [stdout] --> rw_ui_ratatui/src/editors/list_selector.rs:220:18 [INFO] [stdout] | [INFO] [stdout] 220 | options: &Vec, [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 220 - options: &Vec, [INFO] [stdout] 220 + options: &[String], [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `.into_iter()` call is equivalent to `.iter()` and will not consume the `BTreeSet` [INFO] [stdout] --> rw_ui_ratatui/src/editors/list_selector.rs:226:46 [INFO] [stdout] | [INFO] [stdout] 226 | SelectionMode::Multi(idx_set.into_iter().map(|i| options[*i].clone()).collect()) [INFO] [stdout] | ^^^^^^^^^ help: call directly: `iter` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#into_iter_on_ref [INFO] [stdout] = note: `#[warn(clippy::into_iter_on_ref)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods with the following characteristics: (`to_*` and `self` type is not `Copy`) usually take `self` by reference [INFO] [stdout] --> rw_ui_ratatui/src/editors.rs:52:23 [INFO] [stdout] | [INFO] [stdout] 52 | pub fn to_editing(&mut self) { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: consider choosing a less ambiguous name [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#wrong_self_convention [INFO] [stdout] = note: `#[warn(clippy::wrong_self_convention)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you seem to be trying to use `match` for an equality check. Consider using `if` [INFO] [stdout] --> rw_ui_ratatui/src/editors.rs:53:9 [INFO] [stdout] | [INFO] [stdout] 53 | / match self { [INFO] [stdout] 54 | | Self::Focused => *self = Self::Editing, [INFO] [stdout] 55 | | _ => {} [INFO] [stdout] 56 | | }; [INFO] [stdout] | |_________^ help: try: `if self == &Self::Focused { *self = Self::Editing }` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stdout] = note: `#[warn(clippy::single_match)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods with the following characteristics: (`to_*` and `self` type is not `Copy`) usually take `self` by reference [INFO] [stdout] --> rw_ui_ratatui/src/editors.rs:59:23 [INFO] [stdout] | [INFO] [stdout] 59 | pub fn to_focused(&mut self) { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: consider choosing a less ambiguous name [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#wrong_self_convention [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods with the following characteristics: (`to_*` and `self` type is not `Copy`) usually take `self` by reference [INFO] [stdout] --> rw_ui_ratatui/src/editors.rs:66:23 [INFO] [stdout] | [INFO] [stdout] 66 | pub fn to_default(&mut self) { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: consider choosing a less ambiguous name [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#wrong_self_convention [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you seem to be trying to use `match` for an equality check. Consider using `if` [INFO] [stdout] --> rw_ui_ratatui/src/editors.rs:67:9 [INFO] [stdout] | [INFO] [stdout] 67 | / match self { [INFO] [stdout] 68 | | Self::Focused => *self = Self::Default, [INFO] [stdout] 69 | | _ => {} [INFO] [stdout] 70 | | } [INFO] [stdout] | |_________^ help: try: `if self == &Self::Focused { *self = Self::Default }` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: match expression looks like `matches!` macro [INFO] [stdout] --> rw_ui_ratatui/src/input_system.rs:85:9 [INFO] [stdout] | [INFO] [stdout] 85 | / match *self { [INFO] [stdout] 86 | | RwAction::Global(_) => true, [INFO] [stdout] 87 | | _ => false, [INFO] [stdout] 88 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_like_matches_macro [INFO] [stdout] help: use `matches!` directly [INFO] [stdout] | [INFO] [stdout] 85 - match *self { [INFO] [stdout] 86 - RwAction::Global(_) => true, [INFO] [stdout] 87 - _ => false, [INFO] [stdout] 88 - } [INFO] [stdout] 85 + matches!(*self, RwAction::Global(_)) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you seem to be trying to use `match` for destructuring a single pattern. Consider using `if let` [INFO] [stdout] --> rw_ui_ratatui/src/input_system.rs:130:13 [INFO] [stdout] | [INFO] [stdout] 130 | / match context.use_direct_char(c) { [INFO] [stdout] 131 | | Some(a) => return Some(a), [INFO] [stdout] 132 | | _ => {} [INFO] [stdout] 133 | | } [INFO] [stdout] | |_____________^ help: try: `if let Some(a) = context.use_direct_char(c) { return Some(a) }` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` has identical blocks [INFO] [stdout] --> rw_ui_ratatui/src/input_system.rs:137:81 [INFO] [stdout] | [INFO] [stdout] 137 | if act.get_context() == ActionContext::Global && key_event == *k_ev { [INFO] [stdout] | _________________________________________________________________________________^ [INFO] [stdout] 138 | | Some(*act) [INFO] [stdout] 139 | | } else if act.get_context() == context && key_event == *k_ev { [INFO] [stdout] | |_____________^ [INFO] [stdout] | [INFO] [stdout] note: same as this [INFO] [stdout] --> rw_ui_ratatui/src/input_system.rs:139:74 [INFO] [stdout] | [INFO] [stdout] 139 | } else if act.get_context() == context && key_event == *k_ev { [INFO] [stdout] | __________________________________________________________________________^ [INFO] [stdout] 140 | | Some(*act) [INFO] [stdout] 141 | | } else { [INFO] [stdout] | |_____________^ [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#if_same_then_else [INFO] [stdout] = note: `#[warn(clippy::if_same_then_else)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `impl` can be derived [INFO] [stdout] --> rw_ui_ratatui/src/input_system.rs:148:1 [INFO] [stdout] | [INFO] [stdout] 148 | / impl Default for BindingsRegistry { [INFO] [stdout] 149 | | fn default() -> Self { [INFO] [stdout] 150 | | Self { [INFO] [stdout] 151 | | bindings: HashMap::new(), [INFO] [stdout] ... | [INFO] [stdout] 154 | | } [INFO] [stdout] | |_^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#derivable_impls [INFO] [stdout] = note: `#[warn(clippy::derivable_impls)]` on by default [INFO] [stdout] help: replace the manual implementation with a derive attribute [INFO] [stdout] | [INFO] [stdout] 104 + #[derive(Default)] [INFO] [stdout] 105 | pub struct BindingsRegistry { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: returning the result of a `let` binding from a block [INFO] [stdout] --> rw_ui_ratatui/src/panel/meta_panel/render.rs:250:9 [INFO] [stdout] | [INFO] [stdout] 238 | / let field_area = if let Some(n) = label { [INFO] [stdout] 239 | | let chunks = Layout::default() [INFO] [stdout] 240 | | .direction(Direction::Horizontal) [INFO] [stdout] 241 | | .constraints([Constraint::Length(10), Constraint::Min(1)]) [INFO] [stdout] ... | [INFO] [stdout] 247 | | area [INFO] [stdout] 248 | | }; [INFO] [stdout] | |__________- unnecessary `let` binding [INFO] [stdout] 249 | [INFO] [stdout] 250 | field_area [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] 238 ~ [INFO] [stdout] 239 | [INFO] [stdout] 240 ~ if let Some(n) = label { [INFO] [stdout] 241 + let chunks = Layout::default() [INFO] [stdout] 242 + .direction(Direction::Horizontal) [INFO] [stdout] 243 + .constraints([Constraint::Length(10), Constraint::Min(1)]) [INFO] [stdout] 244 + .split(area); [INFO] [stdout] 245 + [INFO] [stdout] 246 + Span::raw(&format!("{}: ", n)).render(chunks[0], buf); [INFO] [stdout] 247 + chunks[1] [INFO] [stdout] 248 + } else { [INFO] [stdout] 249 + area [INFO] [stdout] 250 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the borrowed expression implements the required traits [INFO] [stdout] --> rw_ui_ratatui/src/panel/meta_panel/render.rs:244:23 [INFO] [stdout] | [INFO] [stdout] 244 | Span::raw(&format!("{}: ", n)).render(chunks[0], buf); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ help: change this to: `format!("{}: ", n)` [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: casting integer literal to `usize` is unnecessary [INFO] [stdout] --> rw_ui_ratatui/src/panel/meta_panel.rs:44:85 [INFO] [stdout] | [INFO] [stdout] 44 | let target_index = (5 + current_index).wrapping_add_signed(offset.into()) % 5 as usize; [INFO] [stdout] | ^^^^^^^^^^ help: try: `5_usize` [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: all variants have the same postfix: `Field` [INFO] [stdout] --> rw_ui_ratatui/src/panel/meta_panel.rs:241:1 [INFO] [stdout] | [INFO] [stdout] 241 | / pub enum MetadataPanelAction { [INFO] [stdout] 242 | | SelectNextField, [INFO] [stdout] 243 | | SelectPreviousField, [INFO] [stdout] 244 | | EditCurrentField, [INFO] [stdout] ... | [INFO] [stdout] 250 | | MoveRightInCurrentField, [INFO] [stdout] 251 | | } [INFO] [stdout] | |_^ [INFO] [stdout] | [INFO] [stdout] = help: remove the postfixes and use full paths to the variants instead of glob imports [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#enum_variant_names [INFO] [stdout] = note: `#[warn(clippy::enum_variant_names)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `map_or` can be simplified [INFO] [stdout] --> rw_ui_ratatui/src/panel/outliner_panel.rs:100:24 [INFO] [stdout] | [INFO] [stdout] 100 | || self [INFO] [stdout] | ________________________^ [INFO] [stdout] 101 | | .nodes [INFO] [stdout] 102 | | .get(i + 1) [INFO] [stdout] 103 | | .map_or(true, |next| next.depth < node.depth); [INFO] [stdout] | |_____________________________________________________________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_map_or [INFO] [stdout] help: use `is_none_or` instead [INFO] [stdout] | [INFO] [stdout] 103 - .map_or(true, |next| next.depth < node.depth); [INFO] [stdout] 103 + .is_none_or(|next| next.depth < node.depth); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this match could be replaced by its body itself [INFO] [stdout] --> rw_ui_ratatui/src/panel/editor_panel.rs:81:9 [INFO] [stdout] | [INFO] [stdout] 81 | / match k_ev { [INFO] [stdout] 82 | | _ => self.editor.handle_input(k_ev), [INFO] [stdout] 83 | | } [INFO] [stdout] | |_________^ help: consider using the match body instead: `self.editor.handle_input(k_ev);` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_single_binding [INFO] [stdout] = note: `#[warn(clippy::match_single_binding)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> rw_ui_ratatui/src/main.rs:141:9 [INFO] [stdout] | [INFO] [stdout] 141 | / if event::poll(std::time::Duration::from_millis(250))? { [INFO] [stdout] 142 | | if let Event::Key(k_ev) = event::read()? { [INFO] [stdout] 143 | | if let Some(action) = main_app [INFO] [stdout] 144 | | .bindings_registry [INFO] [stdout] ... | [INFO] [stdout] 160 | | } [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] 141 ~ if event::poll(std::time::Duration::from_millis(250))? [INFO] [stdout] 142 ~ && let Event::Key(k_ev) = event::read()? { [INFO] [stdout] 143 | if let Some(action) = main_app [INFO] [stdout] ... [INFO] [stdout] 158 | } [INFO] [stdout] 159 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you seem to be trying to use `match` for an equality check. Consider using `if` [INFO] [stdout] --> rw_ui_ratatui/src/main.rs:241:13 [INFO] [stdout] | [INFO] [stdout] 241 | / match self.ui_state.mode { [INFO] [stdout] 242 | | UiModes::Edit => self.ui_state.editor_panel.handle_action(action), [INFO] [stdout] 243 | | _ => {} [INFO] [stdout] 244 | | } [INFO] [stdout] | |_____________^ help: try: `if self.ui_state.mode == UiModes::Edit { self.ui_state.editor_panel.handle_action(action) }` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you should consider adding a `Default` implementation for `RustyWriter` [INFO] [stdout] --> rw_ui_ratatui/src/main.rs:257:5 [INFO] [stdout] | [INFO] [stdout] 257 | / pub fn new() -> Self { [INFO] [stdout] 258 | | let mut ui_state = UiState { [INFO] [stdout] 259 | | outline_panel: OutlinerPanel::new(mock_outliner_nodes(), 20), [INFO] [stdout] 260 | | editor_panel: EditorPanel::new(mock_main_data()), [INFO] [stdout] ... | [INFO] [stdout] 278 | | } [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] 256 + impl Default for RustyWriter { [INFO] [stdout] 257 + fn default() -> Self { [INFO] [stdout] 258 + Self::new() [INFO] [stdout] 259 + } [INFO] [stdout] 260 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing [INFO] [stdout] --> rw_ui_ratatui/src/editors/text_editor/render.rs:104:20 [INFO] [stdout] | [INFO] [stdout] 104 | pub fn to_line(&self) -> Line { [INFO] [stdout] | ^^^^^ ^^^^ the same lifetime is hidden here [INFO] [stdout] | | [INFO] [stdout] | the lifetime is elided here [INFO] [stdout] | [INFO] [stdout] = help: the same lifetime is referred to in inconsistent ways, making the signature confusing [INFO] [stdout] = note: `#[warn(mismatched_lifetime_syntaxes)]` on by default [INFO] [stdout] help: use `'_` for type paths [INFO] [stdout] | [INFO] [stdout] 104 | pub fn to_line(&self) -> Line<'_> { [INFO] [stdout] | ++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing [INFO] [stdout] --> rw_ui_ratatui/src/editors/list_selector/options_editor.rs:54:20 [INFO] [stdout] | [INFO] [stdout] 54 | pub fn to_line(&self, label: String, style: Style) -> Line { [INFO] [stdout] | ^^^^^ the lifetime is elided here ^^^^ the same lifetime is hidden here [INFO] [stdout] | [INFO] [stdout] = help: the same lifetime is referred to in inconsistent ways, making the signature confusing [INFO] [stdout] help: use `'_` for type paths [INFO] [stdout] | [INFO] [stdout] 54 | pub fn to_line(&self, label: String, style: Style) -> Line<'_> { [INFO] [stdout] | ++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing [INFO] [stdout] --> rw_ui_ratatui/src/panel.rs:53:16 [INFO] [stdout] | [INFO] [stdout] 53 | fn borders(&self, focused: bool) -> Block { [INFO] [stdout] | ^^^^^ ^^^^^ the same lifetime is hidden here [INFO] [stdout] | | [INFO] [stdout] | the lifetime is elided here [INFO] [stdout] | [INFO] [stdout] = help: the same lifetime is referred to in inconsistent ways, making the signature confusing [INFO] [stdout] help: use `'_` for type paths [INFO] [stdout] | [INFO] [stdout] 53 | fn borders(&self, focused: bool) -> Block<'_> { [INFO] [stdout] | ++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] Checking sycamore-web v0.8.2 [INFO] [stderr] Checking sycamore v0.8.2 [INFO] [stderr] Checking rw_ui_sycamore v0.1.0 (/opt/rustwide/workdir/rw_ui_sycamore) [INFO] [stdout] warning: you seem to be trying to use `match` for destructuring a single pattern. Consider using `if let` [INFO] [stdout] --> rw_ui_sycamore/src/editor.rs:7:9 [INFO] [stdout] | [INFO] [stdout] 7 | / match nodes.get(i) { [INFO] [stdout] 8 | | Some(n) => { [INFO] [stdout] 9 | | if n.node_name() == "DIV".to_string() && i != 0 { [INFO] [stdout] 10 | | final_string.push_str("\n"); [INFO] [stdout] ... | [INFO] [stdout] 24 | | None => {} [INFO] [stdout] 25 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stdout] = note: `#[warn(clippy::single_match)]` on by default [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 7 ~ if let Some(n) = nodes.get(i) { [INFO] [stdout] 8 + if n.node_name() == "DIV".to_string() && i != 0 { [INFO] [stdout] 9 + final_string.push_str("\n"); [INFO] [stdout] 10 + } [INFO] [stdout] 11 + [INFO] [stdout] 12 + if n.node_type() == 3 && n.text_content().is_some() { [INFO] [stdout] 13 + match &n.text_content() { [INFO] [stdout] 14 + Some(text) => final_string.push_str(&text), [INFO] [stdout] 15 + None => {} [INFO] [stdout] 16 + } [INFO] [stdout] 17 + } [INFO] [stdout] 18 + [INFO] [stdout] 19 + if n.child_nodes().length() > 0 { [INFO] [stdout] 20 + final_string.push_str(&add_linebreaks(n.child_nodes())) [INFO] [stdout] 21 + } [INFO] [stdout] 22 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this creates an owned instance just for comparison [INFO] [stdout] --> rw_ui_sycamore/src/editor.rs:9:37 [INFO] [stdout] | [INFO] [stdout] 9 | if n.node_name() == "DIV".to_string() && i != 0 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ help: try: `"DIV"` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cmp_owned [INFO] [stdout] = note: `#[warn(clippy::cmp_owned)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: calling `push_str()` using a single-character string literal [INFO] [stdout] --> rw_ui_sycamore/src/editor.rs:10:21 [INFO] [stdout] | [INFO] [stdout] 10 | final_string.push_str("\n"); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using `push` with a character literal: `final_string.push('\n')` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_char_add_str [INFO] [stdout] = note: `#[warn(clippy::single_char_add_str)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you seem to be trying to use `match` for destructuring a single pattern. Consider using `if let` [INFO] [stdout] --> rw_ui_sycamore/src/editor.rs:14:21 [INFO] [stdout] | [INFO] [stdout] 14 | / match &n.text_content() { [INFO] [stdout] 15 | | Some(text) => final_string.push_str(&text), [INFO] [stdout] 16 | | None => {} [INFO] [stdout] 17 | | } [INFO] [stdout] | |_____________________^ help: try: `if let Some(text) = &n.text_content() { final_string.push_str(&text) }` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> rw_ui_sycamore/src/editor.rs:15:61 [INFO] [stdout] | [INFO] [stdout] 15 | Some(text) => final_string.push_str(&text), [INFO] [stdout] | ^^^^^ help: change this to: `text` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] = note: `#[warn(clippy::needless_borrow)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you seem to be trying to use `match` for destructuring a single pattern. Consider using `if let` [INFO] [stdout] --> rw_ui_sycamore/src/editor.rs:7:9 [INFO] [stdout] | [INFO] [stdout] 7 | / match nodes.get(i) { [INFO] [stdout] 8 | | Some(n) => { [INFO] [stdout] 9 | | if n.node_name() == "DIV".to_string() && i != 0 { [INFO] [stdout] 10 | | final_string.push_str("\n"); [INFO] [stdout] ... | [INFO] [stdout] 24 | | None => {} [INFO] [stdout] 25 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stdout] = note: `#[warn(clippy::single_match)]` on by default [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 7 ~ if let Some(n) = nodes.get(i) { [INFO] [stdout] 8 + if n.node_name() == "DIV".to_string() && i != 0 { [INFO] [stdout] 9 + final_string.push_str("\n"); [INFO] [stdout] 10 + } [INFO] [stdout] 11 + [INFO] [stdout] 12 + if n.node_type() == 3 && n.text_content().is_some() { [INFO] [stdout] 13 + match &n.text_content() { [INFO] [stdout] 14 + Some(text) => final_string.push_str(&text), [INFO] [stdout] 15 + None => {} [INFO] [stdout] 16 + } [INFO] [stdout] 17 + } [INFO] [stdout] 18 + [INFO] [stdout] 19 + if n.child_nodes().length() > 0 { [INFO] [stdout] 20 + final_string.push_str(&add_linebreaks(n.child_nodes())) [INFO] [stdout] 21 + } [INFO] [stdout] 22 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this creates an owned instance just for comparison [INFO] [stdout] --> rw_ui_sycamore/src/editor.rs:9:37 [INFO] [stdout] | [INFO] [stdout] 9 | if n.node_name() == "DIV".to_string() && i != 0 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ help: try: `"DIV"` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cmp_owned [INFO] [stdout] = note: `#[warn(clippy::cmp_owned)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: calling `push_str()` using a single-character string literal [INFO] [stdout] --> rw_ui_sycamore/src/editor.rs:10:21 [INFO] [stdout] | [INFO] [stdout] 10 | final_string.push_str("\n"); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using `push` with a character literal: `final_string.push('\n')` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_char_add_str [INFO] [stdout] = note: `#[warn(clippy::single_char_add_str)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you seem to be trying to use `match` for destructuring a single pattern. Consider using `if let` [INFO] [stdout] --> rw_ui_sycamore/src/editor.rs:14:21 [INFO] [stdout] | [INFO] [stdout] 14 | / match &n.text_content() { [INFO] [stdout] 15 | | Some(text) => final_string.push_str(&text), [INFO] [stdout] 16 | | None => {} [INFO] [stdout] 17 | | } [INFO] [stdout] | |_____________________^ help: try: `if let Some(text) = &n.text_content() { final_string.push_str(&text) }` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> rw_ui_sycamore/src/editor.rs:15:61 [INFO] [stdout] | [INFO] [stdout] 15 | Some(text) => final_string.push_str(&text), [INFO] [stdout] | ^^^^^ help: change this to: `text` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] = note: `#[warn(clippy::needless_borrow)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> rw_ui_sycamore/src/outline/mod.rs:86:9 [INFO] [stdout] | [INFO] [stdout] 86 | / if let Some(selection) = (*state.selected_entry.get()).clone() { [INFO] [stdout] 87 | | if selection.entry.id == entry.id { [INFO] [stdout] 88 | | new_type_class = format!("{}--selected", new_type_class); [INFO] [stdout] 89 | | new_title_class = format!("{}--selected", new_title_class); [INFO] [stdout] 90 | | } [INFO] [stdout] 91 | | } [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] 86 ~ if let Some(selection) = (*state.selected_entry.get()).clone() [INFO] [stdout] 87 ~ && selection.entry.id == entry.id { [INFO] [stdout] 88 | new_type_class = format!("{}--selected", new_type_class); [INFO] [stdout] 89 | new_title_class = format!("{}--selected", new_title_class); [INFO] [stdout] 90 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded unit return type [INFO] [stdout] --> rw_ui_sycamore/src/outline/mod.rs:122:17 [INFO] [stdout] | [INFO] [stdout] 122 | F: Fn(Event) -> () + 'a + Clone, [INFO] [stdout] | ^^^^^^ help: remove the `-> ()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_unit [INFO] [stdout] = note: `#[warn(clippy::unused_unit)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> rw_ui_sycamore/src/outline/mod.rs:86:9 [INFO] [stdout] | [INFO] [stdout] 86 | / if let Some(selection) = (*state.selected_entry.get()).clone() { [INFO] [stdout] 87 | | if selection.entry.id == entry.id { [INFO] [stdout] 88 | | new_type_class = format!("{}--selected", new_type_class); [INFO] [stdout] 89 | | new_title_class = format!("{}--selected", new_title_class); [INFO] [stdout] 90 | | } [INFO] [stdout] 91 | | } [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] 86 ~ if let Some(selection) = (*state.selected_entry.get()).clone() [INFO] [stdout] 87 ~ && selection.entry.id == entry.id { [INFO] [stdout] 88 | new_type_class = format!("{}--selected", new_type_class); [INFO] [stdout] 89 | new_title_class = format!("{}--selected", new_title_class); [INFO] [stdout] 90 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded unit return type [INFO] [stdout] --> rw_ui_sycamore/src/outline/mod.rs:122:17 [INFO] [stdout] | [INFO] [stdout] 122 | F: Fn(Event) -> () + 'a + Clone, [INFO] [stdout] | ^^^^^^ help: remove the `-> ()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_unit [INFO] [stdout] = note: `#[warn(clippy::unused_unit)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> rw_ui_sycamore/src/state.rs:199:25 [INFO] [stdout] | [INFO] [stdout] 199 | None => return (), [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] 199 - None => return (), [INFO] [stdout] 199 + None => (), [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `()` [INFO] [stdout] --> rw_ui_sycamore/src/state.rs:148:20 [INFO] [stdout] | [INFO] [stdout] 148 | return (); [INFO] [stdout] | ^^ help: remove the `()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_unit [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `()` [INFO] [stdout] --> rw_ui_sycamore/src/state.rs:164:32 [INFO] [stdout] | [INFO] [stdout] 164 | return (); [INFO] [stdout] | ^^ help: remove the `()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_unit [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `()` [INFO] [stdout] --> rw_ui_sycamore/src/state.rs:199:32 [INFO] [stdout] | [INFO] [stdout] 199 | None => return (), [INFO] [stdout] | ^^ help: remove the `()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_unit [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you seem to be trying to pop elements from a `Vec` in a loop [INFO] [stdout] --> rw_ui_sycamore/src/state.rs:232:21 [INFO] [stdout] | [INFO] [stdout] 232 | let current = e_stack.pop().unwrap(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_while_let_some [INFO] [stdout] = note: `#[warn(clippy::manual_while_let_some)]` on by default [INFO] [stdout] help: consider using a `while..let` loop [INFO] [stdout] | [INFO] [stdout] 231 ~ while let Some(current) = e_stack.pop() { [INFO] [stdout] 232 ~ [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> rw_ui_sycamore/src/tool_bar.rs:49:9 [INFO] [stdout] | [INFO] [stdout] 49 | / if let Some(files) = open_element.files() { [INFO] [stdout] 50 | | if let Some(file) = files.get(0) { [INFO] [stdout] 51 | | spawn_local_scoped(cx, async move { [INFO] [stdout] 52 | | let state = use_context::(cx); [INFO] [stdout] ... | [INFO] [stdout] 63 | | } [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] 49 ~ if let Some(files) = open_element.files() [INFO] [stdout] 50 ~ && let Some(file) = files.get(0) { [INFO] [stdout] 51 | spawn_local_scoped(cx, async move { [INFO] [stdout] ... [INFO] [stdout] 61 | }); [INFO] [stdout] 62 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> rw_ui_sycamore/src/state.rs:199:25 [INFO] [stdout] | [INFO] [stdout] 199 | None => return (), [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] 199 - None => return (), [INFO] [stdout] 199 + None => (), [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `()` [INFO] [stdout] --> rw_ui_sycamore/src/state.rs:148:20 [INFO] [stdout] | [INFO] [stdout] 148 | return (); [INFO] [stdout] | ^^ help: remove the `()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_unit [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `()` [INFO] [stdout] --> rw_ui_sycamore/src/state.rs:164:32 [INFO] [stdout] | [INFO] [stdout] 164 | return (); [INFO] [stdout] | ^^ help: remove the `()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_unit [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `()` [INFO] [stdout] --> rw_ui_sycamore/src/state.rs:199:32 [INFO] [stdout] | [INFO] [stdout] 199 | None => return (), [INFO] [stdout] | ^^ help: remove the `()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_unit [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you seem to be trying to pop elements from a `Vec` in a loop [INFO] [stdout] --> rw_ui_sycamore/src/state.rs:232:21 [INFO] [stdout] | [INFO] [stdout] 232 | let current = e_stack.pop().unwrap(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_while_let_some [INFO] [stdout] = note: `#[warn(clippy::manual_while_let_some)]` on by default [INFO] [stdout] help: consider using a `while..let` loop [INFO] [stdout] | [INFO] [stdout] 231 ~ while let Some(current) = e_stack.pop() { [INFO] [stdout] 232 ~ [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> rw_ui_sycamore/src/tool_bar.rs:49:9 [INFO] [stdout] | [INFO] [stdout] 49 | / if let Some(files) = open_element.files() { [INFO] [stdout] 50 | | if let Some(file) = files.get(0) { [INFO] [stdout] 51 | | spawn_local_scoped(cx, async move { [INFO] [stdout] 52 | | let state = use_context::(cx); [INFO] [stdout] ... | [INFO] [stdout] 63 | | } [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] 49 ~ if let Some(files) = open_element.files() [INFO] [stdout] 50 ~ && let Some(file) = files.get(0) { [INFO] [stdout] 51 | spawn_local_scoped(cx, async move { [INFO] [stdout] ... [INFO] [stdout] 61 | }); [INFO] [stdout] 62 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] Finished `dev` profile [unoptimized + debuginfo] target(s) in 32.67s [INFO] running `Command { std: "docker" "inspect" "6cf668ecbd10eb8ceeae60c214b7977f52448b5bfad81ba2a2bfb95f5c059da6", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "6cf668ecbd10eb8ceeae60c214b7977f52448b5bfad81ba2a2bfb95f5c059da6", kill_on_drop: false }` [INFO] [stdout] 6cf668ecbd10eb8ceeae60c214b7977f52448b5bfad81ba2a2bfb95f5c059da6