[INFO] crate amber 0.5.1 is already in cache [INFO] extracting crate amber 0.5.1 into work/ex/clippy-test-run/sources/stable/reg/amber/0.5.1 [INFO] extracting crate amber 0.5.1 into work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/reg/amber/0.5.1 [INFO] validating manifest of amber-0.5.1 on toolchain stable [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "read-manifest" "--manifest-path" "Cargo.toml"` [INFO] validating manifest of amber-0.5.1 on toolchain stable+rustflags=-Dclippy::into_iter_on_array [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "read-manifest" "--manifest-path" "Cargo.toml"` [INFO] started frobbing amber-0.5.1 [INFO] finished frobbing amber-0.5.1 [INFO] frobbed toml for amber-0.5.1 written to work/ex/clippy-test-run/sources/stable/reg/amber/0.5.1/Cargo.toml [INFO] started frobbing amber-0.5.1 [INFO] finished frobbing amber-0.5.1 [INFO] frobbed toml for amber-0.5.1 written to work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/reg/amber/0.5.1/Cargo.toml [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "generate-lockfile" "--manifest-path" "Cargo.toml" "-Zno-index-update"` [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "generate-lockfile" "--manifest-path" "Cargo.toml" "-Zno-index-update"` [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "fetch" "--locked" "--manifest-path" "Cargo.toml"` [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "fetch" "--locked" "--manifest-path" "Cargo.toml"` [INFO] linting amber-0.5.1 against stable for clippy-test-run [INFO] running `"docker" "create" "-v" "/mnt/big/crater/work/local/target-dirs/clippy-test-run/worker-2/stable:/opt/crater/target:rw,Z" "-v" "/mnt/big/crater/work/ex/clippy-test-run/sources/stable/reg/amber/0.5.1:/opt/crater/workdir:ro,Z" "-v" "/mnt/big/crater/work/local/cargo-home:/opt/crater/cargo-home:ro,Z" "-v" "/mnt/big/crater/work/local/rustup-home:/opt/crater/rustup-home:ro,Z" "-e" "USER_ID=1000" "-e" "SOURCE_DIR=/opt/crater/workdir" "-e" "MAP_USER_ID=1000" "-e" "CARGO_TARGET_DIR=/opt/crater/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/crater/cargo-home" "-e" "RUSTUP_HOME=/opt/crater/rustup-home" "-w" "/opt/crater/workdir" "-m" "1536M" "--network" "none" "rustops/crates-build-env" "/opt/crater/cargo-home/bin/cargo" "+stable" "clippy" "--frozen" "--all" "--all-targets"` [INFO] [stdout] dae93e62abb75326545799490d45e83d173b4fe296b389e599a732ef4e769bbe [INFO] running `"docker" "start" "-a" "dae93e62abb75326545799490d45e83d173b4fe296b389e599a732ef4e769bbe"` [INFO] [stderr] Compiling semver-parser v0.7.0 [INFO] [stderr] Compiling proc-macro2 v0.4.26 [INFO] [stderr] Compiling libc v0.2.48 [INFO] [stderr] Checking void v1.0.2 [INFO] [stderr] Compiling autocfg v0.1.2 [INFO] [stderr] Compiling arrayvec v0.4.10 [INFO] [stderr] Compiling memchr v2.1.3 [INFO] [stderr] Checking rand_core v0.4.0 [INFO] [stderr] Compiling byteorder v1.3.1 [INFO] [stderr] Checking stable_deref_trait v1.1.1 [INFO] [stderr] Checking nodrop v0.1.13 [INFO] [stderr] Compiling unicode-segmentation v1.2.1 [INFO] [stderr] Checking unicode-width v0.1.5 [INFO] [stderr] Compiling nix v0.11.0 [INFO] [stderr] Checking bitflags v1.0.4 [INFO] [stderr] Checking strsim v0.7.0 [INFO] [stderr] Checking memoffset v0.2.1 [INFO] [stderr] Checking scopeguard v0.3.3 [INFO] [stderr] Checking vec_map v0.8.1 [INFO] [stderr] Checking ansi_term v0.11.0 [INFO] [stderr] Compiling regex v1.1.0 [INFO] [stderr] Checking glob v0.2.11 [INFO] [stderr] Checking rlibc v1.0.0 [INFO] [stderr] Checking unreachable v1.0.0 [INFO] [stderr] Checking rand_core v0.3.1 [INFO] [stderr] Checking rand_jitter v0.1.0 [INFO] [stderr] Compiling semver v0.9.0 [INFO] [stderr] Checking crossbeam-utils v0.3.2 [INFO] [stderr] Checking owning_ref v0.3.3 [INFO] [stderr] Compiling rand_chacha v0.1.1 [INFO] [stderr] Compiling rand v0.6.5 [INFO] [stderr] Checking textwrap v0.10.0 [INFO] [stderr] Checking regex-syntax v0.6.5 [INFO] [stderr] Compiling heck v0.3.1 [INFO] [stderr] Checking smallvec v0.6.8 [INFO] [stderr] Checking rand_hc v0.1.0 [INFO] [stderr] Checking rand_xorshift v0.1.1 [INFO] [stderr] Checking rand_isaac v0.1.1 [INFO] [stderr] Checking crossbeam-epoch v0.4.3 [INFO] [stderr] Compiling rustc_version v0.2.3 [INFO] [stderr] Checking rand v0.4.6 [INFO] [stderr] Checking atty v0.2.11 [INFO] [stderr] Checking rand_os v0.1.1 [INFO] [stderr] Checking termios v0.2.2 [INFO] [stderr] Checking memmap v0.6.2 [INFO] [stderr] Checking num_cpus v1.9.0 [INFO] [stderr] Checking time v0.1.42 [INFO] [stderr] Checking term v0.5.1 [INFO] [stderr] Compiling rand_pcg v0.1.1 [INFO] [stderr] Compiling quote v0.6.11 [INFO] [stderr] Checking clap v2.32.0 [INFO] [stderr] Checking aho-corasick v0.6.9 [INFO] [stderr] Checking getch v0.2.0 [INFO] [stderr] Checking parking_lot_core v0.2.14 [INFO] [stderr] Compiling syn v0.15.26 [INFO] [stderr] Checking parking_lot v0.5.5 [INFO] [stderr] Checking crossbeam-channel v0.1.3 [INFO] [stderr] Checking ctrlc v3.1.1 [INFO] [stderr] Checking tempfile v3.0.5 [INFO] [stderr] Compiling structopt-derive v0.2.14 [INFO] [stderr] Checking structopt v0.2.14 [INFO] [stderr] Checking amber v0.5.1 (/opt/crater/workdir) [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/pipeline_finder.rs:118:91 [INFO] [stderr] | [INFO] [stderr] 118 | let _ = tx[self.current_tx].send(PipelineInfo::SeqDat(self.seq_no, PathInfo { path: path })); [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `path` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::redundant_field_names)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/pipeline_matcher.rs:51:13 [INFO] [stderr] | [INFO] [stderr] 51 | matcher: matcher, [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: replace it with: `matcher` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/pipeline_replacer.rs:52:13 [INFO] [stderr] | [INFO] [stderr] 52 | regex: regex, [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `regex` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/pipeline_finder.rs:118:91 [INFO] [stderr] | [INFO] [stderr] 118 | let _ = tx[self.current_tx].send(PipelineInfo::SeqDat(self.seq_no, PathInfo { path: path })); [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `path` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::redundant_field_names)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/pipeline_matcher.rs:51:13 [INFO] [stderr] | [INFO] [stderr] 51 | matcher: matcher, [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: replace it with: `matcher` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/pipeline_replacer.rs:52:13 [INFO] [stderr] | [INFO] [stderr] 52 | regex: regex, [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `regex` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: digits grouped inconsistently by underscores [INFO] [stderr] --> src/util.rs:48:59 [INFO] [stderr] | [INFO] [stderr] 48 | (dur.as_secs() as f64) + (dur.subsec_nanos() as f64 / 1000_000_000.0) [INFO] [stderr] | ^^^^^^^^^^^^^^ help: consider: `1_000_000_000.0` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::inconsistent_digit_grouping)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#inconsistent_digit_grouping [INFO] [stderr] [INFO] [stderr] warning: this if statement can be collapsed [INFO] [stderr] --> src/console.rs:133:9 [INFO] [stderr] | [INFO] [stderr] 133 | / if self.is_color { [INFO] [stderr] 134 | | if self.color_out != color { [INFO] [stderr] 135 | | self.term_stdout.fg(color).unwrap_or_else(|_| { [INFO] [stderr] 136 | | process::exit(1); [INFO] [stderr] ... | [INFO] [stderr] 140 | | } [INFO] [stderr] 141 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::collapsible_if)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stderr] help: try [INFO] [stderr] | [INFO] [stderr] 133 | if self.is_color && self.color_out != color { [INFO] [stderr] 134 | self.term_stdout.fg(color).unwrap_or_else(|_| { [INFO] [stderr] 135 | process::exit(1); [INFO] [stderr] 136 | }); [INFO] [stderr] 137 | self.color_out = color; [INFO] [stderr] 138 | self.colored_out = true; [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: this if statement can be collapsed [INFO] [stderr] --> src/console.rs:155:9 [INFO] [stderr] | [INFO] [stderr] 155 | / if self.is_color { [INFO] [stderr] 156 | | if self.color_err != color { [INFO] [stderr] 157 | | self.term_stderr.fg(color).unwrap_or_else(|_| { [INFO] [stderr] 158 | | process::exit(1); [INFO] [stderr] ... | [INFO] [stderr] 162 | | } [INFO] [stderr] 163 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stderr] help: try [INFO] [stderr] | [INFO] [stderr] 155 | if self.is_color && self.color_err != color { [INFO] [stderr] 156 | self.term_stderr.fg(color).unwrap_or_else(|_| { [INFO] [stderr] 157 | process::exit(1); [INFO] [stderr] 158 | }); [INFO] [stderr] 159 | self.color_err = color; [INFO] [stderr] 160 | self.colored_err = true; [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: this if statement can be collapsed [INFO] [stderr] --> src/matcher.rs:143:13 [INFO] [stderr] | [INFO] [stderr] 143 | / if success { [INFO] [stderr] 144 | | if MatcherUtil::check_char_boundary(src, i) { [INFO] [stderr] 145 | | ret.push(Match { [INFO] [stderr] 146 | | beg: i, [INFO] [stderr] ... | [INFO] [stderr] 152 | | } [INFO] [stderr] 153 | | } [INFO] [stderr] | |_____________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stderr] help: try [INFO] [stderr] | [INFO] [stderr] 143 | if success && MatcherUtil::check_char_boundary(src, i) { [INFO] [stderr] 144 | ret.push(Match { [INFO] [stderr] 145 | beg: i, [INFO] [stderr] 146 | end: i + pat_len, [INFO] [stderr] 147 | sub_match: Vec::new(), [INFO] [stderr] 148 | }); [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: this if statement can be collapsed [INFO] [stderr] --> src/matcher.rs:405:17 [INFO] [stderr] | [INFO] [stderr] 405 | / if j == mp { [INFO] [stderr] 406 | | if MatcherUtil::check_char_boundary(src, i - mp) { [INFO] [stderr] 407 | | if prev + pat_len as isize <= (i - mp) as isize { [INFO] [stderr] 408 | | ret.push(Match { [INFO] [stderr] ... | [INFO] [stderr] 417 | | } [INFO] [stderr] 418 | | } [INFO] [stderr] | |_________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stderr] help: try [INFO] [stderr] | [INFO] [stderr] 405 | if j == mp && MatcherUtil::check_char_boundary(src, i - mp) { [INFO] [stderr] 406 | if prev + pat_len as isize <= (i - mp) as isize { [INFO] [stderr] 407 | ret.push(Match { [INFO] [stderr] 408 | beg: i - mp, [INFO] [stderr] 409 | end: i - mp + pat_len, [INFO] [stderr] 410 | sub_match: Vec::new(), [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: this if statement can be collapsed [INFO] [stderr] --> src/matcher.rs:429:17 [INFO] [stderr] | [INFO] [stderr] 429 | / if j == pat_len { [INFO] [stderr] 430 | | if MatcherUtil::check_char_boundary(src, i - pat_len) { [INFO] [stderr] 431 | | if prev + pat_len as isize <= (i - pat_len) as isize { [INFO] [stderr] 432 | | ret.push(Match { [INFO] [stderr] ... | [INFO] [stderr] 439 | | } [INFO] [stderr] 440 | | } [INFO] [stderr] | |_________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stderr] help: try [INFO] [stderr] | [INFO] [stderr] 429 | if j == pat_len && MatcherUtil::check_char_boundary(src, i - pat_len) { [INFO] [stderr] 430 | if prev + pat_len as isize <= (i - pat_len) as isize { [INFO] [stderr] 431 | ret.push(Match { [INFO] [stderr] 432 | beg: i - pat_len, [INFO] [stderr] 433 | end: i, [INFO] [stderr] 434 | sub_match: Vec::new(), [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: this if statement can be collapsed [INFO] [stderr] --> src/matcher.rs:430:21 [INFO] [stderr] | [INFO] [stderr] 430 | / if MatcherUtil::check_char_boundary(src, i - pat_len) { [INFO] [stderr] 431 | | if prev + pat_len as isize <= (i - pat_len) as isize { [INFO] [stderr] 432 | | ret.push(Match { [INFO] [stderr] 433 | | beg: i - pat_len, [INFO] [stderr] ... | [INFO] [stderr] 438 | | } [INFO] [stderr] 439 | | } [INFO] [stderr] | |_____________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stderr] help: try [INFO] [stderr] | [INFO] [stderr] 430 | if MatcherUtil::check_char_boundary(src, i - pat_len) && prev + pat_len as isize <= (i - pat_len) as isize { [INFO] [stderr] 431 | ret.push(Match { [INFO] [stderr] 432 | beg: i - pat_len, [INFO] [stderr] 433 | end: i, [INFO] [stderr] 434 | sub_match: Vec::new(), [INFO] [stderr] 435 | }); [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/pipeline_finder.rs:206:9 [INFO] [stderr] | [INFO] [stderr] 206 | return base.clone(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `base.clone()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_return)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: casting u32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/util.rs:48:31 [INFO] [stderr] | [INFO] [stderr] 48 | (dur.as_secs() as f64) + (dur.subsec_nanos() as f64 / 1000_000_000.0) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `f64::from(dur.subsec_nanos())` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::cast_lossless)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: digits grouped inconsistently by underscores [INFO] [stderr] --> src/util.rs:48:59 [INFO] [stderr] | [INFO] [stderr] 48 | (dur.as_secs() as f64) + (dur.subsec_nanos() as f64 / 1000_000_000.0) [INFO] [stderr] | ^^^^^^^^^^^^^^ help: consider: `1_000_000_000.0` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::inconsistent_digit_grouping)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#inconsistent_digit_grouping [INFO] [stderr] [INFO] [stderr] warning: this if statement can be collapsed [INFO] [stderr] --> src/console.rs:133:9 [INFO] [stderr] | [INFO] [stderr] 133 | / if self.is_color { [INFO] [stderr] 134 | | if self.color_out != color { [INFO] [stderr] 135 | | self.term_stdout.fg(color).unwrap_or_else(|_| { [INFO] [stderr] 136 | | process::exit(1); [INFO] [stderr] ... | [INFO] [stderr] 140 | | } [INFO] [stderr] 141 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::collapsible_if)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stderr] help: try [INFO] [stderr] | [INFO] [stderr] 133 | if self.is_color && self.color_out != color { [INFO] [stderr] 134 | self.term_stdout.fg(color).unwrap_or_else(|_| { [INFO] [stderr] 135 | process::exit(1); [INFO] [stderr] 136 | }); [INFO] [stderr] 137 | self.color_out = color; [INFO] [stderr] 138 | self.colored_out = true; [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: this if statement can be collapsed [INFO] [stderr] --> src/console.rs:155:9 [INFO] [stderr] | [INFO] [stderr] 155 | / if self.is_color { [INFO] [stderr] 156 | | if self.color_err != color { [INFO] [stderr] 157 | | self.term_stderr.fg(color).unwrap_or_else(|_| { [INFO] [stderr] 158 | | process::exit(1); [INFO] [stderr] ... | [INFO] [stderr] 162 | | } [INFO] [stderr] 163 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stderr] help: try [INFO] [stderr] | [INFO] [stderr] 155 | if self.is_color && self.color_err != color { [INFO] [stderr] 156 | self.term_stderr.fg(color).unwrap_or_else(|_| { [INFO] [stderr] 157 | process::exit(1); [INFO] [stderr] 158 | }); [INFO] [stderr] 159 | self.color_err = color; [INFO] [stderr] 160 | self.colored_err = true; [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: you should consider adding a `Default` implementation for `console::Console` [INFO] [stderr] --> src/console.rs:34:5 [INFO] [stderr] | [INFO] [stderr] 34 | / pub fn new() -> Self { [INFO] [stderr] 35 | | Console { [INFO] [stderr] 36 | | term_stdout: term::stdout().unwrap_or_else(|| { [INFO] [stderr] 37 | | process::exit(1); [INFO] [stderr] ... | [INFO] [stderr] 47 | | } [INFO] [stderr] 48 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] warning: this if statement can be collapsed [INFO] [stderr] --> src/matcher.rs:143:13 [INFO] [stderr] | [INFO] [stderr] 143 | / if success { [INFO] [stderr] 144 | | if MatcherUtil::check_char_boundary(src, i) { [INFO] [stderr] 145 | | ret.push(Match { [INFO] [stderr] 146 | | beg: i, [INFO] [stderr] ... | [INFO] [stderr] 152 | | } [INFO] [stderr] 153 | | } [INFO] [stderr] | |_____________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stderr] help: try [INFO] [stderr] | [INFO] [stderr] 143 | if success && MatcherUtil::check_char_boundary(src, i) { [INFO] [stderr] 144 | ret.push(Match { [INFO] [stderr] 145 | beg: i, [INFO] [stderr] 146 | end: i + pat_len, [INFO] [stderr] 147 | sub_match: Vec::new(), [INFO] [stderr] 148 | }); [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::new_without_default)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 33 | impl Default for console::Console { [INFO] [stderr] 34 | fn default() -> Self { [INFO] [stderr] 35 | Self::new() [INFO] [stderr] 36 | } [INFO] [stderr] 37 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: this if statement can be collapsed [INFO] [stderr] --> src/matcher.rs:405:17 [INFO] [stderr] | [INFO] [stderr] 405 | / if j == mp { [INFO] [stderr] 406 | | if MatcherUtil::check_char_boundary(src, i - mp) { [INFO] [stderr] 407 | | if prev + pat_len as isize <= (i - mp) as isize { [INFO] [stderr] 408 | | ret.push(Match { [INFO] [stderr] ... | [INFO] [stderr] 417 | | } [INFO] [stderr] 418 | | } [INFO] [stderr] | |_________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stderr] help: try [INFO] [stderr] | [INFO] [stderr] 405 | if j == mp && MatcherUtil::check_char_boundary(src, i - mp) { [INFO] [stderr] 406 | if prev + pat_len as isize <= (i - mp) as isize { [INFO] [stderr] 407 | ret.push(Match { [INFO] [stderr] 408 | beg: i - mp, [INFO] [stderr] 409 | end: i - mp + pat_len, [INFO] [stderr] 410 | sub_match: Vec::new(), [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: this if statement can be collapsed [INFO] [stderr] --> src/matcher.rs:429:17 [INFO] [stderr] | [INFO] [stderr] 429 | / if j == pat_len { [INFO] [stderr] 430 | | if MatcherUtil::check_char_boundary(src, i - pat_len) { [INFO] [stderr] 431 | | if prev + pat_len as isize <= (i - pat_len) as isize { [INFO] [stderr] 432 | | ret.push(Match { [INFO] [stderr] ... | [INFO] [stderr] 439 | | } [INFO] [stderr] 440 | | } [INFO] [stderr] | |_________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stderr] help: try [INFO] [stderr] | [INFO] [stderr] 429 | if j == pat_len && MatcherUtil::check_char_boundary(src, i - pat_len) { [INFO] [stderr] 430 | if prev + pat_len as isize <= (i - pat_len) as isize { [INFO] [stderr] 431 | ret.push(Match { [INFO] [stderr] 432 | beg: i - pat_len, [INFO] [stderr] 433 | end: i, [INFO] [stderr] 434 | sub_match: Vec::new(), [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: this if statement can be collapsed [INFO] [stderr] --> src/matcher.rs:430:21 [INFO] [stderr] | [INFO] [stderr] 430 | / if MatcherUtil::check_char_boundary(src, i - pat_len) { [INFO] [stderr] 431 | | if prev + pat_len as isize <= (i - pat_len) as isize { [INFO] [stderr] 432 | | ret.push(Match { [INFO] [stderr] 433 | | beg: i - pat_len, [INFO] [stderr] ... | [INFO] [stderr] 438 | | } [INFO] [stderr] 439 | | } [INFO] [stderr] | |_____________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stderr] help: try [INFO] [stderr] | [INFO] [stderr] 430 | if MatcherUtil::check_char_boundary(src, i - pat_len) && prev + pat_len as isize <= (i - pat_len) as isize { [INFO] [stderr] 431 | ret.push(Match { [INFO] [stderr] 432 | beg: i - pat_len, [INFO] [stderr] 433 | end: i, [INFO] [stderr] 434 | sub_match: Vec::new(), [INFO] [stderr] 435 | }); [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/pipeline_finder.rs:206:9 [INFO] [stderr] | [INFO] [stderr] 206 | return base.clone(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `base.clone()` [INFO] [stderr] | [INFO] [stderr] warning: you should consider deriving a `Default` implementation for `ignore::IgnoreVcs` [INFO] [stderr] --> src/ignore.rs:24:5 [INFO] [stderr] | [INFO] [stderr] 24 | / pub fn new() -> Self { [INFO] [stderr] 25 | | IgnoreVcs { [INFO] [stderr] = note: #[warn(clippy::needless_return)] on by default [INFO] [stderr] 26 | | vcs_dirs: vec![ [INFO] [stderr] 27 | | ".svn".to_string(), [INFO] [stderr] ... | [INFO] [stderr] 32 | | } [INFO] [stderr] 33 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::new_without_default_derive)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default_derive [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 19 | #[derive(Default)] [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: single-character string constant used as pattern [INFO] [stderr] --> src/ignore.rs:109:41 [INFO] [stderr] | [INFO] [stderr] 109 | if s == "" || s.starts_with("#") { [INFO] [stderr] | ^^^ help: try using a char instead: `'#'` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::single_char_pattern)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_char_pattern [INFO] [stderr] [INFO] [stderr] warning: single-character string constant used as pattern [INFO] [stderr] --> src/ignore.rs:111:37 [INFO] [stderr] | [INFO] [stderr] 111 | } else if s.starts_with("!") { [INFO] [stderr] | ^^^ help: try using a char instead: `'!'` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_char_pattern [INFO] [stderr] [INFO] [stderr] warning: single-character string constant used as pattern [INFO] [stderr] --> src/ignore.rs:113:35 [INFO] [stderr] | [INFO] [stderr] 113 | } else if !s.contains("/") { [INFO] [stderr] | ^^^ help: try using a char instead: `'/'` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_char_pattern [INFO] [stderr] [INFO] [stderr] warning: using `clone` on a `Copy` type [INFO] [stderr] --> src/ignore.rs:118:31 [INFO] [stderr] | [INFO] [stderr] 118 | head: head.clone(), [INFO] [stderr] | ^^^^^^^^^^^^ help: try removing the `clone` call: `head` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::clone_on_copy)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stderr] [INFO] [stderr] warning: using `clone` on a `Copy` type [INFO] [stderr] --> src/ignore.rs:119:31 [INFO] [stderr] | [INFO] [stderr] 119 | tail: tail.clone(), [INFO] [stderr] | ^^^^^^^^^^^^ help: try removing the `clone` call: `tail` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stderr] [INFO] [stderr] warning: using `clone` on a `Copy` type [INFO] [stderr] --> src/ignore.rs:123:31 [INFO] [stderr] | [INFO] [stderr] 123 | head: head.clone(), [INFO] [stderr] | ^^^^^^^^^^^^ help: try removing the `clone` call: `head` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stderr] [INFO] [stderr] warning: using `clone` on a `Copy` type [INFO] [stderr] --> src/ignore.rs:124:31 [INFO] [stderr] | [INFO] [stderr] 124 | tail: tail.clone(), [INFO] [stderr] | ^^^^^^^^^^^^ help: try removing the `clone` call: `tail` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stderr] [INFO] [stderr] warning: single-character string constant used as pattern [INFO] [stderr] --> src/ignore.rs:127:35 [INFO] [stderr] | [INFO] [stderr] 127 | } else if s.ends_with("/") && s.find("/").unwrap() < s.len() - 1 { [INFO] [stderr] | ^^^ help: try using a char instead: `'/'` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_char_pattern [INFO] [stderr] [INFO] [stderr] warning: single-character string constant used as pattern [INFO] [stderr] --> src/ignore.rs:127:50 [INFO] [stderr] | [INFO] [stderr] 127 | } else if s.ends_with("/") && s.find("/").unwrap() < s.len() - 1 { [INFO] [stderr] | ^^^ help: try using a char instead: `'/'` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_char_pattern [INFO] [stderr] [INFO] [stderr] warning: using `clone` on a `Copy` type [INFO] [stderr] --> src/ignore.rs:133:31 [INFO] [stderr] | [INFO] [stderr] 133 | head: head.clone(), [INFO] [stderr] | ^^^^^^^^^^^^ help: try removing the `clone` call: `head` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stderr] [INFO] [stderr] warning: using `clone` on a `Copy` type [INFO] [stderr] --> src/ignore.rs:134:31 [INFO] [stderr] | [INFO] [stderr] 134 | tail: tail.clone(), [INFO] [stderr] | ^^^^^^^^^^^^ help: try removing the `clone` call: `tail` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stderr] [INFO] [stderr] warning: single-character string constant used as pattern [INFO] [stderr] --> src/ignore.rs:137:35 [INFO] [stderr] | [INFO] [stderr] 137 | } else if s.ends_with("/") { [INFO] [stderr] | ^^^ help: try using a char instead: `'/'` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_char_pattern [INFO] [stderr] [INFO] [stderr] warning: using `clone` on a `Copy` type [INFO] [stderr] --> src/ignore.rs:143:31 [INFO] [stderr] | [INFO] [stderr] 143 | head: head.clone(), [INFO] [stderr] | ^^^^^^^^^^^^ help: try removing the `clone` call: `head` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stderr] [INFO] [stderr] warning: using `clone` on a `Copy` type [INFO] [stderr] --> src/ignore.rs:144:31 [INFO] [stderr] | [INFO] [stderr] 144 | tail: tail.clone(), [INFO] [stderr] | ^^^^^^^^^^^^ help: try removing the `clone` call: `tail` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stderr] [INFO] [stderr] warning: using `clone` on a `Copy` type [INFO] [stderr] --> src/ignore.rs:153:31 [INFO] [stderr] | [INFO] [stderr] 153 | head: head.clone(), [INFO] [stderr] | ^^^^^^^^^^^^ help: try removing the `clone` call: `head` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stderr] [INFO] [stderr] warning: using `clone` on a `Copy` type [INFO] [stderr] --> src/ignore.rs:154:31 [INFO] [stderr] | [INFO] [stderr] 154 | tail: tail.clone(), [INFO] [stderr] | ^^^^^^^^^^^^ help: try removing the `clone` call: `tail` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stderr] [INFO] [stderr] warning: using `clone` on a `Copy` type [INFO] [stderr] --> src/ignore.rs:158:31 [INFO] [stderr] | [INFO] [stderr] 158 | head: head.clone(), [INFO] [stderr] | ^^^^^^^^^^^^ help: try removing the `clone` call: `head` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stderr] [INFO] [stderr] warning: using `clone` on a `Copy` type [INFO] [stderr] --> src/ignore.rs:159:31 [INFO] [stderr] | [INFO] [stderr] 159 | tail: tail.clone(), [INFO] [stderr] | ^^^^^^^^^^^^ help: try removing the `clone` call: `tail` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stderr] [INFO] [stderr] warning: single-character string constant used as pattern [INFO] [stderr] --> src/ignore.rs:169:37 [INFO] [stderr] | [INFO] [stderr] 169 | let ret = if s1.starts_with("/") { [INFO] [stderr] | ^^^ help: try using a char instead: `'/'` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_char_pattern [INFO] [stderr] [INFO] [stderr] warning: single-character string constant used as pattern [INFO] [stderr] --> src/ignore.rs:178:24 [INFO] [stderr] | [INFO] [stderr] 178 | if s.ends_with("/") { [INFO] [stderr] | ^^^ help: try using a char instead: `'/'` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_char_pattern [INFO] [stderr] [INFO] [stderr] warning: single-character string constant used as pattern [INFO] [stderr] --> src/ignore.rs:190:45 [INFO] [stderr] | [INFO] [stderr] 190 | let mut head_check = !p.starts_with("\\"); [INFO] [stderr] | ^^^^ help: try using a char instead: `'\\'` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_char_pattern [INFO] [stderr] [INFO] [stderr] warning: single-character string constant used as pattern [INFO] [stderr] --> src/ignore.rs:191:38 [INFO] [stderr] | [INFO] [stderr] 191 | head_check &= !p.starts_with("*"); [INFO] [stderr] | ^^^ help: try using a char instead: `'*'` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_char_pattern [INFO] [stderr] [INFO] [stderr] warning: single-character string constant used as pattern [INFO] [stderr] --> src/ignore.rs:192:38 [INFO] [stderr] | [INFO] [stderr] 192 | head_check &= !p.starts_with("?"); [INFO] [stderr] | ^^^ help: try using a char instead: `'?'` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_char_pattern [INFO] [stderr] [INFO] [stderr] warning: single-character string constant used as pattern [INFO] [stderr] --> src/ignore.rs:193:38 [INFO] [stderr] | [INFO] [stderr] 193 | head_check &= !p.starts_with("["); [INFO] [stderr] | ^^^ help: try using a char instead: `'['` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_char_pattern [INFO] [stderr] [INFO] [stderr] warning: single-character string constant used as pattern [INFO] [stderr] --> src/ignore.rs:195:43 [INFO] [stderr] | [INFO] [stderr] 195 | let mut tail_check = !p.ends_with("*"); [INFO] [stderr] | ^^^ help: try using a char instead: `'*'` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_char_pattern [INFO] [stderr] [INFO] [stderr] warning: single-character string constant used as pattern [INFO] [stderr] --> src/ignore.rs:196:36 [INFO] [stderr] | [INFO] [stderr] 196 | tail_check &= !p.ends_with("?"); [INFO] [stderr] | ^^^ help: try using a char instead: `'?'` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_char_pattern [INFO] [stderr] [INFO] [stderr] warning: single-character string constant used as pattern [INFO] [stderr] --> src/ignore.rs:197:36 [INFO] [stderr] | [INFO] [stderr] 197 | tail_check &= !p.ends_with("]"); [INFO] [stderr] | ^^^ help: try using a char instead: `']'` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_char_pattern [INFO] [stderr] [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/ignore.rs:206:52 [INFO] [stderr] | [INFO] [stderr] 206 | fn is_ignore_sub(&self, path: &PathBuf, names: &Vec, paths: &Vec) -> bool { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: change this to: `&[IgnoreGitPat]` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::ptr_arg)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/ignore.rs:206:79 [INFO] [stderr] | [INFO] [stderr] 206 | fn is_ignore_sub(&self, path: &PathBuf, names: &Vec, paths: &Vec) -> bool { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: change this to: `&[IgnoreGitPat]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: you should consider deriving a `Default` implementation for `matcher::BruteForceMatcher` [INFO] [stderr] --> src/matcher.rs:66:5 [INFO] [stderr] | [INFO] [stderr] 66 | / pub fn new() -> Self { [INFO] [stderr] 67 | | BruteForceMatcher [INFO] [stderr] 68 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default_derive [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 63 | #[derive(Default)] [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you should consider deriving a `Default` implementation for `matcher::QuickSearchMatcher` [INFO] [stderr] --> src/matcher.rs:115:5 [INFO] [stderr] | [INFO] [stderr] 115 | / pub fn new() -> Self { [INFO] [stderr] 116 | | QuickSearchMatcher { [INFO] [stderr] 117 | | max_threads: 4, [INFO] [stderr] 118 | | size_per_thread: 1024 * 1024, [INFO] [stderr] 119 | | } [INFO] [stderr] 120 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default_derive [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 109 | #[derive(Default)] [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: use of `offset` with a `usize` casted to an `isize` [INFO] [stderr] --> src/matcher.rs:139:34 [INFO] [stderr] | [INFO] [stderr] 139 | let ret = memcmp(src_ptr.offset(i as isize), pat_ptr, pat_len); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `src_ptr.add(i)` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::ptr_offset_with_cast)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_offset_with_cast [INFO] [stderr] [INFO] [stderr] warning: this if-then-else expression returns a bool literal [INFO] [stderr] --> src/matcher.rs:140:27 [INFO] [stderr] | [INFO] [stderr] 140 | success = if ret == 0 { true } else { false }; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: you can reduce it to: `ret == 0` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_bool)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_bool [INFO] [stderr] [INFO] [stderr] warning: use of `offset` with a `usize` casted to an `isize` [INFO] [stderr] --> src/matcher.rs:159:26 [INFO] [stderr] | [INFO] [stderr] 159 | let t = *src_ptr.offset((i + pat_len) as isize) as isize; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `src_ptr.add((i + pat_len))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_offset_with_cast [INFO] [stderr] [INFO] [stderr] warning: called `.get().unwrap()` on a HashMap. Using `[]` is more clear and more concise [INFO] [stderr] --> src/matcher.rs:208:27 [INFO] [stderr] | [INFO] [stderr] 208 | let tmp = rets.get(&i).unwrap(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: try this: `&rets[&i]` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::get_unwrap)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_unwrap [INFO] [stderr] [INFO] [stderr] warning: you should consider deriving a `Default` implementation for `matcher::TbmMatcher` [INFO] [stderr] --> src/matcher.rs:228:5 [INFO] [stderr] | [INFO] [stderr] 228 | / pub fn new() -> Self { [INFO] [stderr] 229 | | TbmMatcher { [INFO] [stderr] 230 | | max_threads: 4, [INFO] [stderr] 231 | | size_per_thread: 1024 * 1024, [INFO] [stderr] 232 | | } [INFO] [stderr] 233 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default_derive [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 222 | #[derive(Default)] [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: use of `offset` with a `usize` casted to an `isize` [INFO] [stderr] --> src/matcher.rs:267:34 [INFO] [stderr] | [INFO] [stderr] 267 | let ret = memcmp(src_ptr.offset((i + 1 - pat_len) as isize), pat_ptr, pat_len); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `src_ptr.add((i + 1 - pat_len))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_offset_with_cast [INFO] [stderr] [INFO] [stderr] warning: called `.get().unwrap()` on a HashMap. Using `[]` is more clear and more concise [INFO] [stderr] --> src/matcher.rs:339:27 [INFO] [stderr] | [INFO] [stderr] 339 | let tmp = rets.get(&i).unwrap(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: try this: `&rets[&i]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_unwrap [INFO] [stderr] [INFO] [stderr] warning: you should consider deriving a `Default` implementation for `matcher::FjsMatcher` [INFO] [stderr] --> src/matcher.rs:360:5 [INFO] [stderr] | [INFO] [stderr] 360 | / pub fn new() -> Self { [INFO] [stderr] 361 | | FjsMatcher { [INFO] [stderr] 362 | | max_threads: 4, [INFO] [stderr] 363 | | size_per_thread: 1024 * 1024, [INFO] [stderr] 364 | | use_sse: false, [INFO] [stderr] 365 | | } [INFO] [stderr] 366 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default_derive [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 353 | #[derive(Default)] [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] error: this comparison involving the minimum or maximum element for this type contains a case that is always true or always false [INFO] [stderr] --> src/matcher.rs:389:16 [INFO] [stderr] | [INFO] [stderr] 389 | if j <= 0 { [INFO] [stderr] | ^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[deny(clippy::absurd_extreme_comparisons)] on by default [INFO] [stderr] = help: because 0 is the minimum value for this type, the case where the two sides are not equal never occurs, consider using j == 0 instead [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#absurd_extreme_comparisons [INFO] [stderr] [INFO] [stderr] error: this comparison involving the minimum or maximum element for this type contains a case that is always true or always false [INFO] [stderr] --> src/matcher.rs:419:20 [INFO] [stderr] | [INFO] [stderr] 419 | if j <= 0 { [INFO] [stderr] | ^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: because 0 is the minimum value for this type, the case where the two sides are not equal never occurs, consider using j == 0 instead [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#absurd_extreme_comparisons [INFO] [stderr] [INFO] [stderr] warning: called `.get().unwrap()` on a HashMap. Using `[]` is more clear and more concise [INFO] [stderr] --> src/matcher.rs:505:27 [INFO] [stderr] | [INFO] [stderr] 505 | let tmp = rets.get(&i).unwrap(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: try this: `&rets[&i]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_unwrap [INFO] [stderr] [INFO] [stderr] warning: you should consider deriving a `Default` implementation for `matcher::RegexMatcher` [INFO] [stderr] --> src/matcher.rs:522:5 [INFO] [stderr] | [INFO] [stderr] 522 | / pub fn new() -> Self { [INFO] [stderr] 523 | | RegexMatcher [INFO] [stderr] 524 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default_derive [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 519 | #[derive(Default)] [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you should consider adding a `Default` implementation for `pipeline_finder::PipelineFinder` [INFO] [stderr] --> src/pipeline_finder.rs:41:5 [INFO] [stderr] | [INFO] [stderr] 41 | / pub fn new() -> Self { [INFO] [stderr] 42 | | PipelineFinder { [INFO] [stderr] 43 | | is_recursive: true, [INFO] [stderr] 44 | | follow_symlink: true, [INFO] [stderr] ... | [INFO] [stderr] 59 | | } [INFO] [stderr] 60 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 40 | impl Default for pipeline_finder::PipelineFinder { [INFO] [stderr] 41 | fn default() -> Self { [INFO] [stderr] 42 | Self::new() [INFO] [stderr] 43 | } [INFO] [stderr] 44 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/pipeline_finder.rs:62:48 [INFO] [stderr] | [INFO] [stderr] 62 | fn find_path(&mut self, base: PathBuf, tx: &Vec>>, is_symlink: bool) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: change this to: `&[Sender>]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/pipeline_finder.rs:116:48 [INFO] [stderr] | [INFO] [stderr] 116 | fn send_path(&mut self, path: PathBuf, tx: &Vec>>) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: change this to: `&[Sender>]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: the loop variable `i` is only used to index `src`. [INFO] [stderr] --> src/pipeline_matcher.rs:86:26 [INFO] [stderr] | [INFO] [stderr] 86 | for i in 0..check_bytes { [INFO] [stderr] | ^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_range_loop)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stderr] help: consider using an iterator [INFO] [stderr] | [INFO] [stderr] 86 | for in src.iter().take(check_bytes) { [INFO] [stderr] | ^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: you should consider adding a `Default` implementation for `pipeline_printer::PipelinePrinter` [INFO] [stderr] --> src/pipeline_printer.rs:29:5 [INFO] [stderr] | [INFO] [stderr] 29 | / pub fn new() -> Self { [INFO] [stderr] 30 | | PipelinePrinter { [INFO] [stderr] 31 | | is_color: true, [INFO] [stderr] 32 | | print_file: true, [INFO] [stderr] ... | [INFO] [stderr] 40 | | } [INFO] [stderr] 41 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 28 | impl Default for pipeline_printer::PipelinePrinter { [INFO] [stderr] 29 | fn default() -> Self { [INFO] [stderr] 30 | Self::new() [INFO] [stderr] 31 | } [INFO] [stderr] 32 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: called `.get().unwrap()` on a HashMap. Using `[]` is more clear and more concise [INFO] [stderr] --> src/pipeline_sorter.rs:58:51 [INFO] [stderr] | [INFO] [stderr] 58 | let ret = self.map.get(&self.seq_no).unwrap(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `&self.map[&self.seq_no]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_unwrap [INFO] [stderr] [INFO] [stderr] error: aborting due to 2 previous errors [INFO] [stderr] [INFO] [stderr] error: Could not compile `amber`. [INFO] [stderr] warning: build failed, waiting for other jobs to finish... [INFO] [stderr] warning: casting u32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/util.rs:48:31 [INFO] [stderr] | [INFO] [stderr] 48 | (dur.as_secs() as f64) + (dur.subsec_nanos() as f64 / 1000_000_000.0) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `f64::from(dur.subsec_nanos())` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::cast_lossless)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: you should consider adding a `Default` implementation for `console::Console` [INFO] [stderr] --> src/console.rs:34:5 [INFO] [stderr] | [INFO] [stderr] 34 | / pub fn new() -> Self { [INFO] [stderr] 35 | | Console { [INFO] [stderr] 36 | | term_stdout: term::stdout().unwrap_or_else(|| { [INFO] [stderr] 37 | | process::exit(1); [INFO] [stderr] ... | [INFO] [stderr] 47 | | } [INFO] [stderr] 48 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::new_without_default)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 33 | impl Default for console::Console { [INFO] [stderr] 34 | fn default() -> Self { [INFO] [stderr] 35 | Self::new() [INFO] [stderr] 36 | } [INFO] [stderr] 37 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you should consider deriving a `Default` implementation for `ignore::IgnoreVcs` [INFO] [stderr] --> src/ignore.rs:24:5 [INFO] [stderr] | [INFO] [stderr] 24 | / pub fn new() -> Self { [INFO] [stderr] 25 | | IgnoreVcs { [INFO] [stderr] 26 | | vcs_dirs: vec![ [INFO] [stderr] 27 | | ".svn".to_string(), [INFO] [stderr] ... | [INFO] [stderr] 32 | | } [INFO] [stderr] 33 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::new_without_default_derive)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default_derive [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 19 | #[derive(Default)] [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: single-character string constant used as pattern [INFO] [stderr] --> src/ignore.rs:109:41 [INFO] [stderr] | [INFO] [stderr] 109 | if s == "" || s.starts_with("#") { [INFO] [stderr] | ^^^ help: try using a char instead: `'#'` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::single_char_pattern)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_char_pattern [INFO] [stderr] [INFO] [stderr] warning: single-character string constant used as pattern [INFO] [stderr] --> src/ignore.rs:111:37 [INFO] [stderr] | [INFO] [stderr] 111 | } else if s.starts_with("!") { [INFO] [stderr] | ^^^ help: try using a char instead: `'!'` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_char_pattern [INFO] [stderr] [INFO] [stderr] warning: single-character string constant used as pattern [INFO] [stderr] --> src/ignore.rs:113:35 [INFO] [stderr] | [INFO] [stderr] 113 | } else if !s.contains("/") { [INFO] [stderr] | ^^^ help: try using a char instead: `'/'` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_char_pattern [INFO] [stderr] [INFO] [stderr] warning: using `clone` on a `Copy` type [INFO] [stderr] --> src/ignore.rs:118:31 [INFO] [stderr] | [INFO] [stderr] 118 | head: head.clone(), [INFO] [stderr] | ^^^^^^^^^^^^ help: try removing the `clone` call: `head` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::clone_on_copy)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stderr] [INFO] [stderr] warning: using `clone` on a `Copy` type [INFO] [stderr] --> src/ignore.rs:119:31 [INFO] [stderr] | [INFO] [stderr] 119 | tail: tail.clone(), [INFO] [stderr] | ^^^^^^^^^^^^ help: try removing the `clone` call: `tail` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stderr] [INFO] [stderr] warning: using `clone` on a `Copy` type [INFO] [stderr] --> src/ignore.rs:123:31 [INFO] [stderr] | [INFO] [stderr] 123 | head: head.clone(), [INFO] [stderr] | ^^^^^^^^^^^^ help: try removing the `clone` call: `head` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stderr] [INFO] [stderr] warning: using `clone` on a `Copy` type [INFO] [stderr] --> src/ignore.rs:124:31 [INFO] [stderr] | [INFO] [stderr] 124 | tail: tail.clone(), [INFO] [stderr] | ^^^^^^^^^^^^ help: try removing the `clone` call: `tail` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stderr] [INFO] [stderr] warning: single-character string constant used as pattern [INFO] [stderr] --> src/ignore.rs:127:35 [INFO] [stderr] | [INFO] [stderr] 127 | } else if s.ends_with("/") && s.find("/").unwrap() < s.len() - 1 { [INFO] [stderr] | ^^^ help: try using a char instead: `'/'` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_char_pattern [INFO] [stderr] [INFO] [stderr] warning: single-character string constant used as pattern [INFO] [stderr] --> src/ignore.rs:127:50 [INFO] [stderr] | [INFO] [stderr] 127 | } else if s.ends_with("/") && s.find("/").unwrap() < s.len() - 1 { [INFO] [stderr] | ^^^ help: try using a char instead: `'/'` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_char_pattern [INFO] [stderr] [INFO] [stderr] warning: using `clone` on a `Copy` type [INFO] [stderr] --> src/ignore.rs:133:31 [INFO] [stderr] | [INFO] [stderr] 133 | head: head.clone(), [INFO] [stderr] | ^^^^^^^^^^^^ help: try removing the `clone` call: `head` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stderr] [INFO] [stderr] warning: using `clone` on a `Copy` type [INFO] [stderr] --> src/ignore.rs:134:31 [INFO] [stderr] | [INFO] [stderr] 134 | tail: tail.clone(), [INFO] [stderr] | ^^^^^^^^^^^^ help: try removing the `clone` call: `tail` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stderr] [INFO] [stderr] warning: single-character string constant used as pattern [INFO] [stderr] --> src/ignore.rs:137:35 [INFO] [stderr] | [INFO] [stderr] 137 | } else if s.ends_with("/") { [INFO] [stderr] | ^^^ help: try using a char instead: `'/'` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_char_pattern [INFO] [stderr] [INFO] [stderr] warning: using `clone` on a `Copy` type [INFO] [stderr] --> src/ignore.rs:143:31 [INFO] [stderr] | [INFO] [stderr] 143 | head: head.clone(), [INFO] [stderr] | ^^^^^^^^^^^^ help: try removing the `clone` call: `head` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stderr] [INFO] [stderr] warning: using `clone` on a `Copy` type [INFO] [stderr] --> src/ignore.rs:144:31 [INFO] [stderr] | [INFO] [stderr] 144 | tail: tail.clone(), [INFO] [stderr] | ^^^^^^^^^^^^ help: try removing the `clone` call: `tail` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stderr] [INFO] [stderr] warning: using `clone` on a `Copy` type [INFO] [stderr] --> src/ignore.rs:153:31 [INFO] [stderr] | [INFO] [stderr] 153 | head: head.clone(), [INFO] [stderr] | ^^^^^^^^^^^^ help: try removing the `clone` call: `head` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stderr] [INFO] [stderr] warning: using `clone` on a `Copy` type [INFO] [stderr] --> src/ignore.rs:154:31 [INFO] [stderr] | [INFO] [stderr] 154 | tail: tail.clone(), [INFO] [stderr] | ^^^^^^^^^^^^ help: try removing the `clone` call: `tail` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stderr] [INFO] [stderr] warning: using `clone` on a `Copy` type [INFO] [stderr] --> src/ignore.rs:158:31 [INFO] [stderr] | [INFO] [stderr] 158 | head: head.clone(), [INFO] [stderr] | ^^^^^^^^^^^^ help: try removing the `clone` call: `head` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stderr] [INFO] [stderr] warning: using `clone` on a `Copy` type [INFO] [stderr] --> src/ignore.rs:159:31 [INFO] [stderr] | [INFO] [stderr] 159 | tail: tail.clone(), [INFO] [stderr] | ^^^^^^^^^^^^ help: try removing the `clone` call: `tail` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stderr] [INFO] [stderr] warning: single-character string constant used as pattern [INFO] [stderr] --> src/ignore.rs:169:37 [INFO] [stderr] | [INFO] [stderr] 169 | let ret = if s1.starts_with("/") { [INFO] [stderr] | ^^^ help: try using a char instead: `'/'` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_char_pattern [INFO] [stderr] [INFO] [stderr] warning: single-character string constant used as pattern [INFO] [stderr] --> src/ignore.rs:178:24 [INFO] [stderr] | [INFO] [stderr] 178 | if s.ends_with("/") { [INFO] [stderr] | ^^^ help: try using a char instead: `'/'` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_char_pattern [INFO] [stderr] [INFO] [stderr] warning: single-character string constant used as pattern [INFO] [stderr] --> src/ignore.rs:190:45 [INFO] [stderr] | [INFO] [stderr] 190 | let mut head_check = !p.starts_with("\\"); [INFO] [stderr] | ^^^^ help: try using a char instead: `'\\'` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_char_pattern [INFO] [stderr] [INFO] [stderr] warning: single-character string constant used as pattern [INFO] [stderr] --> src/ignore.rs:191:38 [INFO] [stderr] | [INFO] [stderr] 191 | head_check &= !p.starts_with("*"); [INFO] [stderr] | ^^^ help: try using a char instead: `'*'` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_char_pattern [INFO] [stderr] [INFO] [stderr] warning: single-character string constant used as pattern [INFO] [stderr] --> src/ignore.rs:192:38 [INFO] [stderr] | [INFO] [stderr] 192 | head_check &= !p.starts_with("?"); [INFO] [stderr] | ^^^ help: try using a char instead: `'?'` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_char_pattern [INFO] [stderr] [INFO] [stderr] warning: single-character string constant used as pattern [INFO] [stderr] --> src/ignore.rs:193:38 [INFO] [stderr] | [INFO] [stderr] 193 | head_check &= !p.starts_with("["); [INFO] [stderr] | ^^^ help: try using a char instead: `'['` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_char_pattern [INFO] [stderr] [INFO] [stderr] warning: single-character string constant used as pattern [INFO] [stderr] --> src/ignore.rs:195:43 [INFO] [stderr] | [INFO] [stderr] 195 | let mut tail_check = !p.ends_with("*"); [INFO] [stderr] | ^^^ help: try using a char instead: `'*'` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_char_pattern [INFO] [stderr] [INFO] [stderr] warning: single-character string constant used as pattern [INFO] [stderr] --> src/ignore.rs:196:36 [INFO] [stderr] | [INFO] [stderr] 196 | tail_check &= !p.ends_with("?"); [INFO] [stderr] | ^^^ help: try using a char instead: `'?'` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_char_pattern [INFO] [stderr] [INFO] [stderr] warning: single-character string constant used as pattern [INFO] [stderr] --> src/ignore.rs:197:36 [INFO] [stderr] | [INFO] [stderr] 197 | tail_check &= !p.ends_with("]"); [INFO] [stderr] | ^^^ help: try using a char instead: `']'` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_char_pattern [INFO] [stderr] [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/ignore.rs:206:52 [INFO] [stderr] | [INFO] [stderr] 206 | fn is_ignore_sub(&self, path: &PathBuf, names: &Vec, paths: &Vec) -> bool { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: change this to: `&[IgnoreGitPat]` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::ptr_arg)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/ignore.rs:206:79 [INFO] [stderr] | [INFO] [stderr] 206 | fn is_ignore_sub(&self, path: &PathBuf, names: &Vec, paths: &Vec) -> bool { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: change this to: `&[IgnoreGitPat]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: you should consider deriving a `Default` implementation for `matcher::BruteForceMatcher` [INFO] [stderr] --> src/matcher.rs:66:5 [INFO] [stderr] | [INFO] [stderr] 66 | / pub fn new() -> Self { [INFO] [stderr] 67 | | BruteForceMatcher [INFO] [stderr] 68 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default_derive [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 63 | #[derive(Default)] [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you should consider deriving a `Default` implementation for `matcher::QuickSearchMatcher` [INFO] [stderr] --> src/matcher.rs:115:5 [INFO] [stderr] | [INFO] [stderr] 115 | / pub fn new() -> Self { [INFO] [stderr] 116 | | QuickSearchMatcher { [INFO] [stderr] 117 | | max_threads: 4, [INFO] [stderr] 118 | | size_per_thread: 1024 * 1024, [INFO] [stderr] 119 | | } [INFO] [stderr] 120 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default_derive [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 109 | #[derive(Default)] [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: use of `offset` with a `usize` casted to an `isize` [INFO] [stderr] --> src/matcher.rs:139:34 [INFO] [stderr] | [INFO] [stderr] 139 | let ret = memcmp(src_ptr.offset(i as isize), pat_ptr, pat_len); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `src_ptr.add(i)` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::ptr_offset_with_cast)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_offset_with_cast [INFO] [stderr] [INFO] [stderr] warning: this if-then-else expression returns a bool literal [INFO] [stderr] --> src/matcher.rs:140:27 [INFO] [stderr] | [INFO] [stderr] 140 | success = if ret == 0 { true } else { false }; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: you can reduce it to: `ret == 0` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_bool)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_bool [INFO] [stderr] [INFO] [stderr] warning: use of `offset` with a `usize` casted to an `isize` [INFO] [stderr] --> src/matcher.rs:159:26 [INFO] [stderr] | [INFO] [stderr] 159 | let t = *src_ptr.offset((i + pat_len) as isize) as isize; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `src_ptr.add((i + pat_len))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_offset_with_cast [INFO] [stderr] [INFO] [stderr] warning: called `.get().unwrap()` on a HashMap. Using `[]` is more clear and more concise [INFO] [stderr] --> src/matcher.rs:208:27 [INFO] [stderr] | [INFO] [stderr] 208 | let tmp = rets.get(&i).unwrap(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: try this: `&rets[&i]` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::get_unwrap)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_unwrap [INFO] [stderr] [INFO] [stderr] warning: you should consider deriving a `Default` implementation for `matcher::TbmMatcher` [INFO] [stderr] --> src/matcher.rs:228:5 [INFO] [stderr] | [INFO] [stderr] 228 | / pub fn new() -> Self { [INFO] [stderr] 229 | | TbmMatcher { [INFO] [stderr] 230 | | max_threads: 4, [INFO] [stderr] 231 | | size_per_thread: 1024 * 1024, [INFO] [stderr] 232 | | } [INFO] [stderr] 233 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default_derive [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 222 | #[derive(Default)] [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: use of `offset` with a `usize` casted to an `isize` [INFO] [stderr] --> src/matcher.rs:267:34 [INFO] [stderr] | [INFO] [stderr] 267 | let ret = memcmp(src_ptr.offset((i + 1 - pat_len) as isize), pat_ptr, pat_len); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `src_ptr.add((i + 1 - pat_len))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_offset_with_cast [INFO] [stderr] [INFO] [stderr] warning: called `.get().unwrap()` on a HashMap. Using `[]` is more clear and more concise [INFO] [stderr] --> src/matcher.rs:339:27 [INFO] [stderr] | [INFO] [stderr] 339 | let tmp = rets.get(&i).unwrap(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: try this: `&rets[&i]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_unwrap [INFO] [stderr] [INFO] [stderr] warning: you should consider deriving a `Default` implementation for `matcher::FjsMatcher` [INFO] [stderr] --> src/matcher.rs:360:5 [INFO] [stderr] | [INFO] [stderr] 360 | / pub fn new() -> Self { [INFO] [stderr] 361 | | FjsMatcher { [INFO] [stderr] 362 | | max_threads: 4, [INFO] [stderr] 363 | | size_per_thread: 1024 * 1024, [INFO] [stderr] 364 | | use_sse: false, [INFO] [stderr] 365 | | } [INFO] [stderr] 366 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default_derive [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 353 | #[derive(Default)] [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] error: this comparison involving the minimum or maximum element for this type contains a case that is always true or always false [INFO] [stderr] --> src/matcher.rs:389:16 [INFO] [stderr] | [INFO] [stderr] 389 | if j <= 0 { [INFO] [stderr] | ^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[deny(clippy::absurd_extreme_comparisons)] on by default [INFO] [stderr] = help: because 0 is the minimum value for this type, the case where the two sides are not equal never occurs, consider using j == 0 instead [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#absurd_extreme_comparisons [INFO] [stderr] [INFO] [stderr] error: this comparison involving the minimum or maximum element for this type contains a case that is always true or always false [INFO] [stderr] --> src/matcher.rs:419:20 [INFO] [stderr] | [INFO] [stderr] 419 | if j <= 0 { [INFO] [stderr] | ^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: because 0 is the minimum value for this type, the case where the two sides are not equal never occurs, consider using j == 0 instead [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#absurd_extreme_comparisons [INFO] [stderr] [INFO] [stderr] warning: called `.get().unwrap()` on a HashMap. Using `[]` is more clear and more concise [INFO] [stderr] --> src/matcher.rs:505:27 [INFO] [stderr] | [INFO] [stderr] 505 | let tmp = rets.get(&i).unwrap(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: try this: `&rets[&i]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_unwrap [INFO] [stderr] [INFO] [stderr] warning: you should consider deriving a `Default` implementation for `matcher::RegexMatcher` [INFO] [stderr] --> src/matcher.rs:522:5 [INFO] [stderr] | [INFO] [stderr] 522 | / pub fn new() -> Self { [INFO] [stderr] 523 | | RegexMatcher [INFO] [stderr] 524 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default_derive [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 519 | #[derive(Default)] [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you should consider adding a `Default` implementation for `pipeline_finder::PipelineFinder` [INFO] [stderr] --> src/pipeline_finder.rs:41:5 [INFO] [stderr] | [INFO] [stderr] 41 | / pub fn new() -> Self { [INFO] [stderr] 42 | | PipelineFinder { [INFO] [stderr] 43 | | is_recursive: true, [INFO] [stderr] 44 | | follow_symlink: true, [INFO] [stderr] ... | [INFO] [stderr] 59 | | } [INFO] [stderr] 60 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 40 | impl Default for pipeline_finder::PipelineFinder { [INFO] [stderr] 41 | fn default() -> Self { [INFO] [stderr] 42 | Self::new() [INFO] [stderr] 43 | } [INFO] [stderr] 44 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/pipeline_finder.rs:62:48 [INFO] [stderr] | [INFO] [stderr] 62 | fn find_path(&mut self, base: PathBuf, tx: &Vec>>, is_symlink: bool) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: change this to: `&[Sender>]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/pipeline_finder.rs:116:48 [INFO] [stderr] | [INFO] [stderr] 116 | fn send_path(&mut self, path: PathBuf, tx: &Vec>>) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: change this to: `&[Sender>]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: the loop variable `i` is only used to index `src`. [INFO] [stderr] --> src/pipeline_matcher.rs:86:26 [INFO] [stderr] | [INFO] [stderr] 86 | for i in 0..check_bytes { [INFO] [stderr] | ^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_range_loop)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stderr] help: consider using an iterator [INFO] [stderr] | [INFO] [stderr] 86 | for in src.iter().take(check_bytes) { [INFO] [stderr] | ^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: you should consider adding a `Default` implementation for `pipeline_printer::PipelinePrinter` [INFO] [stderr] --> src/pipeline_printer.rs:29:5 [INFO] [stderr] | [INFO] [stderr] 29 | / pub fn new() -> Self { [INFO] [stderr] 30 | | PipelinePrinter { [INFO] [stderr] 31 | | is_color: true, [INFO] [stderr] 32 | | print_file: true, [INFO] [stderr] ... | [INFO] [stderr] 40 | | } [INFO] [stderr] 41 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 28 | impl Default for pipeline_printer::PipelinePrinter { [INFO] [stderr] 29 | fn default() -> Self { [INFO] [stderr] 30 | Self::new() [INFO] [stderr] 31 | } [INFO] [stderr] 32 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: called `.get().unwrap()` on a HashMap. Using `[]` is more clear and more concise [INFO] [stderr] --> src/pipeline_sorter.rs:58:51 [INFO] [stderr] | [INFO] [stderr] 58 | let ret = self.map.get(&self.seq_no).unwrap(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `&self.map[&self.seq_no]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_unwrap [INFO] [stderr] [INFO] [stderr] error: aborting due to 2 previous errors [INFO] [stderr] [INFO] [stderr] error: Could not compile `amber`. [INFO] [stderr] [INFO] [stderr] To learn more, run the command again with --verbose. [INFO] running `"docker" "inspect" "dae93e62abb75326545799490d45e83d173b4fe296b389e599a732ef4e769bbe"` [INFO] running `"docker" "rm" "-f" "dae93e62abb75326545799490d45e83d173b4fe296b389e599a732ef4e769bbe"` [INFO] [stdout] dae93e62abb75326545799490d45e83d173b4fe296b389e599a732ef4e769bbe