[INFO] cloning repository https://github.com/3fxcf9/md-parser-rust [INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/3fxcf9/md-parser-rust" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2F3fxcf9%2Fmd-parser-rust", kill_on_drop: false }` [INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2F3fxcf9%2Fmd-parser-rust'... [INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }` [INFO] [stdout] 4e40352e01c08774e7560cc5f3d368c1cb6e1efe [INFO] linting 3fxcf9/md-parser-rust against nightly for clippy-nonminimal_bool-denied [INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2F3fxcf9%2Fmd-parser-rust" "/workspace/builds/worker-7-tc1/source", kill_on_drop: false }` [INFO] [stderr] Cloning into '/workspace/builds/worker-7-tc1/source'... [INFO] [stderr] done. [INFO] started tweaking git repo https://github.com/3fxcf9/md-parser-rust [INFO] finished tweaking git repo https://github.com/3fxcf9/md-parser-rust [INFO] tweaked toml for git repo https://github.com/3fxcf9/md-parser-rust written to /workspace/builds/worker-7-tc1/source/Cargo.toml [INFO] validating manifest of git repo https://github.com/3fxcf9/md-parser-rust 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/3fxcf9/md-parser-rust 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-7-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-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] 00466e96b1be57f60f78b68093e9ccf36a277ea5848ba7ed312ebc72957e5065 [INFO] running `Command { std: "docker" "start" "-a" "00466e96b1be57f60f78b68093e9ccf36a277ea5848ba7ed312ebc72957e5065", kill_on_drop: false }` [INFO] running `Command { std: "docker" "inspect" "00466e96b1be57f60f78b68093e9ccf36a277ea5848ba7ed312ebc72957e5065", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "00466e96b1be57f60f78b68093e9ccf36a277ea5848ba7ed312ebc72957e5065", kill_on_drop: false }` [INFO] [stdout] 00466e96b1be57f60f78b68093e9ccf36a277ea5848ba7ed312ebc72957e5065 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-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] 7176689dcf9416f4b9c2415be7c6c42d3a573c154a9d7449d641c5c056a0d715 [INFO] running `Command { std: "docker" "start" "-a" "7176689dcf9416f4b9c2415be7c6c42d3a573c154a9d7449d641c5c056a0d715", kill_on_drop: false }` [INFO] [stderr] Checking md-parser v0.1.0 (/opt/rustwide/workdir) [INFO] [stdout] warning: unused import: `Token` [INFO] [stdout] --> src/main.rs:3:29 [INFO] [stdout] | [INFO] [stdout] 3 | use lexer::{HrStyle, Lexer, Token}; [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: `Token` [INFO] [stdout] --> src/main.rs:3:29 [INFO] [stdout] | [INFO] [stdout] 3 | use lexer::{HrStyle, Lexer, Token}; [INFO] [stdout] | ^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variants `LinkStart` and `LinkEnd` are never constructed [INFO] [stdout] --> src/lexer.rs:17:5 [INFO] [stdout] | [INFO] [stdout] 10 | pub enum Token { [INFO] [stdout] | ----- variants in this enum [INFO] [stdout] ... [INFO] [stdout] 17 | LinkStart, [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] 18 | LinkEnd, [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `Token` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `list_type` is never read [INFO] [stdout] --> src/parser.rs:37:9 [INFO] [stdout] | [INFO] [stdout] 36 | List { [INFO] [stdout] | ---- field in this variant [INFO] [stdout] 37 | list_type: ListType, [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `Node` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variant `Link` is never constructed [INFO] [stdout] --> src/parser.rs:32:5 [INFO] [stdout] | [INFO] [stdout] 22 | pub enum Node { [INFO] [stdout] | ---- variant in this enum [INFO] [stdout] ... [INFO] [stdout] 32 | Link { [INFO] [stdout] | ^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `Node` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `advance_until_tokens` is never used [INFO] [stdout] --> src/parser.rs:285:8 [INFO] [stdout] | [INFO] [stdout] 64 | impl Parser { [INFO] [stdout] | ----------- method in this implementation [INFO] [stdout] ... [INFO] [stdout] 285 | fn advance_until_tokens(&mut self, until: &Vec) -> Vec { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variants `LinkStart` and `LinkEnd` are never constructed [INFO] [stdout] --> src/lexer.rs:17:5 [INFO] [stdout] | [INFO] [stdout] 10 | pub enum Token { [INFO] [stdout] | ----- variants in this enum [INFO] [stdout] ... [INFO] [stdout] 17 | LinkStart, [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] 18 | LinkEnd, [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `Token` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `list_type` is never read [INFO] [stdout] --> src/parser.rs:37:9 [INFO] [stdout] | [INFO] [stdout] 36 | List { [INFO] [stdout] | ---- field in this variant [INFO] [stdout] 37 | list_type: ListType, [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `Node` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variant `Link` is never constructed [INFO] [stdout] --> src/parser.rs:32:5 [INFO] [stdout] | [INFO] [stdout] 22 | pub enum Node { [INFO] [stdout] | ---- variant in this enum [INFO] [stdout] ... [INFO] [stdout] 32 | Link { [INFO] [stdout] | ^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `Node` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `advance_until_tokens` is never used [INFO] [stdout] --> src/parser.rs:285:8 [INFO] [stdout] | [INFO] [stdout] 64 | impl Parser { [INFO] [stdout] | ----------- method in this implementation [INFO] [stdout] ... [INFO] [stdout] 285 | fn advance_until_tokens(&mut self, until: &Vec) -> Vec { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: name `NBSP` contains a capitalized acronym [INFO] [stdout] --> src/lexer.rs:30:5 [INFO] [stdout] | [INFO] [stdout] 30 | NBSP, [INFO] [stdout] | ^^^^ help: consider making the acronym lowercase, except the initial letter: `Nbsp` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#upper_case_acronyms [INFO] [stdout] = note: `#[warn(clippy::upper_case_acronyms)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: name `NBSP` contains a capitalized acronym [INFO] [stdout] --> src/lexer.rs:30:5 [INFO] [stdout] | [INFO] [stdout] 30 | NBSP, [INFO] [stdout] | ^^^^ help: consider making the acronym lowercase, except the initial letter: `Nbsp` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#upper_case_acronyms [INFO] [stdout] = note: `#[warn(clippy::upper_case_acronyms)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` can be collapsed into the outer `match` [INFO] [stdout] --> src/lexer.rs:64:21 [INFO] [stdout] | [INFO] [stdout] 64 | / if line_begins { [INFO] [stdout] 65 | | let mut indent_level: u8 = 1; [INFO] [stdout] 66 | | while !self.eof() && self.next_is(' ') { [INFO] [stdout] 67 | | indent_level += 1; [INFO] [stdout] ... | [INFO] [stdout] 78 | | current_text.push(*current); [INFO] [stdout] 79 | | } [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] 63 ~ ' ' [INFO] [stdout] 64 ~ if line_begins => { [INFO] [stdout] 65 | let mut indent_level: u8 = 1; [INFO] [stdout] ... [INFO] [stdout] 76 | } [INFO] [stdout] 77 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` can be collapsed into the outer `match` [INFO] [stdout] --> src/lexer.rs:180:21 [INFO] [stdout] | [INFO] [stdout] 180 | / if self.next_is('[') { [INFO] [stdout] 181 | | self.advance(); [INFO] [stdout] 182 | | push_text(&mut tokens, &mut current_text); [INFO] [stdout] 183 | | tokens.push(Token::DisplayMath( [INFO] [stdout] ... | [INFO] [stdout] 187 | | current_text.push(*current); [INFO] [stdout] 188 | | } [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] 179 ~ '\\' [INFO] [stdout] 180 ~ if self.next_is('[') => { [INFO] [stdout] 181 | self.advance(); [INFO] [stdout] ... [INFO] [stdout] 185 | )); [INFO] [stdout] 186 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` can be collapsed into the outer `match` [INFO] [stdout] --> src/lexer.rs:64:21 [INFO] [stdout] | [INFO] [stdout] 64 | / if line_begins { [INFO] [stdout] 65 | | let mut indent_level: u8 = 1; [INFO] [stdout] 66 | | while !self.eof() && self.next_is(' ') { [INFO] [stdout] 67 | | indent_level += 1; [INFO] [stdout] ... | [INFO] [stdout] 78 | | current_text.push(*current); [INFO] [stdout] 79 | | } [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] 63 ~ ' ' [INFO] [stdout] 64 ~ if line_begins => { [INFO] [stdout] 65 | let mut indent_level: u8 = 1; [INFO] [stdout] ... [INFO] [stdout] 76 | } [INFO] [stdout] 77 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` can be collapsed into the outer `match` [INFO] [stdout] --> src/lexer.rs:180:21 [INFO] [stdout] | [INFO] [stdout] 180 | / if self.next_is('[') { [INFO] [stdout] 181 | | self.advance(); [INFO] [stdout] 182 | | push_text(&mut tokens, &mut current_text); [INFO] [stdout] 183 | | tokens.push(Token::DisplayMath( [INFO] [stdout] ... | [INFO] [stdout] 187 | | current_text.push(*current); [INFO] [stdout] 188 | | } [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] 179 ~ '\\' [INFO] [stdout] 180 ~ if self.next_is('[') => { [INFO] [stdout] 181 | self.advance(); [INFO] [stdout] ... [INFO] [stdout] 185 | )); [INFO] [stdout] 186 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/lexer.rs:228:9 [INFO] [stdout] | [INFO] [stdout] 228 | return false; [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] 228 - return false; [INFO] [stdout] 228 + false [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/lexer.rs:241:9 [INFO] [stdout] | [INFO] [stdout] 241 | return true; [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 241 - return true; [INFO] [stdout] 241 + true [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: needlessly taken reference of both operands [INFO] [stdout] --> src/lexer.rs:234:20 [INFO] [stdout] | [INFO] [stdout] 234 | && &what[offset] == &self.input.chars().nth(self.pos + offset).unwrap() [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [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] help: use the values directly [INFO] [stdout] | [INFO] [stdout] 234 - && &what[offset] == &self.input.chars().nth(self.pos + offset).unwrap() [INFO] [stdout] 234 + && what[offset] == self.input.chars().nth(self.pos + offset).unwrap() [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/lexer.rs:228:9 [INFO] [stdout] | [INFO] [stdout] 228 | return false; [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] 228 - return false; [INFO] [stdout] 228 + false [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/lexer.rs:241:9 [INFO] [stdout] | [INFO] [stdout] 241 | return true; [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 241 - return true; [INFO] [stdout] 241 + true [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&Vec` instead of `&[_]` involves a new object where a slice will do [INFO] [stdout] --> src/lexer.rs:261:51 [INFO] [stdout] | [INFO] [stdout] 261 | fn check_next(next: &Option, until: &Vec) -> bool { [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] 261 - fn check_next(next: &Option, until: &Vec) -> bool { [INFO] [stdout] 261 + fn check_next(next: &Option, until: &[char]) -> bool { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: needlessly taken reference of both operands [INFO] [stdout] --> src/lexer.rs:234:20 [INFO] [stdout] | [INFO] [stdout] 234 | && &what[offset] == &self.input.chars().nth(self.pos + offset).unwrap() [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [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] help: use the values directly [INFO] [stdout] | [INFO] [stdout] 234 - && &what[offset] == &self.input.chars().nth(self.pos + offset).unwrap() [INFO] [stdout] 234 + && what[offset] == self.input.chars().nth(self.pos + offset).unwrap() [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&Vec` instead of `&[_]` involves a new object where a slice will do [INFO] [stdout] --> src/lexer.rs:276:37 [INFO] [stdout] | [INFO] [stdout] 276 | fn check_previous(consumed: &Vec, until: &Vec) -> bool { [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] 276 - fn check_previous(consumed: &Vec, until: &Vec) -> bool { [INFO] [stdout] 276 + fn check_previous(consumed: &[char], until: &Vec) -> bool { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&Vec` instead of `&[_]` involves a new object where a slice will do [INFO] [stdout] --> src/lexer.rs:261:51 [INFO] [stdout] | [INFO] [stdout] 261 | fn check_next(next: &Option, until: &Vec) -> bool { [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] 261 - fn check_next(next: &Option, until: &Vec) -> bool { [INFO] [stdout] 261 + fn check_next(next: &Option, until: &[char]) -> bool { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: name `NBSP` contains a capitalized acronym [INFO] [stdout] --> src/parser.rs:57:5 [INFO] [stdout] | [INFO] [stdout] 57 | NBSP, [INFO] [stdout] | ^^^^ help: consider making the acronym lowercase, except the initial letter: `Nbsp` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#upper_case_acronyms [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&Vec` instead of `&[_]` involves a new object where a slice will do [INFO] [stdout] --> src/lexer.rs:276:37 [INFO] [stdout] | [INFO] [stdout] 276 | fn check_previous(consumed: &Vec, until: &Vec) -> bool { [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] 276 - fn check_previous(consumed: &Vec, until: &Vec) -> bool { [INFO] [stdout] 276 + fn check_previous(consumed: &[char], until: &Vec) -> bool { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: name `NBSP` contains a capitalized acronym [INFO] [stdout] --> src/parser.rs:57:5 [INFO] [stdout] | [INFO] [stdout] 57 | NBSP, [INFO] [stdout] | ^^^^ help: consider making the acronym lowercase, except the initial letter: `Nbsp` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#upper_case_acronyms [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: accessing first element with `tokens.get(0)` [INFO] [stdout] --> src/parser.rs:70:15 [INFO] [stdout] | [INFO] [stdout] 70 | match tokens.get(0) { [INFO] [stdout] | ^^^^^^^^^^^^^ help: try: `tokens.first()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_first [INFO] [stdout] = note: `#[warn(clippy::get_first)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this boolean expression can be simplified [INFO] [stdout] --> src/parser.rs:208:31 [INFO] [stdout] | [INFO] [stdout] 208 | while !self.eof() [INFO] [stdout] | _______________________________^ [INFO] [stdout] 209 | | && !(self.next_is(&Token::NewLine) [INFO] [stdout] 210 | | && self.next_n_is(&Token::NewLine, 1)) [INFO] [stdout] | |______________________________________________________________________^ help: try: `!(self.eof() || self.next_is(&Token::NewLine) && self.next_n_is(&Token::NewLine, 1))` [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: accessing first element with `self.tokens.get(0)` [INFO] [stdout] --> src/parser.rs:85:43 [INFO] [stdout] | [INFO] [stdout] 85 | while let Some(tok) = self.tokens.get(0) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ help: try: `self.tokens.first()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_first [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: accessing first element with `tokens.get(0)` [INFO] [stdout] --> src/parser.rs:70:15 [INFO] [stdout] | [INFO] [stdout] 70 | match tokens.get(0) { [INFO] [stdout] | ^^^^^^^^^^^^^ help: try: `tokens.first()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_first [INFO] [stdout] = note: `#[warn(clippy::get_first)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this boolean expression can be simplified [INFO] [stdout] --> src/parser.rs:208:31 [INFO] [stdout] | [INFO] [stdout] 208 | while !self.eof() [INFO] [stdout] | _______________________________^ [INFO] [stdout] 209 | | && !(self.next_is(&Token::NewLine) [INFO] [stdout] 210 | | && self.next_n_is(&Token::NewLine, 1)) [INFO] [stdout] | |______________________________________________________________________^ help: try: `!(self.eof() || self.next_is(&Token::NewLine) && self.next_n_is(&Token::NewLine, 1))` [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: `if let .. else` expression looks like `matches!` macro [INFO] [stdout] --> src/parser.rs:105:52 [INFO] [stdout] | [INFO] [stdout] 105 | let should_include_paragraph = if let Some(Token::Text(_)) = self.tokens.get(0) [INFO] [stdout] | ____________________________________________________^ [INFO] [stdout] 106 | | { [INFO] [stdout] 107 | | true [INFO] [stdout] 108 | | } else { [INFO] [stdout] 109 | | false [INFO] [stdout] 110 | | }; [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] 105 - let should_include_paragraph = if let Some(Token::Text(_)) = self.tokens.get(0) [INFO] [stdout] 106 - { [INFO] [stdout] 107 - true [INFO] [stdout] 108 - } else { [INFO] [stdout] 109 - false [INFO] [stdout] 110 - }; [INFO] [stdout] 105 + let should_include_paragraph = matches!(self.tokens.get(0), Some(Token::Text(_))); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: accessing first element with `self.tokens.get(0)` [INFO] [stdout] --> src/parser.rs:105:82 [INFO] [stdout] | [INFO] [stdout] 105 | let should_include_paragraph = if let Some(Token::Text(_)) = self.tokens.get(0) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ help: try: `self.tokens.first()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_first [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: accessing first element with `self.tokens.get(0)` [INFO] [stdout] --> src/parser.rs:113:43 [INFO] [stdout] | [INFO] [stdout] 113 | while let Some(tok) = self.tokens.get(0) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ help: try: `self.tokens.first()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_first [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: accessing first element with `self.tokens.get(0)` [INFO] [stdout] --> src/parser.rs:85:43 [INFO] [stdout] | [INFO] [stdout] 85 | while let Some(tok) = self.tokens.get(0) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ help: try: `self.tokens.first()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_first [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `if let .. else` expression looks like `matches!` macro [INFO] [stdout] --> src/parser.rs:105:52 [INFO] [stdout] | [INFO] [stdout] 105 | let should_include_paragraph = if let Some(Token::Text(_)) = self.tokens.get(0) [INFO] [stdout] | ____________________________________________________^ [INFO] [stdout] 106 | | { [INFO] [stdout] 107 | | true [INFO] [stdout] 108 | | } else { [INFO] [stdout] 109 | | false [INFO] [stdout] 110 | | }; [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] 105 - let should_include_paragraph = if let Some(Token::Text(_)) = self.tokens.get(0) [INFO] [stdout] 106 - { [INFO] [stdout] 107 - true [INFO] [stdout] 108 - } else { [INFO] [stdout] 109 - false [INFO] [stdout] 110 - }; [INFO] [stdout] 105 + let should_include_paragraph = matches!(self.tokens.get(0), Some(Token::Text(_))); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: accessing first element with `self.tokens.get(0)` [INFO] [stdout] --> src/parser.rs:105:82 [INFO] [stdout] | [INFO] [stdout] 105 | let should_include_paragraph = if let Some(Token::Text(_)) = self.tokens.get(0) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ help: try: `self.tokens.first()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_first [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: accessing first element with `self.tokens.get(0)` [INFO] [stdout] --> src/parser.rs:113:43 [INFO] [stdout] | [INFO] [stdout] 113 | while let Some(tok) = self.tokens.get(0) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ help: try: `self.tokens.first()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_first [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: length comparison to zero [INFO] [stdout] --> src/parser.rs:178:34 [INFO] [stdout] | [INFO] [stdout] 178 | let arg = if line.len() > 0 { [INFO] [stdout] | ^^^^^^^^^^^^^^ help: using `!is_empty` is clearer and more explicit: `!line.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: accessing first element with `self.tokens.get(0)` [INFO] [stdout] --> src/parser.rs:213:35 [INFO] [stdout] | [INFO] [stdout] 213 | ... match self.tokens.get(0).unwrap() { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ help: try: `self.tokens.first()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_first [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: length comparison to zero [INFO] [stdout] --> src/parser.rs:178:34 [INFO] [stdout] | [INFO] [stdout] 178 | let arg = if line.len() > 0 { [INFO] [stdout] | ^^^^^^^^^^^^^^ help: using `!is_empty` is clearer and more explicit: `!line.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: accessing first element with `self.tokens.get(0)` [INFO] [stdout] --> src/parser.rs:250:9 [INFO] [stdout] | [INFO] [stdout] 250 | self.tokens.get(0) == Some(what) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ help: try: `self.tokens.first()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_first [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: accessing first element with `self.tokens.get(0)` [INFO] [stdout] --> src/parser.rs:213:35 [INFO] [stdout] | [INFO] [stdout] 213 | ... match self.tokens.get(0).unwrap() { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ help: try: `self.tokens.first()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_first [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: accessing first element with `self.tokens.get(0)` [INFO] [stdout] --> src/parser.rs:250:9 [INFO] [stdout] | [INFO] [stdout] 250 | self.tokens.get(0) == Some(what) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ help: try: `self.tokens.first()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_first [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&Vec` instead of `&[_]` involves a new object where a slice will do [INFO] [stdout] --> src/parser.rs:288:37 [INFO] [stdout] | [INFO] [stdout] 288 | fn check_previous(consumed: &Vec, until: &Vec) -> bool { [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] 288 - fn check_previous(consumed: &Vec, until: &Vec) -> bool { [INFO] [stdout] 288 + fn check_previous(consumed: &[Token], until: &Vec) -> bool { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/parser.rs:292:57 [INFO] [stdout] | [INFO] [stdout] 292 | while !self.eof() && !check_previous(&consumed, &until) { [INFO] [stdout] | ^^^^^^ help: change this to: `until` [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: writing `&Vec` instead of `&[_]` involves a new object where a slice will do [INFO] [stdout] --> src/parser.rs:288:37 [INFO] [stdout] | [INFO] [stdout] 288 | fn check_previous(consumed: &Vec, until: &Vec) -> bool { [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] 288 - fn check_previous(consumed: &Vec, until: &Vec) -> bool { [INFO] [stdout] 288 + fn check_previous(consumed: &[Token], until: &Vec) -> bool { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/parser.rs:292:57 [INFO] [stdout] | [INFO] [stdout] 292 | while !self.eof() && !check_previous(&consumed, &until) { [INFO] [stdout] | ^^^^^^ help: change this to: `until` [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] [stderr] Finished `dev` profile [unoptimized + debuginfo] target(s) in 0.12s [INFO] running `Command { std: "docker" "inspect" "7176689dcf9416f4b9c2415be7c6c42d3a573c154a9d7449d641c5c056a0d715", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "7176689dcf9416f4b9c2415be7c6c42d3a573c154a9d7449d641c5c056a0d715", kill_on_drop: false }` [INFO] [stdout] 7176689dcf9416f4b9c2415be7c6c42d3a573c154a9d7449d641c5c056a0d715