[INFO] crate semver-parser 0.9.0 is already in cache [INFO] extracting crate semver-parser 0.9.0 into work/ex/clippy-test-run/sources/stable/reg/semver-parser/0.9.0 [INFO] extracting crate semver-parser 0.9.0 into work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/reg/semver-parser/0.9.0 [INFO] validating manifest of semver-parser-0.9.0 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 semver-parser-0.9.0 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 semver-parser-0.9.0 [INFO] finished frobbing semver-parser-0.9.0 [INFO] frobbed toml for semver-parser-0.9.0 written to work/ex/clippy-test-run/sources/stable/reg/semver-parser/0.9.0/Cargo.toml [INFO] started frobbing semver-parser-0.9.0 [INFO] finished frobbing semver-parser-0.9.0 [INFO] frobbed toml for semver-parser-0.9.0 written to work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/reg/semver-parser/0.9.0/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 semver-parser-0.9.0 against stable for clippy-test-run [INFO] running `"docker" "create" "-v" "/mnt/big/crater/work/local/target-dirs/clippy-test-run/worker-6/stable:/opt/crater/target:rw,Z" "-v" "/mnt/big/crater/work/ex/clippy-test-run/sources/stable/reg/semver-parser/0.9.0:/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] 15f673ff047e5590086c520d92989be7b354b432637db5f7022ae7c9fb050562 [INFO] running `"docker" "start" "-a" "15f673ff047e5590086c520d92989be7b354b432637db5f7022ae7c9fb050562"` [INFO] [stderr] Checking semver-parser v0.9.0 (/opt/crater/workdir) [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/lexer.rs:146:13 [INFO] [stderr] | [INFO] [stderr] 146 | input: input, [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `input` [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/lexer.rs:147:13 [INFO] [stderr] | [INFO] [stderr] 147 | chars: chars, [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `chars` [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/lexer.rs:148:13 [INFO] [stderr] | [INFO] [stderr] 148 | c1: c1, [INFO] [stderr] | ^^^^^^ help: replace it with: `c1` [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/lexer.rs:149:13 [INFO] [stderr] | [INFO] [stderr] 149 | c2: c2, [INFO] [stderr] | ^^^^^^ help: replace it with: `c2` [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/parser.rs:129:13 [INFO] [stderr] | [INFO] [stderr] 129 | lexer: lexer, [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `lexer` [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/parser.rs:130:13 [INFO] [stderr] | [INFO] [stderr] 130 | c1: c1, [INFO] [stderr] | ^^^^^^ help: replace it with: `c1` [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/parser.rs:352:13 [INFO] [stderr] | [INFO] [stderr] 352 | op: op, [INFO] [stderr] | ^^^^^^ help: replace it with: `op` [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/parser.rs:353:13 [INFO] [stderr] | [INFO] [stderr] 353 | major: major, [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `major` [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/parser.rs:354:13 [INFO] [stderr] | [INFO] [stderr] 354 | minor: minor, [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `minor` [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/parser.rs:355:13 [INFO] [stderr] | [INFO] [stderr] 355 | patch: patch, [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `patch` [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/parser.rs:356:13 [INFO] [stderr] | [INFO] [stderr] 356 | pre: pre, [INFO] [stderr] | ^^^^^^^^ help: replace it with: `pre` [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/parser.rs:375:13 [INFO] [stderr] | [INFO] [stderr] 375 | predicates: predicates, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `predicates` [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/parser.rs:390:25 [INFO] [stderr] | [INFO] [stderr] 390 | Ok(Comparator { ranges: ranges }) [INFO] [stderr] | ^^^^^^^^^^^^^^ help: replace it with: `ranges` [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/parser.rs:408:13 [INFO] [stderr] | [INFO] [stderr] 408 | major: major, [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `major` [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/parser.rs:409:13 [INFO] [stderr] | [INFO] [stderr] 409 | minor: minor, [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `minor` [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/parser.rs:410:13 [INFO] [stderr] | [INFO] [stderr] 410 | patch: patch, [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `patch` [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/parser.rs:411:13 [INFO] [stderr] | [INFO] [stderr] 411 | pre: pre, [INFO] [stderr] | ^^^^^^^^ help: replace it with: `pre` [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/parser.rs:412:13 [INFO] [stderr] | [INFO] [stderr] 412 | build: build, [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `build` [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/lexer.rs:146:13 [INFO] [stderr] | [INFO] [stderr] 146 | input: input, [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `input` [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/lexer.rs:147:13 [INFO] [stderr] | [INFO] [stderr] 147 | chars: chars, [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `chars` [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/lexer.rs:148:13 [INFO] [stderr] | [INFO] [stderr] 148 | c1: c1, [INFO] [stderr] | ^^^^^^ help: replace it with: `c1` [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/lexer.rs:149:13 [INFO] [stderr] | [INFO] [stderr] 149 | c2: c2, [INFO] [stderr] | ^^^^^^ help: replace it with: `c2` [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/parser.rs:129:13 [INFO] [stderr] | [INFO] [stderr] 129 | lexer: lexer, [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `lexer` [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/parser.rs:130:13 [INFO] [stderr] | [INFO] [stderr] 130 | c1: c1, [INFO] [stderr] | ^^^^^^ help: replace it with: `c1` [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/parser.rs:352:13 [INFO] [stderr] | [INFO] [stderr] 352 | op: op, [INFO] [stderr] | ^^^^^^ help: replace it with: `op` [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/parser.rs:353:13 [INFO] [stderr] | [INFO] [stderr] 353 | major: major, [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `major` [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/parser.rs:354:13 [INFO] [stderr] | [INFO] [stderr] 354 | minor: minor, [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `minor` [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/parser.rs:355:13 [INFO] [stderr] | [INFO] [stderr] 355 | patch: patch, [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `patch` [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/parser.rs:356:13 [INFO] [stderr] | [INFO] [stderr] 356 | pre: pre, [INFO] [stderr] | ^^^^^^^^ help: replace it with: `pre` [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/parser.rs:375:13 [INFO] [stderr] | [INFO] [stderr] 375 | predicates: predicates, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `predicates` [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/parser.rs:390:25 [INFO] [stderr] | [INFO] [stderr] 390 | Ok(Comparator { ranges: ranges }) [INFO] [stderr] | ^^^^^^^^^^^^^^ help: replace it with: `ranges` [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/parser.rs:408:13 [INFO] [stderr] | [INFO] [stderr] 408 | major: major, [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `major` [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/parser.rs:409:13 [INFO] [stderr] | [INFO] [stderr] 409 | minor: minor, [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `minor` [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/parser.rs:410:13 [INFO] [stderr] | [INFO] [stderr] 410 | patch: patch, [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `patch` [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/parser.rs:411:13 [INFO] [stderr] | [INFO] [stderr] 411 | pre: pre, [INFO] [stderr] | ^^^^^^^^ help: replace it with: `pre` [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/parser.rs:412:13 [INFO] [stderr] | [INFO] [stderr] 412 | build: build, [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `build` [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] error: this loop never actually loops [INFO] [stderr] --> src/lexer.rs:212:9 [INFO] [stderr] | [INFO] [stderr] 212 | / loop { [INFO] [stderr] 213 | | // two subsequent char tokens. [INFO] [stderr] 214 | | if let Some((_, a, b)) = self.two() { [INFO] [stderr] 215 | | let two = match (a, b) { [INFO] [stderr] ... | [INFO] [stderr] 256 | | return None; [INFO] [stderr] 257 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = note: #[deny(clippy::never_loop)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#never_loop [INFO] [stderr] [INFO] [stderr] warning: this loop could be written as a `while let` loop [INFO] [stderr] --> src/parser.rs:266:9 [INFO] [stderr] | [INFO] [stderr] 266 | / loop { [INFO] [stderr] 267 | | match self.peek() { [INFO] [stderr] 268 | | Some(&Token::Dot) => {} [INFO] [stderr] 269 | | _ => break, [INFO] [stderr] ... | [INFO] [stderr] 275 | | parts.push(self.identifier()?); [INFO] [stderr] 276 | | } [INFO] [stderr] | |_________^ help: try: `while let Some(&Token::Dot) = self.peek() { .. }` [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: methods called `is_*` usually take self by reference or no self; consider choosing a less ambiguous name [INFO] [stderr] --> src/parser.rs:417:19 [INFO] [stderr] | [INFO] [stderr] 417 | pub fn is_eof(&mut self) -> bool { [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: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/range.rs:298:1 [INFO] [stderr] | [INFO] [stderr] 298 | / pub fn parse_predicate<'input>( [INFO] [stderr] 299 | | input: &'input str, [INFO] [stderr] 300 | | ) -> Result, parser::Error<'input>> { [INFO] [stderr] 301 | | let mut parser = Parser::new(input)?; [INFO] [stderr] ... | [INFO] [stderr] 308 | | Ok(predicate) [INFO] [stderr] 309 | | } [INFO] [stderr] | |_^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_lifetimes)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stderr] [INFO] [stderr] warning: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/range.rs:379:1 [INFO] [stderr] | [INFO] [stderr] 379 | / pub fn parse<'input>(input: &'input str) -> Result> { [INFO] [stderr] 380 | | let mut parser = Parser::new(input)?; [INFO] [stderr] 381 | | let range = parser.range()?; [INFO] [stderr] 382 | | [INFO] [stderr] ... | [INFO] [stderr] 387 | | Ok(range) [INFO] [stderr] 388 | | } [INFO] [stderr] | |_^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stderr] [INFO] [stderr] warning: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/version.rs:143:1 [INFO] [stderr] | [INFO] [stderr] 143 | / pub fn parse<'input>(input: &'input str) -> Result> { [INFO] [stderr] 144 | | let mut parser = Parser::new(input)?; [INFO] [stderr] 145 | | let version = parser.version()?; [INFO] [stderr] 146 | | [INFO] [stderr] ... | [INFO] [stderr] 151 | | Ok(version) [INFO] [stderr] 152 | | } [INFO] [stderr] | |_^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stderr] [INFO] [stderr] error: aborting due to previous error [INFO] [stderr] [INFO] [stderr] error: Could not compile `semver-parser`. [INFO] [stderr] warning: build failed, waiting for other jobs to finish... [INFO] [stderr] error: this loop never actually loops [INFO] [stderr] --> src/lexer.rs:212:9 [INFO] [stderr] | [INFO] [stderr] 212 | / loop { [INFO] [stderr] 213 | | // two subsequent char tokens. [INFO] [stderr] 214 | | if let Some((_, a, b)) = self.two() { [INFO] [stderr] 215 | | let two = match (a, b) { [INFO] [stderr] ... | [INFO] [stderr] 256 | | return None; [INFO] [stderr] 257 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = note: #[deny(clippy::never_loop)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#never_loop [INFO] [stderr] [INFO] [stderr] warning: this loop could be written as a `while let` loop [INFO] [stderr] --> src/parser.rs:266:9 [INFO] [stderr] | [INFO] [stderr] 266 | / loop { [INFO] [stderr] 267 | | match self.peek() { [INFO] [stderr] 268 | | Some(&Token::Dot) => {} [INFO] [stderr] 269 | | _ => break, [INFO] [stderr] ... | [INFO] [stderr] 275 | | parts.push(self.identifier()?); [INFO] [stderr] 276 | | } [INFO] [stderr] | |_________^ help: try: `while let Some(&Token::Dot) = self.peek() { .. }` [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: methods called `is_*` usually take self by reference or no self; consider choosing a less ambiguous name [INFO] [stderr] --> src/parser.rs:417:19 [INFO] [stderr] | [INFO] [stderr] 417 | pub fn is_eof(&mut self) -> bool { [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: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/range.rs:298:1 [INFO] [stderr] | [INFO] [stderr] 298 | / pub fn parse_predicate<'input>( [INFO] [stderr] 299 | | input: &'input str, [INFO] [stderr] 300 | | ) -> Result, parser::Error<'input>> { [INFO] [stderr] 301 | | let mut parser = Parser::new(input)?; [INFO] [stderr] ... | [INFO] [stderr] 308 | | Ok(predicate) [INFO] [stderr] 309 | | } [INFO] [stderr] | |_^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_lifetimes)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stderr] [INFO] [stderr] warning: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/range.rs:379:1 [INFO] [stderr] | [INFO] [stderr] 379 | / pub fn parse<'input>(input: &'input str) -> Result> { [INFO] [stderr] 380 | | let mut parser = Parser::new(input)?; [INFO] [stderr] 381 | | let range = parser.range()?; [INFO] [stderr] 382 | | [INFO] [stderr] ... | [INFO] [stderr] 387 | | Ok(range) [INFO] [stderr] 388 | | } [INFO] [stderr] | |_^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stderr] [INFO] [stderr] warning: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/version.rs:143:1 [INFO] [stderr] | [INFO] [stderr] 143 | / pub fn parse<'input>(input: &'input str) -> Result> { [INFO] [stderr] 144 | | let mut parser = Parser::new(input)?; [INFO] [stderr] 145 | | let version = parser.version()?; [INFO] [stderr] 146 | | [INFO] [stderr] ... | [INFO] [stderr] 151 | | Ok(version) [INFO] [stderr] 152 | | } [INFO] [stderr] | |_^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stderr] [INFO] [stderr] error: aborting due to previous error [INFO] [stderr] [INFO] [stderr] error: Could not compile `semver-parser`. [INFO] [stderr] [INFO] [stderr] To learn more, run the command again with --verbose. [INFO] running `"docker" "inspect" "15f673ff047e5590086c520d92989be7b354b432637db5f7022ae7c9fb050562"` [INFO] running `"docker" "rm" "-f" "15f673ff047e5590086c520d92989be7b354b432637db5f7022ae7c9fb050562"` [INFO] [stdout] 15f673ff047e5590086c520d92989be7b354b432637db5f7022ae7c9fb050562