[INFO] crate version-compare 0.0.6 is already in cache [INFO] extracting crate version-compare 0.0.6 into work/ex/clippy-test-run/sources/stable/reg/version-compare/0.0.6 [INFO] extracting crate version-compare 0.0.6 into work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/reg/version-compare/0.0.6 [INFO] validating manifest of version-compare-0.0.6 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 version-compare-0.0.6 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 version-compare-0.0.6 [INFO] finished frobbing version-compare-0.0.6 [INFO] frobbed toml for version-compare-0.0.6 written to work/ex/clippy-test-run/sources/stable/reg/version-compare/0.0.6/Cargo.toml [INFO] started frobbing version-compare-0.0.6 [INFO] finished frobbing version-compare-0.0.6 [INFO] frobbed toml for version-compare-0.0.6 written to work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/reg/version-compare/0.0.6/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 version-compare-0.0.6 against stable+rustflags=-Dclippy::into_iter_on_array for clippy-test-run [INFO] running `"docker" "create" "-v" "/mnt/big/crater/work/local/target-dirs/clippy-test-run/worker-0/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array:/opt/crater/target:rw,Z" "-v" "/mnt/big/crater/work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/reg/version-compare/0.0.6:/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 -Dclippy::into_iter_on_array" "-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] a9f32f3e0508abb738a46e89306f44a5c56ef3c6a36aa840b9c5d0acc2d2a2c1 [INFO] running `"docker" "start" "-a" "a9f32f3e0508abb738a46e89306f44a5c56ef3c6a36aa840b9c5d0acc2d2a2c1"` [INFO] [stderr] Checking version-compare v0.0.6 (/opt/crater/workdir) [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/version.rs:57:13 [INFO] [stderr] | [INFO] [stderr] 57 | version: version, [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: replace it with: `version` [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/version.rs:88:13 [INFO] [stderr] | [INFO] [stderr] 88 | version: version, [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: replace it with: `version` [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/version.rs:57:13 [INFO] [stderr] | [INFO] [stderr] 57 | version: version, [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: replace it with: `version` [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/version.rs:88:13 [INFO] [stderr] | [INFO] [stderr] 88 | version: version, [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: replace it with: `version` [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: this call to `as_ref` does nothing [INFO] [stderr] --> src/comp_op.rs:65:15 [INFO] [stderr] | [INFO] [stderr] 65 | match sign.trim().as_ref() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: try this: `sign.trim()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::useless_asref)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_asref [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/comp_op.rs:129:9 [INFO] [stderr] | [INFO] [stderr] 129 | / match self { [INFO] [stderr] 130 | | &CompOp::Eq => "eq", [INFO] [stderr] 131 | | &CompOp::Ne => "ne", [INFO] [stderr] 132 | | &CompOp::Lt => "lt", [INFO] [stderr] ... | [INFO] [stderr] 135 | | &CompOp::Gt => "gt" [INFO] [stderr] 136 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::match_ref_pats)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 129 | match *self { [INFO] [stderr] 130 | CompOp::Eq => "eq", [INFO] [stderr] 131 | CompOp::Ne => "ne", [INFO] [stderr] 132 | CompOp::Lt => "lt", [INFO] [stderr] 133 | CompOp::Le => "le", [INFO] [stderr] 134 | CompOp::Ge => "ge", [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: methods called `as_*` usually take self by reference or self by mutable reference; consider choosing a less ambiguous name [INFO] [stderr] --> src/comp_op.rs:156:24 [INFO] [stderr] | [INFO] [stderr] 156 | pub fn as_inverted(self) -> Self { [INFO] [stderr] | ^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::wrong_self_convention)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#wrong_self_convention [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/comp_op.rs:178:9 [INFO] [stderr] | [INFO] [stderr] 178 | / match self { [INFO] [stderr] 179 | | &CompOp::Eq => CompOp::Ne, [INFO] [stderr] 180 | | &CompOp::Ne => CompOp::Eq, [INFO] [stderr] 181 | | &CompOp::Lt => CompOp::Ge, [INFO] [stderr] ... | [INFO] [stderr] 184 | | &CompOp::Gt => CompOp::Le [INFO] [stderr] 185 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 178 | match *self { [INFO] [stderr] 179 | CompOp::Eq => CompOp::Ne, [INFO] [stderr] 180 | CompOp::Ne => CompOp::Eq, [INFO] [stderr] 181 | CompOp::Lt => CompOp::Ge, [INFO] [stderr] 182 | CompOp::Le => CompOp::Gt, [INFO] [stderr] 183 | CompOp::Ge => CompOp::Lt, [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: methods called `as_*` usually take self by reference or self by mutable reference; consider choosing a less ambiguous name [INFO] [stderr] --> src/comp_op.rs:205:24 [INFO] [stderr] | [INFO] [stderr] 205 | pub fn as_opposite(self) -> Self { [INFO] [stderr] | ^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#wrong_self_convention [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/comp_op.rs:227:9 [INFO] [stderr] | [INFO] [stderr] 227 | / match self { [INFO] [stderr] 228 | | &CompOp::Eq => CompOp::Ne, [INFO] [stderr] 229 | | &CompOp::Ne => CompOp::Eq, [INFO] [stderr] 230 | | &CompOp::Lt => CompOp::Gt, [INFO] [stderr] ... | [INFO] [stderr] 233 | | &CompOp::Gt => CompOp::Lt [INFO] [stderr] 234 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 227 | match *self { [INFO] [stderr] 228 | CompOp::Eq => CompOp::Ne, [INFO] [stderr] 229 | CompOp::Ne => CompOp::Eq, [INFO] [stderr] 230 | CompOp::Lt => CompOp::Gt, [INFO] [stderr] 231 | CompOp::Le => CompOp::Ge, [INFO] [stderr] 232 | CompOp::Ge => CompOp::Le, [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: methods called `as_*` usually take self by reference or self by mutable reference; consider choosing a less ambiguous name [INFO] [stderr] --> src/comp_op.rs:254:23 [INFO] [stderr] | [INFO] [stderr] 254 | pub fn as_flipped(self) -> Self { [INFO] [stderr] | ^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#wrong_self_convention [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/comp_op.rs:276:9 [INFO] [stderr] | [INFO] [stderr] 276 | / match self { [INFO] [stderr] 277 | | &CompOp::Lt => CompOp::Gt, [INFO] [stderr] 278 | | &CompOp::Le => CompOp::Ge, [INFO] [stderr] 279 | | &CompOp::Ge => CompOp::Le, [INFO] [stderr] 280 | | &CompOp::Gt => CompOp::Lt, [INFO] [stderr] 281 | | _ => self.clone() [INFO] [stderr] 282 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 276 | match *self { [INFO] [stderr] 277 | CompOp::Lt => CompOp::Gt, [INFO] [stderr] 278 | CompOp::Le => CompOp::Ge, [INFO] [stderr] 279 | CompOp::Ge => CompOp::Le, [INFO] [stderr] 280 | CompOp::Gt => CompOp::Lt, [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/comp_op.rs:310:9 [INFO] [stderr] | [INFO] [stderr] 310 | / match self { [INFO] [stderr] 311 | | &CompOp::Eq => "==", [INFO] [stderr] 312 | | &CompOp::Ne => "!=", [INFO] [stderr] 313 | | &CompOp::Lt => "<", [INFO] [stderr] ... | [INFO] [stderr] 316 | | &CompOp::Gt => ">" [INFO] [stderr] 317 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 310 | match *self { [INFO] [stderr] 311 | CompOp::Eq => "==", [INFO] [stderr] 312 | CompOp::Ne => "!=", [INFO] [stderr] 313 | CompOp::Lt => "<", [INFO] [stderr] 314 | CompOp::Le => "<=", [INFO] [stderr] 315 | CompOp::Ge => ">=", [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/comp_op.rs:341:9 [INFO] [stderr] | [INFO] [stderr] 341 | / match self { [INFO] [stderr] 342 | | &CompOp::Eq | &CompOp::Ne => 0, [INFO] [stderr] 343 | | &CompOp::Lt | &CompOp::Le => -1, [INFO] [stderr] 344 | | &CompOp::Gt | &CompOp::Ge => 1 [INFO] [stderr] 345 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 341 | match *self { [INFO] [stderr] 342 | CompOp::Eq | CompOp::Ne => 0, [INFO] [stderr] 343 | CompOp::Lt | CompOp::Le => -1, [INFO] [stderr] 344 | CompOp::Gt | CompOp::Ge => 1 [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/comp_op.rs:370:9 [INFO] [stderr] | [INFO] [stderr] 370 | / match self { [INFO] [stderr] 371 | | &CompOp::Eq => Some(Ordering::Equal), [INFO] [stderr] 372 | | &CompOp::Lt => Some(Ordering::Less), [INFO] [stderr] 373 | | &CompOp::Gt => Some(Ordering::Greater), [INFO] [stderr] 374 | | _ => None [INFO] [stderr] 375 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 370 | match *self { [INFO] [stderr] 371 | CompOp::Eq => Some(Ordering::Equal), [INFO] [stderr] 372 | CompOp::Lt => Some(Ordering::Less), [INFO] [stderr] 373 | CompOp::Gt => Some(Ordering::Greater), [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: this block may be rewritten with the `?` operator [INFO] [stderr] --> src/version.rs:51:9 [INFO] [stderr] | [INFO] [stderr] 51 | / if parts.is_none() { [INFO] [stderr] 52 | | return None; [INFO] [stderr] 53 | | } [INFO] [stderr] | |_________^ help: replace_it_with: `parts?;` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::question_mark)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#question_mark [INFO] [stderr] [INFO] [stderr] warning: this block may be rewritten with the `?` operator [INFO] [stderr] --> src/version.rs:82:9 [INFO] [stderr] | [INFO] [stderr] 82 | / if parts.is_none() { [INFO] [stderr] 83 | | return None; [INFO] [stderr] 84 | | } [INFO] [stderr] | |_________^ help: replace_it_with: `parts?;` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#question_mark [INFO] [stderr] [INFO] [stderr] warning: `if _ { .. } else { .. }` is an expression [INFO] [stderr] --> src/version.rs:161:9 [INFO] [stderr] | [INFO] [stderr] 161 | / let mut used_manifest = &VersionManifest::new(); [INFO] [stderr] 162 | | if manifest.is_some() { [INFO] [stderr] 163 | | used_manifest = manifest.unwrap(); [INFO] [stderr] 164 | | } [INFO] [stderr] | |_________^ help: it is more idiomatic to write: `let used_manifest = if manifest.is_some() { manifest.unwrap() } else { &VersionManifest::new() };` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::useless_let_if_seq)] on by default [INFO] [stderr] = note: you might not need `mut` at all [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_let_if_seq [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/version.rs:334:17 [INFO] [stderr] | [INFO] [stderr] 334 | / match operator { [INFO] [stderr] 335 | | &CompOp::Eq | &CompOp::Le | &CompOp::Ge => true, [INFO] [stderr] 336 | | _ => false, [INFO] [stderr] 337 | | }, [INFO] [stderr] | |_________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 334 | match *operator { [INFO] [stderr] 335 | CompOp::Eq | CompOp::Le | CompOp::Ge => true, [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/version.rs:339:17 [INFO] [stderr] | [INFO] [stderr] 339 | / match operator { [INFO] [stderr] 340 | | &CompOp::Ne | &CompOp::Lt | &CompOp::Le => true, [INFO] [stderr] 341 | | _ => false, [INFO] [stderr] 342 | | }, [INFO] [stderr] | |_________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 339 | match *operator { [INFO] [stderr] 340 | CompOp::Ne | CompOp::Lt | CompOp::Le => true, [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/version.rs:344:17 [INFO] [stderr] | [INFO] [stderr] 344 | / match operator { [INFO] [stderr] 345 | | &CompOp::Ne | &CompOp::Gt | &CompOp::Ge => true, [INFO] [stderr] 346 | | _ => false, [INFO] [stderr] 347 | | }, [INFO] [stderr] | |_________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 344 | match *operator { [INFO] [stderr] 345 | CompOp::Ne | CompOp::Gt | CompOp::Ge => true, [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: this loop could be written as a `while let` loop [INFO] [stderr] --> src/version.rs:366:9 [INFO] [stderr] | [INFO] [stderr] 366 | / loop { [INFO] [stderr] 367 | | match iter.next() { [INFO] [stderr] 368 | | Some(part) => { [INFO] [stderr] 369 | | // Skip this part if it's non-numeric [INFO] [stderr] ... | [INFO] [stderr] 424 | | } [INFO] [stderr] 425 | | } [INFO] [stderr] | |_________^ help: try: `while let Some(part) = iter.next() { .. }` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::while_let_loop)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#while_let_loop [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/version.rs:370:21 [INFO] [stderr] | [INFO] [stderr] 370 | / match part { [INFO] [stderr] 371 | | &VersionPart::Number(_) => {}, [INFO] [stderr] 372 | | _ => continue, [INFO] [stderr] 373 | | } [INFO] [stderr] | |_____________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 370 | match *part { [INFO] [stderr] 371 | VersionPart::Number(_) => {}, [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/version.rs:383:33 [INFO] [stderr] | [INFO] [stderr] 383 | / match val { [INFO] [stderr] 384 | | &VersionPart::Number(_) => break, [INFO] [stderr] 385 | | _ => {}, [INFO] [stderr] 386 | | }, [INFO] [stderr] | |_________________________________^ help: try this: `if let &VersionPart::Number(_) = val { break }` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::single_match)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/version.rs:383:33 [INFO] [stderr] | [INFO] [stderr] 383 | / match val { [INFO] [stderr] 384 | | &VersionPart::Number(_) => break, [INFO] [stderr] 385 | | _ => {}, [INFO] [stderr] 386 | | }, [INFO] [stderr] | |_________________________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 383 | match *val { [INFO] [stderr] 384 | VersionPart::Number(_) => break, [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/version.rs:394:25 [INFO] [stderr] | [INFO] [stderr] 394 | / match part { [INFO] [stderr] 395 | | &VersionPart::Number(num) => [INFO] [stderr] 396 | | if num == 0 { [INFO] [stderr] 397 | | continue; [INFO] [stderr] 398 | | }, [INFO] [stderr] 399 | | _ => {}, [INFO] [stderr] 400 | | } [INFO] [stderr] | |_________________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 394 | if let &VersionPart::Number(num) = part { if num == 0 { [INFO] [stderr] 395 | continue; [INFO] [stderr] 396 | } } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/version.rs:394:25 [INFO] [stderr] | [INFO] [stderr] 394 | / match part { [INFO] [stderr] 395 | | &VersionPart::Number(num) => [INFO] [stderr] 396 | | if num == 0 { [INFO] [stderr] 397 | | continue; [INFO] [stderr] 398 | | }, [INFO] [stderr] 399 | | _ => {}, [INFO] [stderr] 400 | | } [INFO] [stderr] | |_________________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 394 | match *part { [INFO] [stderr] 395 | VersionPart::Number(num) => [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/version.rs:407:21 [INFO] [stderr] | [INFO] [stderr] 407 | / match part { [INFO] [stderr] 408 | | &VersionPart::Number(num) => [INFO] [stderr] 409 | | match other_part.unwrap() { [INFO] [stderr] 410 | | &VersionPart::Number(other_num) => { [INFO] [stderr] ... | [INFO] [stderr] 420 | | _ => {}, [INFO] [stderr] 421 | | } [INFO] [stderr] | |_____________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 407 | if let &VersionPart::Number(num) = part { match other_part.unwrap() { [INFO] [stderr] 408 | &VersionPart::Number(other_num) => { [INFO] [stderr] 409 | // Compare the numbers [INFO] [stderr] 410 | match num { [INFO] [stderr] 411 | n if n < other_num => return CompOp::Lt, [INFO] [stderr] 412 | n if n > other_num => return CompOp::Gt, [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/version.rs:407:21 [INFO] [stderr] | [INFO] [stderr] 407 | / match part { [INFO] [stderr] 408 | | &VersionPart::Number(num) => [INFO] [stderr] 409 | | match other_part.unwrap() { [INFO] [stderr] 410 | | &VersionPart::Number(other_num) => { [INFO] [stderr] ... | [INFO] [stderr] 420 | | _ => {}, [INFO] [stderr] 421 | | } [INFO] [stderr] | |_____________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 407 | match *part { [INFO] [stderr] 408 | VersionPart::Number(num) => [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/version.rs:409:29 [INFO] [stderr] | [INFO] [stderr] 409 | / match other_part.unwrap() { [INFO] [stderr] 410 | | &VersionPart::Number(other_num) => { [INFO] [stderr] 411 | | // Compare the numbers [INFO] [stderr] 412 | | match num { [INFO] [stderr] ... | [INFO] [stderr] 418 | | _ => {}, [INFO] [stderr] 419 | | }, [INFO] [stderr] | |_____________________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 409 | if let &VersionPart::Number(other_num) = other_part.unwrap() { [INFO] [stderr] 410 | // Compare the numbers [INFO] [stderr] 411 | match num { [INFO] [stderr] 412 | n if n < other_num => return CompOp::Lt, [INFO] [stderr] 413 | n if n > other_num => return CompOp::Gt, [INFO] [stderr] 414 | _ => continue, [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/version.rs:409:29 [INFO] [stderr] | [INFO] [stderr] 409 | / match other_part.unwrap() { [INFO] [stderr] 410 | | &VersionPart::Number(other_num) => { [INFO] [stderr] 411 | | // Compare the numbers [INFO] [stderr] 412 | | match num { [INFO] [stderr] ... | [INFO] [stderr] 418 | | _ => {}, [INFO] [stderr] 419 | | }, [INFO] [stderr] | |_____________________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 409 | match *other_part.unwrap() { [INFO] [stderr] 410 | VersionPart::Number(other_num) => { [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you should consider deriving a `Default` implementation for `version_manifest::VersionManifest` [INFO] [stderr] --> src/version_manifest.rs:34:5 [INFO] [stderr] | [INFO] [stderr] 34 | / pub fn new() -> Self { [INFO] [stderr] 35 | | VersionManifest { [INFO] [stderr] 36 | | max_depth: None, [INFO] [stderr] 37 | | ignore_text: false, [INFO] [stderr] 38 | | } [INFO] [stderr] 39 | | } [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] 11 | #[derive(Default)] [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: Constants have by default a `'static` lifetime [INFO] [stderr] --> src/test/test_version.rs:14:27 [INFO] [stderr] | [INFO] [stderr] 14 | pub const TEST_VERSIONS: &'static [TestVersion] = &[ [INFO] [stderr] | -^^^^^^^-------------- help: consider removing `'static`: `&[TestVersion]` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::const_static_lifetime)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#const_static_lifetime [INFO] [stderr] [INFO] [stderr] warning: Constants have by default a `'static` lifetime [INFO] [stderr] --> src/test/test_version.rs:33:33 [INFO] [stderr] | [INFO] [stderr] 33 | pub const TEST_VERSIONS_ERROR: &'static [TestVersion] = &[ [INFO] [stderr] | -^^^^^^^-------------- help: consider removing `'static`: `&[TestVersion]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#const_static_lifetime [INFO] [stderr] [INFO] [stderr] warning: Constants have by default a `'static` lifetime [INFO] [stderr] --> src/test/test_version_set.rs:18:31 [INFO] [stderr] | [INFO] [stderr] 18 | pub const TEST_VERSION_SETS: &'static [TestVersionSet] = &[ [INFO] [stderr] | -^^^^^^^----------------- help: consider removing `'static`: `&[TestVersionSet]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#const_static_lifetime [INFO] [stderr] [INFO] [stderr] warning: Constants have by default a `'static` lifetime [INFO] [stderr] --> src/test/test_version_set.rs:52:37 [INFO] [stderr] | [INFO] [stderr] 52 | pub const TEST_VERSION_SETS_ERROR: &'static [TestVersionSet] = &[ [INFO] [stderr] | -^^^^^^^----------------- help: consider removing `'static`: `&[TestVersionSet]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#const_static_lifetime [INFO] [stderr] [INFO] [stderr] warning: this call to `as_ref` does nothing [INFO] [stderr] --> src/comp_op.rs:65:15 [INFO] [stderr] | [INFO] [stderr] 65 | match sign.trim().as_ref() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: try this: `sign.trim()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::useless_asref)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_asref [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/comp_op.rs:129:9 [INFO] [stderr] | [INFO] [stderr] 129 | / match self { [INFO] [stderr] 130 | | &CompOp::Eq => "eq", [INFO] [stderr] 131 | | &CompOp::Ne => "ne", [INFO] [stderr] 132 | | &CompOp::Lt => "lt", [INFO] [stderr] ... | [INFO] [stderr] 135 | | &CompOp::Gt => "gt" [INFO] [stderr] 136 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::match_ref_pats)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 129 | match *self { [INFO] [stderr] 130 | CompOp::Eq => "eq", [INFO] [stderr] 131 | CompOp::Ne => "ne", [INFO] [stderr] 132 | CompOp::Lt => "lt", [INFO] [stderr] 133 | CompOp::Le => "le", [INFO] [stderr] 134 | CompOp::Ge => "ge", [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: methods called `as_*` usually take self by reference or self by mutable reference; consider choosing a less ambiguous name [INFO] [stderr] --> src/comp_op.rs:156:24 [INFO] [stderr] | [INFO] [stderr] 156 | pub fn as_inverted(self) -> Self { [INFO] [stderr] | ^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::wrong_self_convention)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#wrong_self_convention [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/comp_op.rs:178:9 [INFO] [stderr] | [INFO] [stderr] 178 | / match self { [INFO] [stderr] 179 | | &CompOp::Eq => CompOp::Ne, [INFO] [stderr] 180 | | &CompOp::Ne => CompOp::Eq, [INFO] [stderr] 181 | | &CompOp::Lt => CompOp::Ge, [INFO] [stderr] ... | [INFO] [stderr] 184 | | &CompOp::Gt => CompOp::Le [INFO] [stderr] 185 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 178 | match *self { [INFO] [stderr] 179 | CompOp::Eq => CompOp::Ne, [INFO] [stderr] 180 | CompOp::Ne => CompOp::Eq, [INFO] [stderr] 181 | CompOp::Lt => CompOp::Ge, [INFO] [stderr] 182 | CompOp::Le => CompOp::Gt, [INFO] [stderr] 183 | CompOp::Ge => CompOp::Lt, [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: methods called `as_*` usually take self by reference or self by mutable reference; consider choosing a less ambiguous name [INFO] [stderr] --> src/comp_op.rs:205:24 [INFO] [stderr] | [INFO] [stderr] 205 | pub fn as_opposite(self) -> Self { [INFO] [stderr] | ^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#wrong_self_convention [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/comp_op.rs:227:9 [INFO] [stderr] | [INFO] [stderr] 227 | / match self { [INFO] [stderr] 228 | | &CompOp::Eq => CompOp::Ne, [INFO] [stderr] 229 | | &CompOp::Ne => CompOp::Eq, [INFO] [stderr] 230 | | &CompOp::Lt => CompOp::Gt, [INFO] [stderr] ... | [INFO] [stderr] 233 | | &CompOp::Gt => CompOp::Lt [INFO] [stderr] 234 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 227 | match *self { [INFO] [stderr] 228 | CompOp::Eq => CompOp::Ne, [INFO] [stderr] 229 | CompOp::Ne => CompOp::Eq, [INFO] [stderr] 230 | CompOp::Lt => CompOp::Gt, [INFO] [stderr] 231 | CompOp::Le => CompOp::Ge, [INFO] [stderr] 232 | CompOp::Ge => CompOp::Le, [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: methods called `as_*` usually take self by reference or self by mutable reference; consider choosing a less ambiguous name [INFO] [stderr] --> src/comp_op.rs:254:23 [INFO] [stderr] | [INFO] [stderr] 254 | pub fn as_flipped(self) -> Self { [INFO] [stderr] | ^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#wrong_self_convention [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/comp_op.rs:276:9 [INFO] [stderr] | [INFO] [stderr] 276 | / match self { [INFO] [stderr] 277 | | &CompOp::Lt => CompOp::Gt, [INFO] [stderr] 278 | | &CompOp::Le => CompOp::Ge, [INFO] [stderr] 279 | | &CompOp::Ge => CompOp::Le, [INFO] [stderr] 280 | | &CompOp::Gt => CompOp::Lt, [INFO] [stderr] 281 | | _ => self.clone() [INFO] [stderr] 282 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 276 | match *self { [INFO] [stderr] 277 | CompOp::Lt => CompOp::Gt, [INFO] [stderr] 278 | CompOp::Le => CompOp::Ge, [INFO] [stderr] 279 | CompOp::Ge => CompOp::Le, [INFO] [stderr] 280 | CompOp::Gt => CompOp::Lt, [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/comp_op.rs:310:9 [INFO] [stderr] | [INFO] [stderr] 310 | / match self { [INFO] [stderr] 311 | | &CompOp::Eq => "==", [INFO] [stderr] 312 | | &CompOp::Ne => "!=", [INFO] [stderr] 313 | | &CompOp::Lt => "<", [INFO] [stderr] ... | [INFO] [stderr] 316 | | &CompOp::Gt => ">" [INFO] [stderr] 317 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 310 | match *self { [INFO] [stderr] 311 | CompOp::Eq => "==", [INFO] [stderr] 312 | CompOp::Ne => "!=", [INFO] [stderr] 313 | CompOp::Lt => "<", [INFO] [stderr] 314 | CompOp::Le => "<=", [INFO] [stderr] 315 | CompOp::Ge => ">=", [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/comp_op.rs:341:9 [INFO] [stderr] | [INFO] [stderr] 341 | / match self { [INFO] [stderr] 342 | | &CompOp::Eq | &CompOp::Ne => 0, [INFO] [stderr] 343 | | &CompOp::Lt | &CompOp::Le => -1, [INFO] [stderr] 344 | | &CompOp::Gt | &CompOp::Ge => 1 [INFO] [stderr] 345 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 341 | match *self { [INFO] [stderr] 342 | CompOp::Eq | CompOp::Ne => 0, [INFO] [stderr] 343 | CompOp::Lt | CompOp::Le => -1, [INFO] [stderr] 344 | CompOp::Gt | CompOp::Ge => 1 [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/comp_op.rs:370:9 [INFO] [stderr] | [INFO] [stderr] 370 | / match self { [INFO] [stderr] 371 | | &CompOp::Eq => Some(Ordering::Equal), [INFO] [stderr] 372 | | &CompOp::Lt => Some(Ordering::Less), [INFO] [stderr] 373 | | &CompOp::Gt => Some(Ordering::Greater), [INFO] [stderr] 374 | | _ => None [INFO] [stderr] 375 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 370 | match *self { [INFO] [stderr] 371 | CompOp::Eq => Some(Ordering::Equal), [INFO] [stderr] 372 | CompOp::Lt => Some(Ordering::Less), [INFO] [stderr] 373 | CompOp::Gt => Some(Ordering::Greater), [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: this block may be rewritten with the `?` operator [INFO] [stderr] --> src/version.rs:51:9 [INFO] [stderr] | [INFO] [stderr] 51 | / if parts.is_none() { [INFO] [stderr] 52 | | return None; [INFO] [stderr] 53 | | } [INFO] [stderr] | |_________^ help: replace_it_with: `parts?;` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::question_mark)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#question_mark [INFO] [stderr] [INFO] [stderr] warning: this block may be rewritten with the `?` operator [INFO] [stderr] --> src/version.rs:82:9 [INFO] [stderr] | [INFO] [stderr] 82 | / if parts.is_none() { [INFO] [stderr] 83 | | return None; [INFO] [stderr] 84 | | } [INFO] [stderr] | |_________^ help: replace_it_with: `parts?;` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#question_mark [INFO] [stderr] [INFO] [stderr] warning: `if _ { .. } else { .. }` is an expression [INFO] [stderr] --> src/version.rs:161:9 [INFO] [stderr] | [INFO] [stderr] 161 | / let mut used_manifest = &VersionManifest::new(); [INFO] [stderr] 162 | | if manifest.is_some() { [INFO] [stderr] 163 | | used_manifest = manifest.unwrap(); [INFO] [stderr] 164 | | } [INFO] [stderr] | |_________^ help: it is more idiomatic to write: `let used_manifest = if manifest.is_some() { manifest.unwrap() } else { &VersionManifest::new() };` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::useless_let_if_seq)] on by default [INFO] [stderr] = note: you might not need `mut` at all [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_let_if_seq [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/version.rs:334:17 [INFO] [stderr] | [INFO] [stderr] 334 | / match operator { [INFO] [stderr] 335 | | &CompOp::Eq | &CompOp::Le | &CompOp::Ge => true, [INFO] [stderr] 336 | | _ => false, [INFO] [stderr] 337 | | }, [INFO] [stderr] | |_________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 334 | match *operator { [INFO] [stderr] 335 | CompOp::Eq | CompOp::Le | CompOp::Ge => true, [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/version.rs:339:17 [INFO] [stderr] | [INFO] [stderr] 339 | / match operator { [INFO] [stderr] 340 | | &CompOp::Ne | &CompOp::Lt | &CompOp::Le => true, [INFO] [stderr] 341 | | _ => false, [INFO] [stderr] 342 | | }, [INFO] [stderr] | |_________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 339 | match *operator { [INFO] [stderr] 340 | CompOp::Ne | CompOp::Lt | CompOp::Le => true, [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/version.rs:344:17 [INFO] [stderr] | [INFO] [stderr] 344 | / match operator { [INFO] [stderr] 345 | | &CompOp::Ne | &CompOp::Gt | &CompOp::Ge => true, [INFO] [stderr] 346 | | _ => false, [INFO] [stderr] 347 | | }, [INFO] [stderr] | |_________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 344 | match *operator { [INFO] [stderr] 345 | CompOp::Ne | CompOp::Gt | CompOp::Ge => true, [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: this loop could be written as a `while let` loop [INFO] [stderr] --> src/version.rs:366:9 [INFO] [stderr] | [INFO] [stderr] 366 | / loop { [INFO] [stderr] 367 | | match iter.next() { [INFO] [stderr] 368 | | Some(part) => { [INFO] [stderr] 369 | | // Skip this part if it's non-numeric [INFO] [stderr] ... | [INFO] [stderr] 424 | | } [INFO] [stderr] 425 | | } [INFO] [stderr] | |_________^ help: try: `while let Some(part) = iter.next() { .. }` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::while_let_loop)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#while_let_loop [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/version.rs:370:21 [INFO] [stderr] | [INFO] [stderr] 370 | / match part { [INFO] [stderr] 371 | | &VersionPart::Number(_) => {}, [INFO] [stderr] 372 | | _ => continue, [INFO] [stderr] 373 | | } [INFO] [stderr] | |_____________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 370 | match *part { [INFO] [stderr] 371 | VersionPart::Number(_) => {}, [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/version.rs:383:33 [INFO] [stderr] | [INFO] [stderr] 383 | / match val { [INFO] [stderr] 384 | | &VersionPart::Number(_) => break, [INFO] [stderr] 385 | | _ => {}, [INFO] [stderr] 386 | | }, [INFO] [stderr] | |_________________________________^ help: try this: `if let &VersionPart::Number(_) = val { break }` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::single_match)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/version.rs:383:33 [INFO] [stderr] | [INFO] [stderr] 383 | / match val { [INFO] [stderr] 384 | | &VersionPart::Number(_) => break, [INFO] [stderr] 385 | | _ => {}, [INFO] [stderr] 386 | | }, [INFO] [stderr] | |_________________________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 383 | match *val { [INFO] [stderr] 384 | VersionPart::Number(_) => break, [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/version.rs:394:25 [INFO] [stderr] | [INFO] [stderr] 394 | / match part { [INFO] [stderr] 395 | | &VersionPart::Number(num) => [INFO] [stderr] 396 | | if num == 0 { [INFO] [stderr] 397 | | continue; [INFO] [stderr] 398 | | }, [INFO] [stderr] 399 | | _ => {}, [INFO] [stderr] 400 | | } [INFO] [stderr] | |_________________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 394 | if let &VersionPart::Number(num) = part { if num == 0 { [INFO] [stderr] 395 | continue; [INFO] [stderr] 396 | } } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/version.rs:394:25 [INFO] [stderr] | [INFO] [stderr] 394 | / match part { [INFO] [stderr] 395 | | &VersionPart::Number(num) => [INFO] [stderr] 396 | | if num == 0 { [INFO] [stderr] 397 | | continue; [INFO] [stderr] 398 | | }, [INFO] [stderr] 399 | | _ => {}, [INFO] [stderr] 400 | | } [INFO] [stderr] | |_________________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 394 | match *part { [INFO] [stderr] 395 | VersionPart::Number(num) => [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/version.rs:407:21 [INFO] [stderr] | [INFO] [stderr] 407 | / match part { [INFO] [stderr] 408 | | &VersionPart::Number(num) => [INFO] [stderr] 409 | | match other_part.unwrap() { [INFO] [stderr] 410 | | &VersionPart::Number(other_num) => { [INFO] [stderr] ... | [INFO] [stderr] 420 | | _ => {}, [INFO] [stderr] 421 | | } [INFO] [stderr] | |_____________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 407 | if let &VersionPart::Number(num) = part { match other_part.unwrap() { [INFO] [stderr] 408 | &VersionPart::Number(other_num) => { [INFO] [stderr] 409 | // Compare the numbers [INFO] [stderr] 410 | match num { [INFO] [stderr] 411 | n if n < other_num => return CompOp::Lt, [INFO] [stderr] 412 | n if n > other_num => return CompOp::Gt, [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/version.rs:407:21 [INFO] [stderr] | [INFO] [stderr] 407 | / match part { [INFO] [stderr] 408 | | &VersionPart::Number(num) => [INFO] [stderr] 409 | | match other_part.unwrap() { [INFO] [stderr] 410 | | &VersionPart::Number(other_num) => { [INFO] [stderr] ... | [INFO] [stderr] 420 | | _ => {}, [INFO] [stderr] 421 | | } [INFO] [stderr] | |_____________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 407 | match *part { [INFO] [stderr] 408 | VersionPart::Number(num) => [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/version.rs:409:29 [INFO] [stderr] | [INFO] [stderr] 409 | / match other_part.unwrap() { [INFO] [stderr] 410 | | &VersionPart::Number(other_num) => { [INFO] [stderr] 411 | | // Compare the numbers [INFO] [stderr] 412 | | match num { [INFO] [stderr] ... | [INFO] [stderr] 418 | | _ => {}, [INFO] [stderr] 419 | | }, [INFO] [stderr] | |_____________________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 409 | if let &VersionPart::Number(other_num) = other_part.unwrap() { [INFO] [stderr] 410 | // Compare the numbers [INFO] [stderr] 411 | match num { [INFO] [stderr] 412 | n if n < other_num => return CompOp::Lt, [INFO] [stderr] 413 | n if n > other_num => return CompOp::Gt, [INFO] [stderr] 414 | _ => continue, [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/version.rs:409:29 [INFO] [stderr] | [INFO] [stderr] 409 | / match other_part.unwrap() { [INFO] [stderr] 410 | | &VersionPart::Number(other_num) => { [INFO] [stderr] 411 | | // Compare the numbers [INFO] [stderr] 412 | | match num { [INFO] [stderr] ... | [INFO] [stderr] 418 | | _ => {}, [INFO] [stderr] 419 | | }, [INFO] [stderr] | |_____________________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 409 | match *other_part.unwrap() { [INFO] [stderr] 410 | VersionPart::Number(other_num) => { [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: useless use of `vec!` [INFO] [stderr] --> src/version.rs:607:23 [INFO] [stderr] | [INFO] [stderr] 607 | for ignore in vec![true, false] { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: you can use a slice directly: `&[true, false]` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::useless_vec)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_vec [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/version.rs:621:21 [INFO] [stderr] | [INFO] [stderr] 621 | / match part { [INFO] [stderr] 622 | | &VersionPart::Text(_) => { [INFO] [stderr] 623 | | // Set the flag [INFO] [stderr] 624 | | had_text = true; [INFO] [stderr] ... | [INFO] [stderr] 631 | | _ => {}, [INFO] [stderr] 632 | | } [INFO] [stderr] | |_____________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 621 | if let &VersionPart::Text(_) = part { [INFO] [stderr] 622 | // Set the flag [INFO] [stderr] 623 | had_text = true; [INFO] [stderr] 624 | [INFO] [stderr] 625 | // Break the loop if we already reached text when not ignored [INFO] [stderr] 626 | if !ignore { [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/version.rs:621:21 [INFO] [stderr] | [INFO] [stderr] 621 | / match part { [INFO] [stderr] 622 | | &VersionPart::Text(_) => { [INFO] [stderr] 623 | | // Set the flag [INFO] [stderr] 624 | | had_text = true; [INFO] [stderr] ... | [INFO] [stderr] 631 | | _ => {}, [INFO] [stderr] 632 | | } [INFO] [stderr] | |_____________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 621 | match *part { [INFO] [stderr] 622 | VersionPart::Text(_) => { [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you should consider deriving a `Default` implementation for `version_manifest::VersionManifest` [INFO] [stderr] --> src/version_manifest.rs:34:5 [INFO] [stderr] | [INFO] [stderr] 34 | / pub fn new() -> Self { [INFO] [stderr] 35 | | VersionManifest { [INFO] [stderr] 36 | | max_depth: None, [INFO] [stderr] 37 | | ignore_text: false, [INFO] [stderr] 38 | | } [INFO] [stderr] 39 | | } [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] 11 | #[derive(Default)] [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] Finished dev [unoptimized + debuginfo] target(s) in 1.54s [INFO] running `"docker" "inspect" "a9f32f3e0508abb738a46e89306f44a5c56ef3c6a36aa840b9c5d0acc2d2a2c1"` [INFO] running `"docker" "rm" "-f" "a9f32f3e0508abb738a46e89306f44a5c56ef3c6a36aa840b9c5d0acc2d2a2c1"` [INFO] [stdout] a9f32f3e0508abb738a46e89306f44a5c56ef3c6a36aa840b9c5d0acc2d2a2c1