[INFO] fetching crate md_converter 0.9.7... [INFO] linting md_converter-0.9.7 against nightly for clippy-nonminimal_bool-denied [INFO] extracting crate md_converter 0.9.7 into /workspace/builds/worker-6-tc1/source [INFO] started tweaking crates.io crate md_converter 0.9.7 [INFO] finished tweaking crates.io crate md_converter 0.9.7 [INFO] tweaked toml for crates.io crate md_converter 0.9.7 written to /workspace/builds/worker-6-tc1/source/Cargo.toml [INFO] validating manifest of crates.io crate md_converter 0.9.7 on toolchain nightly [INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+nightly" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }` [INFO] crate crates.io crate md_converter 0.9.7 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] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-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] b49252a65c160ec9e13706565796142c3b859225e793f0b2421294efeaf4dc94 [INFO] running `Command { std: "docker" "start" "-a" "b49252a65c160ec9e13706565796142c3b859225e793f0b2421294efeaf4dc94", kill_on_drop: false }` [INFO] running `Command { std: "docker" "inspect" "b49252a65c160ec9e13706565796142c3b859225e793f0b2421294efeaf4dc94", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "b49252a65c160ec9e13706565796142c3b859225e793f0b2421294efeaf4dc94", kill_on_drop: false }` [INFO] [stdout] b49252a65c160ec9e13706565796142c3b859225e793f0b2421294efeaf4dc94 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-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] f0e95ac1a79a4e4dda3277e8c706a57cdbbf4b930994c352c988790c13d50cf5 [INFO] running `Command { std: "docker" "start" "-a" "f0e95ac1a79a4e4dda3277e8c706a57cdbbf4b930994c352c988790c13d50cf5", kill_on_drop: false }` [INFO] [stderr] Checking md_converter v0.9.7 (/opt/rustwide/workdir) [INFO] [stdout] warning: use of deprecated method `std::slice::::connect`: renamed to join [INFO] [stdout] --> src/converter/headers.rs:6:18 [INFO] [stdout] | [INFO] [stdout] 6 | res[1..].connect(" "), [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(deprecated)]` on by default [INFO] [stdout] help: replace the use of the deprecated method [INFO] [stdout] | [INFO] [stdout] 6 - res[1..].connect(" "), [INFO] [stdout] 6 + res[1..].join(" "), [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `md` [INFO] [stdout] --> src/converter/blockquote_horizontal_rules.rs:8:29 [INFO] [stdout] | [INFO] [stdout] 8 | pub fn maek_horizontal_rule(md: &str) -> String { [INFO] [stdout] | ^^ help: if this is intentional, prefix it with an underscore: `_md` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/converter/code_blocks.rs:3:24 [INFO] [stdout] | [INFO] [stdout] 3 | pub fn make_code_block(mut md: &str) -> String { [INFO] [stdout] | ----^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `x` [INFO] [stdout] --> src/converter/lists.rs:76:14 [INFO] [stdout] | [INFO] [stdout] 76 | Some(x) => true, [INFO] [stdout] | ^ help: if this is intentional, prefix it with an underscore: `_x` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/converter/lists.rs:106:36 [INFO] [stdout] | [INFO] [stdout] 106 | pub fn is_same_list(current: &str, mut previus: &str) -> bool { [INFO] [stdout] | ----^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/lib.rs:21:13 [INFO] [stdout] | [INFO] [stdout] 21 | let mut last_li_index: usize = 1; [INFO] [stdout] | ----^^^^^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `last_li_index` [INFO] [stdout] --> src/lib.rs:21:13 [INFO] [stdout] | [INFO] [stdout] 21 | let mut last_li_index: usize = 1; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_last_li_index` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `maek_horizontal_rule` is never used [INFO] [stdout] --> src/converter/blockquote_horizontal_rules.rs:8:8 [INFO] [stdout] | [INFO] [stdout] 8 | pub fn maek_horizontal_rule(md: &str) -> String { [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 `define_lang` is never used [INFO] [stdout] --> src/converter/code_blocks.rs:1:4 [INFO] [stdout] | [INFO] [stdout] 1 | fn define_lang() {} [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `make_code_block` is never used [INFO] [stdout] --> src/converter/code_blocks.rs:3:8 [INFO] [stdout] | [INFO] [stdout] 3 | pub fn make_code_block(mut md: &str) -> String { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `help` is never used [INFO] [stdout] --> src/converter/help.rs:1:8 [INFO] [stdout] | [INFO] [stdout] 1 | pub fn help() { [INFO] [stdout] | ^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `get_indent_len` is never used [INFO] [stdout] --> src/converter/lists.rs:44:8 [INFO] [stdout] | [INFO] [stdout] 44 | pub fn get_indent_len(md: &str) -> i32 { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `is_same_list` is never used [INFO] [stdout] --> src/converter/lists.rs:106:8 [INFO] [stdout] | [INFO] [stdout] 106 | pub fn is_same_list(current: &str, mut previus: &str) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/converter/code_blocks.rs:5:9 [INFO] [stdout] | [INFO] [stdout] 5 | / if md.chars().nth(i).unwrap() != '`' { [INFO] [stdout] 6 | | if md[..i] != md[md.len() - i..] { [INFO] [stdout] 7 | | return md.to_string(); [INFO] [stdout] 8 | | } [INFO] [stdout] 9 | | } [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] 5 ~ if md.chars().nth(i).unwrap() != '`' [INFO] [stdout] 6 ~ && md[..i] != md[md.len() - i..] { [INFO] [stdout] 7 | return md.to_string(); [INFO] [stdout] 8 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this boolean expression can be simplified [INFO] [stdout] --> src/converter/emphases.rs:2:8 [INFO] [stdout] | [INFO] [stdout] 2 | if !md.find("*").is_none() && md[md.find("*").unwrap() + 1..].contains("*") { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ help: try: `md.find("*").is_some()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#nonminimal_bool [INFO] [stdout] = note: `#[warn(clippy::nonminimal_bool)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: casting to the same type is unnecessary (`usize` -> `usize`) [INFO] [stdout] --> src/converter/emphases.rs:30:40 [INFO] [stdout] | [INFO] [stdout] 30 | let first = md.find(&symbol.repeat(lenght as usize)).unwrap() + (lenght as usize); [INFO] [stdout] | ^^^^^^^^^^^^^^^ help: try: `lenght` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_cast [INFO] [stdout] = note: `#[warn(clippy::unnecessary_cast)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: casting to the same type is unnecessary (`usize` -> `usize`) [INFO] [stdout] --> src/converter/emphases.rs:30:69 [INFO] [stdout] | [INFO] [stdout] 30 | let first = md.find(&symbol.repeat(lenght as usize)).unwrap() + (lenght as usize); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ help: try: `lenght` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_cast [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: casting to the same type is unnecessary (`usize` -> `usize`) [INFO] [stdout] --> src/converter/emphases.rs:33:41 [INFO] [stdout] | [INFO] [stdout] 33 | md[first..].find(&symbol.repeat(lenght as usize)).unwrap() + first, [INFO] [stdout] | ^^^^^^^^^^^^^^^ help: try: `lenght` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_cast [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: local variable doesn't need to be boxed here [INFO] [stdout] --> src/converter/emphases.rs:37:26 [INFO] [stdout] | [INFO] [stdout] 37 | fn make_italic(md: &str, points: Box<(usize, usize)>) -> String { [INFO] [stdout] | ^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#boxed_local [INFO] [stdout] = note: `#[warn(clippy::boxed_local)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: local variable doesn't need to be boxed here [INFO] [stdout] --> src/converter/emphases.rs:46:24 [INFO] [stdout] | [INFO] [stdout] 46 | fn make_bold(md: &str, points: Box<(usize, usize)>) -> String { [INFO] [stdout] | ^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#boxed_local [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: local variable doesn't need to be boxed here [INFO] [stdout] --> src/converter/emphases.rs:55:31 [INFO] [stdout] | [INFO] [stdout] 55 | fn make_bold_italic(md: &str, points: Box<(usize, usize)>) -> String { [INFO] [stdout] | ^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#boxed_local [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/converter/headers.rs:3:5 [INFO] [stdout] | [INFO] [stdout] 3 | / return format!( [INFO] [stdout] 4 | | "{}", [INFO] [stdout] 5 | | res[0].len(), [INFO] [stdout] 6 | | res[1..].connect(" "), [INFO] [stdout] 7 | | res[0].len() [INFO] [stdout] 8 | | ); [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] 3 ~ format!( [INFO] [stdout] 4 + "{}", [INFO] [stdout] 5 + res[0].len(), [INFO] [stdout] 6 + res[1..].connect(" "), [INFO] [stdout] 7 + res[0].len() [INFO] [stdout] 8 ~ ) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `.nth(0)` on a `std::iter::Iterator`, when `.next()` is equivalent [INFO] [stdout] --> src/converter/headers.rs:17:9 [INFO] [stdout] | [INFO] [stdout] 17 | if (md.chars().nth(0) == Some('-') || md.chars().nth(0) == Some('=')) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ help: try calling `.next()` instead of `.nth(0)`: `md.chars().next()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#iter_nth_zero [INFO] [stdout] = note: `#[warn(clippy::iter_nth_zero)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `.nth(0)` on a `std::iter::Iterator`, when `.next()` is equivalent [INFO] [stdout] --> src/converter/headers.rs:17:43 [INFO] [stdout] | [INFO] [stdout] 17 | if (md.chars().nth(0) == Some('-') || md.chars().nth(0) == Some('=')) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ help: try calling `.next()` instead of `.nth(0)`: `md.chars().next()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#iter_nth_zero [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `.nth(0)` on a `std::iter::Iterator`, when `.next()` is equivalent [INFO] [stdout] --> src/converter/headers.rs:18:12 [INFO] [stdout] | [INFO] [stdout] 18 | && md.chars().nth(0) == md.chars().last() [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ help: try calling `.next()` instead of `.nth(0)`: `md.chars().next()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#iter_nth_zero [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: taken reference of right operand [INFO] [stdout] --> src/converter/images_links.rs:3:24 [INFO] [stdout] | [INFO] [stdout] 3 | let text = &md[md.find('[').unwrap() + &1..md.find(']').unwrap()]; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^-- [INFO] [stdout] | | [INFO] [stdout] | help: use the right value directly: `1` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#op_ref [INFO] [stdout] = note: `#[warn(clippy::op_ref)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual implementation of `Iterator::find` [INFO] [stdout] --> src/converter/lists.rs:7:5 [INFO] [stdout] | [INFO] [stdout] 7 | / for i in vec![ [INFO] [stdout] 8 | | "1.", "2.", "3.", "4.", "5.", "6.", "7.", "8.", "9.", "0.", "-", "+", "*", [INFO] [stdout] 9 | | ] { [INFO] [stdout] 10 | | if md.contains(i) { [INFO] [stdout] ... | [INFO] [stdout] 14 | | None [INFO] [stdout] | |________^ help: replace with an iterator: `_.into_iter().find(|&i| md.contains(i)).map(|v| v as _)` [INFO] [stdout] | [INFO] [stdout] = note: you may need to dereference some variables [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_find [INFO] [stdout] = note: `#[warn(clippy::manual_find)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&Vec` instead of `&[_]` involves a new object where a slice will do [INFO] [stdout] --> src/converter/lists.rs:28:28 [INFO] [stdout] | [INFO] [stdout] 28 | pub fn get_li_index(lines: &Vec, start: usize) -> usize { [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] 28 - pub fn get_li_index(lines: &Vec, start: usize) -> usize { [INFO] [stdout] 28 + pub fn get_li_index(lines: &[String], start: usize) -> usize { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: length comparison to zero [INFO] [stdout] --> src/converter/lists.rs:69:8 [INFO] [stdout] | [INFO] [stdout] 69 | if md.len() == 0 { [INFO] [stdout] | ^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `md.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: called `.nth(0)` on a `std::iter::Iterator`, when `.next()` is equivalent [INFO] [stdout] --> src/converter/lists.rs:72:8 [INFO] [stdout] | [INFO] [stdout] 72 | if md.chars().nth(0).unwrap() == ' ' { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ help: try calling `.next()` instead of `.nth(0)`: `md.chars().next()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#iter_nth_zero [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/converter/lists.rs:107:5 [INFO] [stdout] | [INFO] [stdout] 107 | / if "1.2.3.4.5.6.7.8.9.0.".contains(define_mark(current).unwrap()) [INFO] [stdout] 108 | | && "1.2.3.4.5.6.7.8.9.0.".contains(define_mark(previus).unwrap()) [INFO] [stdout] 109 | | { [INFO] [stdout] 110 | | if find_mark(current) == find_mark(previus) { [INFO] [stdout] ... | [INFO] [stdout] 113 | | } [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] 108 ~ && "1.2.3.4.5.6.7.8.9.0.".contains(define_mark(previus).unwrap()) [INFO] [stdout] 109 ~ && find_mark(current) == find_mark(previus) { [INFO] [stdout] 110 | return true; [INFO] [stdout] 111 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated method `std::slice::::connect`: renamed to join [INFO] [stdout] --> src/converter/headers.rs:6:18 [INFO] [stdout] | [INFO] [stdout] 6 | res[1..].connect(" "), [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(deprecated)]` on by default [INFO] [stdout] help: replace the use of the deprecated method [INFO] [stdout] | [INFO] [stdout] 6 - res[1..].connect(" "), [INFO] [stdout] 6 + res[1..].join(" "), [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `.nth(0)` on a `std::iter::Iterator`, when `.next()` is equivalent [INFO] [stdout] --> src/lib.rs:38:24 [INFO] [stdout] | [INFO] [stdout] 38 | if lines[i].chars().nth(0).unwrap() == '[' { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ help: try calling `.next()` instead of `.nth(0)`: `lines[i].chars().next()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#iter_nth_zero [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the loop variable `i` is only used to index `res_lines` [INFO] [stdout] --> src/lib.rs:64:18 [INFO] [stdout] | [INFO] [stdout] 64 | for i in 0..res_lines.len() { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stdout] = note: `#[warn(clippy::needless_range_loop)]` on by default [INFO] [stdout] help: consider using an iterator [INFO] [stdout] | [INFO] [stdout] 64 - for i in 0..res_lines.len() { [INFO] [stdout] 64 + for in &mut res_lines { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: length comparison to zero [INFO] [stdout] --> src/lib.rs:106:18 [INFO] [stdout] | [INFO] [stdout] 106 | + if res.len() > 0 && !res.contains("") { [INFO] [stdout] | ^^^^^^^^^^^^^ help: using `!is_empty` is clearer and more explicit: `!res.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: unused variable: `md` [INFO] [stdout] --> src/converter/blockquote_horizontal_rules.rs:8:29 [INFO] [stdout] | [INFO] [stdout] 8 | pub fn maek_horizontal_rule(md: &str) -> String { [INFO] [stdout] | ^^ help: if this is intentional, prefix it with an underscore: `_md` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/converter/code_blocks.rs:3:24 [INFO] [stdout] | [INFO] [stdout] 3 | pub fn make_code_block(mut md: &str) -> String { [INFO] [stdout] | ----^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `x` [INFO] [stdout] --> src/converter/lists.rs:76:14 [INFO] [stdout] | [INFO] [stdout] 76 | Some(x) => true, [INFO] [stdout] | ^ help: if this is intentional, prefix it with an underscore: `_x` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/converter/lists.rs:106:36 [INFO] [stdout] | [INFO] [stdout] 106 | pub fn is_same_list(current: &str, mut previus: &str) -> bool { [INFO] [stdout] | ----^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/lib.rs:21:13 [INFO] [stdout] | [INFO] [stdout] 21 | let mut last_li_index: usize = 1; [INFO] [stdout] | ----^^^^^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `last_li_index` [INFO] [stdout] --> src/lib.rs:21:13 [INFO] [stdout] | [INFO] [stdout] 21 | let mut last_li_index: usize = 1; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_last_li_index` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `maek_horizontal_rule` is never used [INFO] [stdout] --> src/converter/blockquote_horizontal_rules.rs:8:8 [INFO] [stdout] | [INFO] [stdout] 8 | pub fn maek_horizontal_rule(md: &str) -> String { [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 `define_lang` is never used [INFO] [stdout] --> src/converter/code_blocks.rs:1:4 [INFO] [stdout] | [INFO] [stdout] 1 | fn define_lang() {} [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `make_code_block` is never used [INFO] [stdout] --> src/converter/code_blocks.rs:3:8 [INFO] [stdout] | [INFO] [stdout] 3 | pub fn make_code_block(mut md: &str) -> String { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `help` is never used [INFO] [stdout] --> src/converter/help.rs:1:8 [INFO] [stdout] | [INFO] [stdout] 1 | pub fn help() { [INFO] [stdout] | ^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `get_indent_len` is never used [INFO] [stdout] --> src/converter/lists.rs:44:8 [INFO] [stdout] | [INFO] [stdout] 44 | pub fn get_indent_len(md: &str) -> i32 { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `is_same_list` is never used [INFO] [stdout] --> src/converter/lists.rs:106:8 [INFO] [stdout] | [INFO] [stdout] 106 | pub fn is_same_list(current: &str, mut previus: &str) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/converter/code_blocks.rs:5:9 [INFO] [stdout] | [INFO] [stdout] 5 | / if md.chars().nth(i).unwrap() != '`' { [INFO] [stdout] 6 | | if md[..i] != md[md.len() - i..] { [INFO] [stdout] 7 | | return md.to_string(); [INFO] [stdout] 8 | | } [INFO] [stdout] 9 | | } [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] 5 ~ if md.chars().nth(i).unwrap() != '`' [INFO] [stdout] 6 ~ && md[..i] != md[md.len() - i..] { [INFO] [stdout] 7 | return md.to_string(); [INFO] [stdout] 8 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this boolean expression can be simplified [INFO] [stdout] --> src/converter/emphases.rs:2:8 [INFO] [stdout] | [INFO] [stdout] 2 | if !md.find("*").is_none() && md[md.find("*").unwrap() + 1..].contains("*") { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ help: try: `md.find("*").is_some()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#nonminimal_bool [INFO] [stdout] = note: `#[warn(clippy::nonminimal_bool)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: casting to the same type is unnecessary (`usize` -> `usize`) [INFO] [stdout] --> src/converter/emphases.rs:30:40 [INFO] [stdout] | [INFO] [stdout] 30 | let first = md.find(&symbol.repeat(lenght as usize)).unwrap() + (lenght as usize); [INFO] [stdout] | ^^^^^^^^^^^^^^^ help: try: `lenght` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_cast [INFO] [stdout] = note: `#[warn(clippy::unnecessary_cast)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: casting to the same type is unnecessary (`usize` -> `usize`) [INFO] [stdout] --> src/converter/emphases.rs:30:69 [INFO] [stdout] | [INFO] [stdout] 30 | let first = md.find(&symbol.repeat(lenght as usize)).unwrap() + (lenght as usize); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ help: try: `lenght` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_cast [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: casting to the same type is unnecessary (`usize` -> `usize`) [INFO] [stdout] --> src/converter/emphases.rs:33:41 [INFO] [stdout] | [INFO] [stdout] 33 | md[first..].find(&symbol.repeat(lenght as usize)).unwrap() + first, [INFO] [stdout] | ^^^^^^^^^^^^^^^ help: try: `lenght` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_cast [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: local variable doesn't need to be boxed here [INFO] [stdout] --> src/converter/emphases.rs:37:26 [INFO] [stdout] | [INFO] [stdout] 37 | fn make_italic(md: &str, points: Box<(usize, usize)>) -> String { [INFO] [stdout] | ^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#boxed_local [INFO] [stdout] = note: `#[warn(clippy::boxed_local)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: local variable doesn't need to be boxed here [INFO] [stdout] --> src/converter/emphases.rs:46:24 [INFO] [stdout] | [INFO] [stdout] 46 | fn make_bold(md: &str, points: Box<(usize, usize)>) -> String { [INFO] [stdout] | ^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#boxed_local [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: local variable doesn't need to be boxed here [INFO] [stdout] --> src/converter/emphases.rs:55:31 [INFO] [stdout] | [INFO] [stdout] 55 | fn make_bold_italic(md: &str, points: Box<(usize, usize)>) -> String { [INFO] [stdout] | ^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#boxed_local [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/converter/headers.rs:3:5 [INFO] [stdout] | [INFO] [stdout] 3 | / return format!( [INFO] [stdout] 4 | | "{}", [INFO] [stdout] 5 | | res[0].len(), [INFO] [stdout] 6 | | res[1..].connect(" "), [INFO] [stdout] 7 | | res[0].len() [INFO] [stdout] 8 | | ); [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] 3 ~ format!( [INFO] [stdout] 4 + "{}", [INFO] [stdout] 5 + res[0].len(), [INFO] [stdout] 6 + res[1..].connect(" "), [INFO] [stdout] 7 + res[0].len() [INFO] [stdout] 8 ~ ) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `.nth(0)` on a `std::iter::Iterator`, when `.next()` is equivalent [INFO] [stdout] --> src/converter/headers.rs:17:9 [INFO] [stdout] | [INFO] [stdout] 17 | if (md.chars().nth(0) == Some('-') || md.chars().nth(0) == Some('=')) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ help: try calling `.next()` instead of `.nth(0)`: `md.chars().next()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#iter_nth_zero [INFO] [stdout] = note: `#[warn(clippy::iter_nth_zero)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `.nth(0)` on a `std::iter::Iterator`, when `.next()` is equivalent [INFO] [stdout] --> src/converter/headers.rs:17:43 [INFO] [stdout] | [INFO] [stdout] 17 | if (md.chars().nth(0) == Some('-') || md.chars().nth(0) == Some('=')) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ help: try calling `.next()` instead of `.nth(0)`: `md.chars().next()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#iter_nth_zero [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `.nth(0)` on a `std::iter::Iterator`, when `.next()` is equivalent [INFO] [stdout] --> src/converter/headers.rs:18:12 [INFO] [stdout] | [INFO] [stdout] 18 | && md.chars().nth(0) == md.chars().last() [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ help: try calling `.next()` instead of `.nth(0)`: `md.chars().next()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#iter_nth_zero [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: taken reference of right operand [INFO] [stdout] --> src/converter/images_links.rs:3:24 [INFO] [stdout] | [INFO] [stdout] 3 | let text = &md[md.find('[').unwrap() + &1..md.find(']').unwrap()]; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^-- [INFO] [stdout] | | [INFO] [stdout] | help: use the right value directly: `1` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#op_ref [INFO] [stdout] = note: `#[warn(clippy::op_ref)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual implementation of `Iterator::find` [INFO] [stdout] --> src/converter/lists.rs:7:5 [INFO] [stdout] | [INFO] [stdout] 7 | / for i in vec![ [INFO] [stdout] 8 | | "1.", "2.", "3.", "4.", "5.", "6.", "7.", "8.", "9.", "0.", "-", "+", "*", [INFO] [stdout] 9 | | ] { [INFO] [stdout] 10 | | if md.contains(i) { [INFO] [stdout] ... | [INFO] [stdout] 14 | | None [INFO] [stdout] | |________^ help: replace with an iterator: `_.into_iter().find(|&i| md.contains(i)).map(|v| v as _)` [INFO] [stdout] | [INFO] [stdout] = note: you may need to dereference some variables [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_find [INFO] [stdout] = note: `#[warn(clippy::manual_find)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&Vec` instead of `&[_]` involves a new object where a slice will do [INFO] [stdout] --> src/converter/lists.rs:28:28 [INFO] [stdout] | [INFO] [stdout] 28 | pub fn get_li_index(lines: &Vec, start: usize) -> usize { [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] 28 - pub fn get_li_index(lines: &Vec, start: usize) -> usize { [INFO] [stdout] 28 + pub fn get_li_index(lines: &[String], start: usize) -> usize { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: length comparison to zero [INFO] [stdout] --> src/converter/lists.rs:69:8 [INFO] [stdout] | [INFO] [stdout] 69 | if md.len() == 0 { [INFO] [stdout] | ^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `md.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: called `.nth(0)` on a `std::iter::Iterator`, when `.next()` is equivalent [INFO] [stdout] --> src/converter/lists.rs:72:8 [INFO] [stdout] | [INFO] [stdout] 72 | if md.chars().nth(0).unwrap() == ' ' { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ help: try calling `.next()` instead of `.nth(0)`: `md.chars().next()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#iter_nth_zero [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/converter/lists.rs:107:5 [INFO] [stdout] | [INFO] [stdout] 107 | / if "1.2.3.4.5.6.7.8.9.0.".contains(define_mark(current).unwrap()) [INFO] [stdout] 108 | | && "1.2.3.4.5.6.7.8.9.0.".contains(define_mark(previus).unwrap()) [INFO] [stdout] 109 | | { [INFO] [stdout] 110 | | if find_mark(current) == find_mark(previus) { [INFO] [stdout] ... | [INFO] [stdout] 113 | | } [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] 108 ~ && "1.2.3.4.5.6.7.8.9.0.".contains(define_mark(previus).unwrap()) [INFO] [stdout] 109 ~ && find_mark(current) == find_mark(previus) { [INFO] [stdout] 110 | return true; [INFO] [stdout] 111 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `.nth(0)` on a `std::iter::Iterator`, when `.next()` is equivalent [INFO] [stdout] --> src/lib.rs:38:24 [INFO] [stdout] | [INFO] [stdout] 38 | if lines[i].chars().nth(0).unwrap() == '[' { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ help: try calling `.next()` instead of `.nth(0)`: `lines[i].chars().next()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#iter_nth_zero [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the loop variable `i` is only used to index `res_lines` [INFO] [stdout] --> src/lib.rs:64:18 [INFO] [stdout] | [INFO] [stdout] 64 | for i in 0..res_lines.len() { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stdout] = note: `#[warn(clippy::needless_range_loop)]` on by default [INFO] [stdout] help: consider using an iterator [INFO] [stdout] | [INFO] [stdout] 64 - for i in 0..res_lines.len() { [INFO] [stdout] 64 + for in &mut res_lines { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: length comparison to zero [INFO] [stdout] --> src/lib.rs:106:18 [INFO] [stdout] | [INFO] [stdout] 106 | + if res.len() > 0 && !res.contains("") { [INFO] [stdout] | ^^^^^^^^^^^^^ help: using `!is_empty` is clearer and more explicit: `!res.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: use of deprecated method `std::slice::::connect`: renamed to join [INFO] [stdout] --> src/converter/headers.rs:6:18 [INFO] [stdout] | [INFO] [stdout] 6 | res[1..].connect(" "), [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(deprecated)]` on by default [INFO] [stdout] help: replace the use of the deprecated method [INFO] [stdout] | [INFO] [stdout] 6 - res[1..].connect(" "), [INFO] [stdout] 6 + res[1..].join(" "), [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated method `std::slice::::connect`: renamed to join [INFO] [stdout] --> src/main.rs:132:32 [INFO] [stdout] | [INFO] [stdout] 132 | write_file(&convert(lines).connect("\n")); [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] | [INFO] [stdout] help: replace the use of the deprecated method [INFO] [stdout] | [INFO] [stdout] 132 - write_file(&convert(lines).connect("\n")); [INFO] [stdout] 132 + write_file(&convert(lines).join("\n")); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `md` [INFO] [stdout] --> src/converter/blockquote_horizontal_rules.rs:8:29 [INFO] [stdout] | [INFO] [stdout] 8 | pub fn maek_horizontal_rule(md: &str) -> String { [INFO] [stdout] | ^^ help: if this is intentional, prefix it with an underscore: `_md` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/converter/code_blocks.rs:3:24 [INFO] [stdout] | [INFO] [stdout] 3 | pub fn make_code_block(mut md: &str) -> String { [INFO] [stdout] | ----^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `x` [INFO] [stdout] --> src/converter/lists.rs:76:14 [INFO] [stdout] | [INFO] [stdout] 76 | Some(x) => true, [INFO] [stdout] | ^ help: if this is intentional, prefix it with an underscore: `_x` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/converter/lists.rs:106:36 [INFO] [stdout] | [INFO] [stdout] 106 | pub fn is_same_list(current: &str, mut previus: &str) -> bool { [INFO] [stdout] | ----^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/main.rs:28:13 [INFO] [stdout] | [INFO] [stdout] 28 | let mut last_li_index: usize = 1; [INFO] [stdout] | ----^^^^^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `last_li_index` [INFO] [stdout] --> src/main.rs:28:13 [INFO] [stdout] | [INFO] [stdout] 28 | let mut last_li_index: usize = 1; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_last_li_index` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/main.rs:130:9 [INFO] [stdout] | [INFO] [stdout] 130 | let mut lines = read_file(&path); [INFO] [stdout] | ----^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/main.rs:136:9 [INFO] [stdout] | [INFO] [stdout] 136 | let mut file = File::open(path).unwrap(); [INFO] [stdout] | ----^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/main.rs:137:9 [INFO] [stdout] | [INFO] [stdout] 137 | let mut reader = BufReader::new(file); [INFO] [stdout] | ----^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `maek_horizontal_rule` is never used [INFO] [stdout] --> src/converter/blockquote_horizontal_rules.rs:8:8 [INFO] [stdout] | [INFO] [stdout] 8 | pub fn maek_horizontal_rule(md: &str) -> String { [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 `define_lang` is never used [INFO] [stdout] --> src/converter/code_blocks.rs:1:4 [INFO] [stdout] | [INFO] [stdout] 1 | fn define_lang() {} [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `make_code_block` is never used [INFO] [stdout] --> src/converter/code_blocks.rs:3:8 [INFO] [stdout] | [INFO] [stdout] 3 | pub fn make_code_block(mut md: &str) -> String { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `help` is never used [INFO] [stdout] --> src/converter/help.rs:1:8 [INFO] [stdout] | [INFO] [stdout] 1 | pub fn help() { [INFO] [stdout] | ^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `get_indent_len` is never used [INFO] [stdout] --> src/converter/lists.rs:44:8 [INFO] [stdout] | [INFO] [stdout] 44 | pub fn get_indent_len(md: &str) -> i32 { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `is_same_list` is never used [INFO] [stdout] --> src/converter/lists.rs:106:8 [INFO] [stdout] | [INFO] [stdout] 106 | pub fn is_same_list(current: &str, mut previus: &str) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/converter/code_blocks.rs:5:9 [INFO] [stdout] | [INFO] [stdout] 5 | / if md.chars().nth(i).unwrap() != '`' { [INFO] [stdout] 6 | | if md[..i] != md[md.len() - i..] { [INFO] [stdout] 7 | | return md.to_string(); [INFO] [stdout] 8 | | } [INFO] [stdout] 9 | | } [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] 5 ~ if md.chars().nth(i).unwrap() != '`' [INFO] [stdout] 6 ~ && md[..i] != md[md.len() - i..] { [INFO] [stdout] 7 | return md.to_string(); [INFO] [stdout] 8 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated method `std::slice::::connect`: renamed to join [INFO] [stdout] --> src/converter/headers.rs:6:18 [INFO] [stdout] | [INFO] [stdout] 6 | res[1..].connect(" "), [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(deprecated)]` on by default [INFO] [stdout] help: replace the use of the deprecated method [INFO] [stdout] | [INFO] [stdout] 6 - res[1..].connect(" "), [INFO] [stdout] 6 + res[1..].join(" "), [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this boolean expression can be simplified [INFO] [stdout] --> src/converter/emphases.rs:2:8 [INFO] [stdout] | [INFO] [stdout] 2 | if !md.find("*").is_none() && md[md.find("*").unwrap() + 1..].contains("*") { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ help: try: `md.find("*").is_some()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#nonminimal_bool [INFO] [stdout] = note: `#[warn(clippy::nonminimal_bool)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: casting to the same type is unnecessary (`usize` -> `usize`) [INFO] [stdout] --> src/converter/emphases.rs:30:40 [INFO] [stdout] | [INFO] [stdout] 30 | let first = md.find(&symbol.repeat(lenght as usize)).unwrap() + (lenght as usize); [INFO] [stdout] | ^^^^^^^^^^^^^^^ help: try: `lenght` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_cast [INFO] [stdout] = note: `#[warn(clippy::unnecessary_cast)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: casting to the same type is unnecessary (`usize` -> `usize`) [INFO] [stdout] --> src/converter/emphases.rs:30:69 [INFO] [stdout] | [INFO] [stdout] 30 | let first = md.find(&symbol.repeat(lenght as usize)).unwrap() + (lenght as usize); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ help: try: `lenght` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_cast [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: casting to the same type is unnecessary (`usize` -> `usize`) [INFO] [stdout] --> src/converter/emphases.rs:33:41 [INFO] [stdout] | [INFO] [stdout] 33 | md[first..].find(&symbol.repeat(lenght as usize)).unwrap() + first, [INFO] [stdout] | ^^^^^^^^^^^^^^^ help: try: `lenght` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_cast [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: local variable doesn't need to be boxed here [INFO] [stdout] --> src/converter/emphases.rs:37:26 [INFO] [stdout] | [INFO] [stdout] 37 | fn make_italic(md: &str, points: Box<(usize, usize)>) -> String { [INFO] [stdout] | ^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#boxed_local [INFO] [stdout] = note: `#[warn(clippy::boxed_local)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: local variable doesn't need to be boxed here [INFO] [stdout] --> src/converter/emphases.rs:46:24 [INFO] [stdout] | [INFO] [stdout] 46 | fn make_bold(md: &str, points: Box<(usize, usize)>) -> String { [INFO] [stdout] | ^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#boxed_local [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: local variable doesn't need to be boxed here [INFO] [stdout] --> src/converter/emphases.rs:55:31 [INFO] [stdout] | [INFO] [stdout] 55 | fn make_bold_italic(md: &str, points: Box<(usize, usize)>) -> String { [INFO] [stdout] | ^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#boxed_local [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/converter/headers.rs:3:5 [INFO] [stdout] | [INFO] [stdout] 3 | / return format!( [INFO] [stdout] 4 | | "{}", [INFO] [stdout] 5 | | res[0].len(), [INFO] [stdout] 6 | | res[1..].connect(" "), [INFO] [stdout] 7 | | res[0].len() [INFO] [stdout] 8 | | ); [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] 3 ~ format!( [INFO] [stdout] 4 + "{}", [INFO] [stdout] 5 + res[0].len(), [INFO] [stdout] 6 + res[1..].connect(" "), [INFO] [stdout] 7 + res[0].len() [INFO] [stdout] 8 ~ ) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `.nth(0)` on a `std::iter::Iterator`, when `.next()` is equivalent [INFO] [stdout] --> src/converter/headers.rs:17:9 [INFO] [stdout] | [INFO] [stdout] 17 | if (md.chars().nth(0) == Some('-') || md.chars().nth(0) == Some('=')) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ help: try calling `.next()` instead of `.nth(0)`: `md.chars().next()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#iter_nth_zero [INFO] [stdout] = note: `#[warn(clippy::iter_nth_zero)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `.nth(0)` on a `std::iter::Iterator`, when `.next()` is equivalent [INFO] [stdout] --> src/converter/headers.rs:17:43 [INFO] [stdout] | [INFO] [stdout] 17 | if (md.chars().nth(0) == Some('-') || md.chars().nth(0) == Some('=')) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ help: try calling `.next()` instead of `.nth(0)`: `md.chars().next()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#iter_nth_zero [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `.nth(0)` on a `std::iter::Iterator`, when `.next()` is equivalent [INFO] [stdout] --> src/converter/headers.rs:18:12 [INFO] [stdout] | [INFO] [stdout] 18 | && md.chars().nth(0) == md.chars().last() [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ help: try calling `.next()` instead of `.nth(0)`: `md.chars().next()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#iter_nth_zero [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: taken reference of right operand [INFO] [stdout] --> src/converter/images_links.rs:3:24 [INFO] [stdout] | [INFO] [stdout] 3 | let text = &md[md.find('[').unwrap() + &1..md.find(']').unwrap()]; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^-- [INFO] [stdout] | | [INFO] [stdout] | help: use the right value directly: `1` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#op_ref [INFO] [stdout] = note: `#[warn(clippy::op_ref)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated method `std::slice::::connect`: renamed to join [INFO] [stdout] --> src/main.rs:132:32 [INFO] [stdout] | [INFO] [stdout] 132 | write_file(&convert(lines).connect("\n")); [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] | [INFO] [stdout] help: replace the use of the deprecated method [INFO] [stdout] | [INFO] [stdout] 132 - write_file(&convert(lines).connect("\n")); [INFO] [stdout] 132 + write_file(&convert(lines).join("\n")); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual implementation of `Iterator::find` [INFO] [stdout] --> src/converter/lists.rs:7:5 [INFO] [stdout] | [INFO] [stdout] 7 | / for i in vec![ [INFO] [stdout] 8 | | "1.", "2.", "3.", "4.", "5.", "6.", "7.", "8.", "9.", "0.", "-", "+", "*", [INFO] [stdout] 9 | | ] { [INFO] [stdout] 10 | | if md.contains(i) { [INFO] [stdout] ... | [INFO] [stdout] 14 | | None [INFO] [stdout] | |________^ help: replace with an iterator: `_.into_iter().find(|&i| md.contains(i)).map(|v| v as _)` [INFO] [stdout] | [INFO] [stdout] = note: you may need to dereference some variables [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_find [INFO] [stdout] = note: `#[warn(clippy::manual_find)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `md` [INFO] [stdout] --> src/converter/blockquote_horizontal_rules.rs:8:29 [INFO] [stdout] | [INFO] [stdout] 8 | pub fn maek_horizontal_rule(md: &str) -> String { [INFO] [stdout] | ^^ help: if this is intentional, prefix it with an underscore: `_md` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&Vec` instead of `&[_]` involves a new object where a slice will do [INFO] [stdout] --> src/converter/lists.rs:28:28 [INFO] [stdout] | [INFO] [stdout] 28 | pub fn get_li_index(lines: &Vec, start: usize) -> usize { [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] 28 - pub fn get_li_index(lines: &Vec, start: usize) -> usize { [INFO] [stdout] 28 + pub fn get_li_index(lines: &[String], start: usize) -> usize { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/converter/code_blocks.rs:3:24 [INFO] [stdout] | [INFO] [stdout] 3 | pub fn make_code_block(mut md: &str) -> String { [INFO] [stdout] | ----^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: length comparison to zero [INFO] [stdout] --> src/converter/lists.rs:69:8 [INFO] [stdout] | [INFO] [stdout] 69 | if md.len() == 0 { [INFO] [stdout] | ^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `md.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: called `.nth(0)` on a `std::iter::Iterator`, when `.next()` is equivalent [INFO] [stdout] --> src/converter/lists.rs:72:8 [INFO] [stdout] | [INFO] [stdout] 72 | if md.chars().nth(0).unwrap() == ' ' { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ help: try calling `.next()` instead of `.nth(0)`: `md.chars().next()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#iter_nth_zero [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/converter/lists.rs:107:5 [INFO] [stdout] | [INFO] [stdout] 107 | / if "1.2.3.4.5.6.7.8.9.0.".contains(define_mark(current).unwrap()) [INFO] [stdout] 108 | | && "1.2.3.4.5.6.7.8.9.0.".contains(define_mark(previus).unwrap()) [INFO] [stdout] 109 | | { [INFO] [stdout] 110 | | if find_mark(current) == find_mark(previus) { [INFO] [stdout] ... | [INFO] [stdout] 113 | | } [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] 108 ~ && "1.2.3.4.5.6.7.8.9.0.".contains(define_mark(previus).unwrap()) [INFO] [stdout] 109 ~ && find_mark(current) == find_mark(previus) { [INFO] [stdout] 110 | return true; [INFO] [stdout] 111 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `.nth(0)` on a `std::iter::Iterator`, when `.next()` is equivalent [INFO] [stdout] --> src/main.rs:45:24 [INFO] [stdout] | [INFO] [stdout] 45 | if lines[i].chars().nth(0).unwrap() == '[' { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ help: try calling `.next()` instead of `.nth(0)`: `lines[i].chars().next()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#iter_nth_zero [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the loop variable `i` is only used to index `res_lines` [INFO] [stdout] --> src/main.rs:71:18 [INFO] [stdout] | [INFO] [stdout] 71 | for i in 0..res_lines.len() { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stdout] = note: `#[warn(clippy::needless_range_loop)]` on by default [INFO] [stdout] help: consider using an iterator [INFO] [stdout] | [INFO] [stdout] 71 - for i in 0..res_lines.len() { [INFO] [stdout] 71 + for in &mut res_lines { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: length comparison to zero [INFO] [stdout] --> src/main.rs:113:18 [INFO] [stdout] | [INFO] [stdout] 113 | + if res.len() > 0 && !res.contains("") { [INFO] [stdout] | ^^^^^^^^^^^^^ help: using `!is_empty` is clearer and more explicit: `!res.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: unused `std::result::Result` that must be used [INFO] [stdout] --> src/main.rs:142:5 [INFO] [stdout] | [INFO] [stdout] 142 | fs::write("index.html", data); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stdout] = note: `#[warn(unused_must_use)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] help: use `let _ = ...` to ignore the resulting value [INFO] [stdout] | [INFO] [stdout] 142 | let _ = fs::write("index.html", data); [INFO] [stdout] | +++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `x` [INFO] [stdout] --> src/converter/lists.rs:76:14 [INFO] [stdout] | [INFO] [stdout] 76 | Some(x) => true, [INFO] [stdout] | ^ help: if this is intentional, prefix it with an underscore: `_x` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/converter/lists.rs:106:36 [INFO] [stdout] | [INFO] [stdout] 106 | pub fn is_same_list(current: &str, mut previus: &str) -> bool { [INFO] [stdout] | ----^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/main.rs:28:13 [INFO] [stdout] | [INFO] [stdout] 28 | let mut last_li_index: usize = 1; [INFO] [stdout] | ----^^^^^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `last_li_index` [INFO] [stdout] --> src/main.rs:28:13 [INFO] [stdout] | [INFO] [stdout] 28 | let mut last_li_index: usize = 1; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_last_li_index` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/main.rs:130:9 [INFO] [stdout] | [INFO] [stdout] 130 | let mut lines = read_file(&path); [INFO] [stdout] | ----^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/main.rs:136:9 [INFO] [stdout] | [INFO] [stdout] 136 | let mut file = File::open(path).unwrap(); [INFO] [stdout] | ----^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/main.rs:137:9 [INFO] [stdout] | [INFO] [stdout] 137 | let mut reader = BufReader::new(file); [INFO] [stdout] | ----^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `maek_horizontal_rule` is never used [INFO] [stdout] --> src/converter/blockquote_horizontal_rules.rs:8:8 [INFO] [stdout] | [INFO] [stdout] 8 | pub fn maek_horizontal_rule(md: &str) -> String { [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 `define_lang` is never used [INFO] [stdout] --> src/converter/code_blocks.rs:1:4 [INFO] [stdout] | [INFO] [stdout] 1 | fn define_lang() {} [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `make_code_block` is never used [INFO] [stdout] --> src/converter/code_blocks.rs:3:8 [INFO] [stdout] | [INFO] [stdout] 3 | pub fn make_code_block(mut md: &str) -> String { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `help` is never used [INFO] [stdout] --> src/converter/help.rs:1:8 [INFO] [stdout] | [INFO] [stdout] 1 | pub fn help() { [INFO] [stdout] | ^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `get_indent_len` is never used [INFO] [stdout] --> src/converter/lists.rs:44:8 [INFO] [stdout] | [INFO] [stdout] 44 | pub fn get_indent_len(md: &str) -> i32 { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `is_same_list` is never used [INFO] [stdout] --> src/converter/lists.rs:106:8 [INFO] [stdout] | [INFO] [stdout] 106 | pub fn is_same_list(current: &str, mut previus: &str) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/converter/code_blocks.rs:5:9 [INFO] [stdout] | [INFO] [stdout] 5 | / if md.chars().nth(i).unwrap() != '`' { [INFO] [stdout] 6 | | if md[..i] != md[md.len() - i..] { [INFO] [stdout] 7 | | return md.to_string(); [INFO] [stdout] 8 | | } [INFO] [stdout] 9 | | } [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] 5 ~ if md.chars().nth(i).unwrap() != '`' [INFO] [stdout] 6 ~ && md[..i] != md[md.len() - i..] { [INFO] [stdout] 7 | return md.to_string(); [INFO] [stdout] 8 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this boolean expression can be simplified [INFO] [stdout] --> src/converter/emphases.rs:2:8 [INFO] [stdout] | [INFO] [stdout] 2 | if !md.find("*").is_none() && md[md.find("*").unwrap() + 1..].contains("*") { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ help: try: `md.find("*").is_some()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#nonminimal_bool [INFO] [stdout] = note: `#[warn(clippy::nonminimal_bool)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: casting to the same type is unnecessary (`usize` -> `usize`) [INFO] [stdout] --> src/converter/emphases.rs:30:40 [INFO] [stdout] | [INFO] [stdout] 30 | let first = md.find(&symbol.repeat(lenght as usize)).unwrap() + (lenght as usize); [INFO] [stdout] | ^^^^^^^^^^^^^^^ help: try: `lenght` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_cast [INFO] [stdout] = note: `#[warn(clippy::unnecessary_cast)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: casting to the same type is unnecessary (`usize` -> `usize`) [INFO] [stdout] --> src/converter/emphases.rs:30:69 [INFO] [stdout] | [INFO] [stdout] 30 | let first = md.find(&symbol.repeat(lenght as usize)).unwrap() + (lenght as usize); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ help: try: `lenght` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_cast [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: casting to the same type is unnecessary (`usize` -> `usize`) [INFO] [stdout] --> src/converter/emphases.rs:33:41 [INFO] [stdout] | [INFO] [stdout] 33 | md[first..].find(&symbol.repeat(lenght as usize)).unwrap() + first, [INFO] [stdout] | ^^^^^^^^^^^^^^^ help: try: `lenght` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_cast [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: local variable doesn't need to be boxed here [INFO] [stdout] --> src/converter/emphases.rs:37:26 [INFO] [stdout] | [INFO] [stdout] 37 | fn make_italic(md: &str, points: Box<(usize, usize)>) -> String { [INFO] [stdout] | ^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#boxed_local [INFO] [stdout] = note: `#[warn(clippy::boxed_local)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: local variable doesn't need to be boxed here [INFO] [stdout] --> src/converter/emphases.rs:46:24 [INFO] [stdout] | [INFO] [stdout] 46 | fn make_bold(md: &str, points: Box<(usize, usize)>) -> String { [INFO] [stdout] | ^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#boxed_local [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: local variable doesn't need to be boxed here [INFO] [stdout] --> src/converter/emphases.rs:55:31 [INFO] [stdout] | [INFO] [stdout] 55 | fn make_bold_italic(md: &str, points: Box<(usize, usize)>) -> String { [INFO] [stdout] | ^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#boxed_local [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/converter/headers.rs:3:5 [INFO] [stdout] | [INFO] [stdout] 3 | / return format!( [INFO] [stdout] 4 | | "{}", [INFO] [stdout] 5 | | res[0].len(), [INFO] [stdout] 6 | | res[1..].connect(" "), [INFO] [stdout] 7 | | res[0].len() [INFO] [stdout] 8 | | ); [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] 3 ~ format!( [INFO] [stdout] 4 + "{}", [INFO] [stdout] 5 + res[0].len(), [INFO] [stdout] 6 + res[1..].connect(" "), [INFO] [stdout] 7 + res[0].len() [INFO] [stdout] 8 ~ ) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `.nth(0)` on a `std::iter::Iterator`, when `.next()` is equivalent [INFO] [stdout] --> src/converter/headers.rs:17:9 [INFO] [stdout] | [INFO] [stdout] 17 | if (md.chars().nth(0) == Some('-') || md.chars().nth(0) == Some('=')) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ help: try calling `.next()` instead of `.nth(0)`: `md.chars().next()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#iter_nth_zero [INFO] [stdout] = note: `#[warn(clippy::iter_nth_zero)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `.nth(0)` on a `std::iter::Iterator`, when `.next()` is equivalent [INFO] [stdout] --> src/converter/headers.rs:17:43 [INFO] [stdout] | [INFO] [stdout] 17 | if (md.chars().nth(0) == Some('-') || md.chars().nth(0) == Some('=')) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ help: try calling `.next()` instead of `.nth(0)`: `md.chars().next()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#iter_nth_zero [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `.nth(0)` on a `std::iter::Iterator`, when `.next()` is equivalent [INFO] [stdout] --> src/converter/headers.rs:18:12 [INFO] [stdout] | [INFO] [stdout] 18 | && md.chars().nth(0) == md.chars().last() [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ help: try calling `.next()` instead of `.nth(0)`: `md.chars().next()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#iter_nth_zero [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: taken reference of right operand [INFO] [stdout] --> src/converter/images_links.rs:3:24 [INFO] [stdout] | [INFO] [stdout] 3 | let text = &md[md.find('[').unwrap() + &1..md.find(']').unwrap()]; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^-- [INFO] [stdout] | | [INFO] [stdout] | help: use the right value directly: `1` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#op_ref [INFO] [stdout] = note: `#[warn(clippy::op_ref)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual implementation of `Iterator::find` [INFO] [stdout] --> src/converter/lists.rs:7:5 [INFO] [stdout] | [INFO] [stdout] 7 | / for i in vec![ [INFO] [stdout] 8 | | "1.", "2.", "3.", "4.", "5.", "6.", "7.", "8.", "9.", "0.", "-", "+", "*", [INFO] [stdout] 9 | | ] { [INFO] [stdout] 10 | | if md.contains(i) { [INFO] [stdout] ... | [INFO] [stdout] 14 | | None [INFO] [stdout] | |________^ help: replace with an iterator: `_.into_iter().find(|&i| md.contains(i)).map(|v| v as _)` [INFO] [stdout] | [INFO] [stdout] = note: you may need to dereference some variables [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_find [INFO] [stdout] = note: `#[warn(clippy::manual_find)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&Vec` instead of `&[_]` involves a new object where a slice will do [INFO] [stdout] --> src/converter/lists.rs:28:28 [INFO] [stdout] | [INFO] [stdout] 28 | pub fn get_li_index(lines: &Vec, start: usize) -> usize { [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] 28 - pub fn get_li_index(lines: &Vec, start: usize) -> usize { [INFO] [stdout] 28 + pub fn get_li_index(lines: &[String], start: usize) -> usize { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: length comparison to zero [INFO] [stdout] --> src/converter/lists.rs:69:8 [INFO] [stdout] | [INFO] [stdout] 69 | if md.len() == 0 { [INFO] [stdout] | ^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `md.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: called `.nth(0)` on a `std::iter::Iterator`, when `.next()` is equivalent [INFO] [stdout] --> src/converter/lists.rs:72:8 [INFO] [stdout] | [INFO] [stdout] 72 | if md.chars().nth(0).unwrap() == ' ' { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ help: try calling `.next()` instead of `.nth(0)`: `md.chars().next()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#iter_nth_zero [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/converter/lists.rs:107:5 [INFO] [stdout] | [INFO] [stdout] 107 | / if "1.2.3.4.5.6.7.8.9.0.".contains(define_mark(current).unwrap()) [INFO] [stdout] 108 | | && "1.2.3.4.5.6.7.8.9.0.".contains(define_mark(previus).unwrap()) [INFO] [stdout] 109 | | { [INFO] [stdout] 110 | | if find_mark(current) == find_mark(previus) { [INFO] [stdout] ... | [INFO] [stdout] 113 | | } [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] 108 ~ && "1.2.3.4.5.6.7.8.9.0.".contains(define_mark(previus).unwrap()) [INFO] [stdout] 109 ~ && find_mark(current) == find_mark(previus) { [INFO] [stdout] 110 | return true; [INFO] [stdout] 111 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `.nth(0)` on a `std::iter::Iterator`, when `.next()` is equivalent [INFO] [stdout] --> src/main.rs:45:24 [INFO] [stdout] | [INFO] [stdout] 45 | if lines[i].chars().nth(0).unwrap() == '[' { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ help: try calling `.next()` instead of `.nth(0)`: `lines[i].chars().next()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#iter_nth_zero [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the loop variable `i` is only used to index `res_lines` [INFO] [stdout] --> src/main.rs:71:18 [INFO] [stdout] | [INFO] [stdout] 71 | for i in 0..res_lines.len() { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stdout] = note: `#[warn(clippy::needless_range_loop)]` on by default [INFO] [stdout] help: consider using an iterator [INFO] [stdout] | [INFO] [stdout] 71 - for i in 0..res_lines.len() { [INFO] [stdout] 71 + for in &mut res_lines { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: length comparison to zero [INFO] [stdout] --> src/main.rs:113:18 [INFO] [stdout] | [INFO] [stdout] 113 | + if res.len() > 0 && !res.contains("") { [INFO] [stdout] | ^^^^^^^^^^^^^ help: using `!is_empty` is clearer and more explicit: `!res.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: unused `std::result::Result` that must be used [INFO] [stdout] --> src/main.rs:142:5 [INFO] [stdout] | [INFO] [stdout] 142 | fs::write("index.html", data); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stdout] = note: `#[warn(unused_must_use)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] help: use `let _ = ...` to ignore the resulting value [INFO] [stdout] | [INFO] [stdout] 142 | let _ = fs::write("index.html", data); [INFO] [stdout] | +++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] Finished `dev` profile [unoptimized + debuginfo] target(s) in 0.65s [INFO] running `Command { std: "docker" "inspect" "f0e95ac1a79a4e4dda3277e8c706a57cdbbf4b930994c352c988790c13d50cf5", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "f0e95ac1a79a4e4dda3277e8c706a57cdbbf4b930994c352c988790c13d50cf5", kill_on_drop: false }` [INFO] [stdout] f0e95ac1a79a4e4dda3277e8c706a57cdbbf4b930994c352c988790c13d50cf5