[INFO] updating cached repository emj-lang/clex [INFO] running `"git" "fetch" "--all"` [INFO] [stdout] Fetching origin [INFO] [stderr] From git://github.com/emj-lang/clex [INFO] [stderr] * branch HEAD -> FETCH_HEAD [INFO] running `"git" "clone" "work/cache/sources/gh/emj-lang/clex" "work/ex/clippy-test-run/sources/stable/gh/emj-lang/clex"` [INFO] [stderr] Cloning into 'work/ex/clippy-test-run/sources/stable/gh/emj-lang/clex'... [INFO] [stderr] done. [INFO] running `"git" "clone" "work/cache/sources/gh/emj-lang/clex" "work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/emj-lang/clex"` [INFO] [stderr] Cloning into 'work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/emj-lang/clex'... [INFO] [stderr] done. [INFO] running `"git" "rev-parse" "HEAD"` [INFO] [stdout] 82efe9636b722d6eeb4558ca67feefaf44faad85 [INFO] sha for GitHub repo emj-lang/clex: 82efe9636b722d6eeb4558ca67feefaf44faad85 [INFO] validating manifest of emj-lang/clex 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 emj-lang/clex 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 emj-lang/clex [INFO] finished frobbing emj-lang/clex [INFO] frobbed toml for emj-lang/clex written to work/ex/clippy-test-run/sources/stable/gh/emj-lang/clex/Cargo.toml [INFO] started frobbing emj-lang/clex [INFO] finished frobbing emj-lang/clex [INFO] frobbed toml for emj-lang/clex written to work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/emj-lang/clex/Cargo.toml [INFO] crate emj-lang/clex has a lockfile. skipping [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 emj-lang/clex against stable for clippy-test-run [INFO] running `"docker" "create" "-v" "/mnt/big/crater/work/local/target-dirs/clippy-test-run/worker-0/stable:/opt/crater/target:rw,Z" "-v" "/mnt/big/crater/work/ex/clippy-test-run/sources/stable/gh/emj-lang/clex:/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] 6c6152c6709a34c57a179bff9c2c985527d6ce617dd68426d324b5c83b1ece65 [INFO] running `"docker" "start" "-a" "6c6152c6709a34c57a179bff9c2c985527d6ce617dd68426d324b5c83b1ece65"` [INFO] [stderr] Checking clex v0.1.0 (/opt/crater/workdir) [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/matchers/basic.rs:95:15 [INFO] [stderr] | [INFO] [stderr] 95 | Byte {b: b, escaped: escaped} [INFO] [stderr] | ^^^^ help: replace it with: `b` [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/matchers/basic.rs:95:21 [INFO] [stderr] | [INFO] [stderr] 95 | Byte {b: b, escaped: escaped} [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: replace it with: `escaped` [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/matchers/group.rs:18:13 [INFO] [stderr] | [INFO] [stderr] 18 | capture: capture, [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: replace it with: `capture` [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/matchers/group.rs:19:13 [INFO] [stderr] | [INFO] [stderr] 19 | backmatch: backmatch, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: replace it with: `backmatch` [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/matchers/set.rs:21:15 [INFO] [stderr] | [INFO] [stderr] 21 | Set { next: next, elements: elements, negated: negated } [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `next` [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/matchers/set.rs:21:27 [INFO] [stderr] | [INFO] [stderr] 21 | Set { next: next, elements: elements, negated: negated } [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: replace it with: `elements` [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/matchers/set.rs:21:47 [INFO] [stderr] | [INFO] [stderr] 21 | Set { next: next, elements: elements, negated: negated } [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: replace it with: `negated` [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/matchers/set.rs:120:27 [INFO] [stderr] | [INFO] [stderr] 120 | MatchStateProxy { state: state, captured: Vec::new(), } [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `state` [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/matchers/quantifiers.rs:23:20 [INFO] [stderr] | [INFO] [stderr] 23 | Quantifier{quantification: quantification, quantified: quantified, next: next} [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `quantification` [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/matchers/quantifiers.rs:23:52 [INFO] [stderr] | [INFO] [stderr] 23 | Quantifier{quantification: quantification, quantified: quantified, next: next} [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `quantified` [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/matchers/quantifiers.rs:23:76 [INFO] [stderr] | [INFO] [stderr] 23 | Quantifier{quantification: quantification, quantified: quantified, next: next} [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `next` [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/matchers/root.rs:14:16 [INFO] [stderr] | [INFO] [stderr] 14 | Root { children: children } [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: replace it with: `children` [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/matchers/slice.rs:15:17 [INFO] [stderr] | [INFO] [stderr] 15 | Slice { slice: slice, capture: capture, startpos: startpos, backmatch: backmatch } [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `slice` [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/matchers/slice.rs:15:31 [INFO] [stderr] | [INFO] [stderr] 15 | Slice { slice: slice, capture: capture, startpos: startpos, backmatch: backmatch } [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: replace it with: `capture` [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/matchers/slice.rs:15:49 [INFO] [stderr] | [INFO] [stderr] 15 | Slice { slice: slice, capture: capture, startpos: startpos, backmatch: backmatch } [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: replace it with: `startpos` [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/matchers/slice.rs:15:69 [INFO] [stderr] | [INFO] [stderr] 15 | Slice { slice: slice, capture: capture, startpos: startpos, backmatch: backmatch } [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: replace it with: `backmatch` [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: literal with an empty format string [INFO] [stderr] --> src/matchers/slice.rs:96:25 [INFO] [stderr] | [INFO] [stderr] 96 | write!(f, "{}", "[Slice matcher cannot be printed, as it is not part of a pattern.]") [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::write_literal)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#write_literal [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/matchstate.rs:16:32 [INFO] [stderr] | [INFO] [stderr] 16 | MatcherState { pos: 0, data: data, captured: Vec::new(), userdata: HashMap::new() } [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `data` [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/lib.rs:43:16 [INFO] [stderr] | [INFO] [stderr] 43 | Next { element: element, next: next } [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: replace it with: `element` [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/lib.rs:43:34 [INFO] [stderr] | [INFO] [stderr] 43 | Next { element: element, next: next } [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `next` [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/matchers/basic.rs:95:15 [INFO] [stderr] | [INFO] [stderr] 95 | Byte {b: b, escaped: escaped} [INFO] [stderr] | ^^^^ help: replace it with: `b` [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/matchers/basic.rs:95:21 [INFO] [stderr] | [INFO] [stderr] 95 | Byte {b: b, escaped: escaped} [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: replace it with: `escaped` [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/matchers/group.rs:18:13 [INFO] [stderr] | [INFO] [stderr] 18 | capture: capture, [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: replace it with: `capture` [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/matchers/group.rs:19:13 [INFO] [stderr] | [INFO] [stderr] 19 | backmatch: backmatch, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: replace it with: `backmatch` [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/matchers/set.rs:21:15 [INFO] [stderr] | [INFO] [stderr] 21 | Set { next: next, elements: elements, negated: negated } [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `next` [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/matchers/set.rs:21:27 [INFO] [stderr] | [INFO] [stderr] 21 | Set { next: next, elements: elements, negated: negated } [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: replace it with: `elements` [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/matchers/set.rs:21:47 [INFO] [stderr] | [INFO] [stderr] 21 | Set { next: next, elements: elements, negated: negated } [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: replace it with: `negated` [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/matchers/set.rs:120:27 [INFO] [stderr] | [INFO] [stderr] 120 | MatchStateProxy { state: state, captured: Vec::new(), } [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `state` [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/matchers/quantifiers.rs:23:20 [INFO] [stderr] | [INFO] [stderr] 23 | Quantifier{quantification: quantification, quantified: quantified, next: next} [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `quantification` [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/matchers/quantifiers.rs:23:52 [INFO] [stderr] | [INFO] [stderr] 23 | Quantifier{quantification: quantification, quantified: quantified, next: next} [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `quantified` [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/matchers/quantifiers.rs:23:76 [INFO] [stderr] | [INFO] [stderr] 23 | Quantifier{quantification: quantification, quantified: quantified, next: next} [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `next` [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/matchers/root.rs:14:16 [INFO] [stderr] | [INFO] [stderr] 14 | Root { children: children } [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: replace it with: `children` [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/matchers/slice.rs:15:17 [INFO] [stderr] | [INFO] [stderr] 15 | Slice { slice: slice, capture: capture, startpos: startpos, backmatch: backmatch } [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `slice` [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/matchers/slice.rs:15:31 [INFO] [stderr] | [INFO] [stderr] 15 | Slice { slice: slice, capture: capture, startpos: startpos, backmatch: backmatch } [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: replace it with: `capture` [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/matchers/slice.rs:15:49 [INFO] [stderr] | [INFO] [stderr] 15 | Slice { slice: slice, capture: capture, startpos: startpos, backmatch: backmatch } [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: replace it with: `startpos` [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/matchers/slice.rs:15:69 [INFO] [stderr] | [INFO] [stderr] 15 | Slice { slice: slice, capture: capture, startpos: startpos, backmatch: backmatch } [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: replace it with: `backmatch` [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: literal with an empty format string [INFO] [stderr] --> src/matchers/slice.rs:96:25 [INFO] [stderr] | [INFO] [stderr] 96 | write!(f, "{}", "[Slice matcher cannot be printed, as it is not part of a pattern.]") [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::write_literal)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#write_literal [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/matchstate.rs:16:32 [INFO] [stderr] | [INFO] [stderr] 16 | MatcherState { pos: 0, data: data, captured: Vec::new(), userdata: HashMap::new() } [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `data` [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/lib.rs:43:16 [INFO] [stderr] | [INFO] [stderr] 43 | Next { element: element, next: next } [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: replace it with: `element` [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/lib.rs:43:34 [INFO] [stderr] | [INFO] [stderr] 43 | Next { element: element, next: next } [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `next` [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: unneeded return statement [INFO] [stderr] --> src/matchers/group.rs:38:13 [INFO] [stderr] | [INFO] [stderr] 38 | return CompareResult::Match(0) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `CompareResult::Match(0)` [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: returning the result of a let binding from a block. Consider returning the expression directly. [INFO] [stderr] --> src/matchers/group.rs:42:13 [INFO] [stderr] | [INFO] [stderr] 42 | result [INFO] [stderr] | ^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::let_and_return)] on by default [INFO] [stderr] note: this expression can be directly returned [INFO] [stderr] --> src/matchers/group.rs:41:26 [INFO] [stderr] | [INFO] [stderr] 41 | let result = slice.compare_next(state, next); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#let_and_return [INFO] [stderr] [INFO] [stderr] warning: returning the result of a let binding from a block. Consider returning the expression directly. [INFO] [stderr] --> src/matchers/root.rs:29:9 [INFO] [stderr] | [INFO] [stderr] 29 | result [INFO] [stderr] | ^^^^^^ [INFO] [stderr] | [INFO] [stderr] note: this expression can be directly returned [INFO] [stderr] --> src/matchers/root.rs:27:22 [INFO] [stderr] | [INFO] [stderr] 27 | let result = slice.compare_next(state, None); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#let_and_return [INFO] [stderr] [INFO] [stderr] warning: this `else { if .. }` block can be collapsed [INFO] [stderr] --> src/matchers/slice.rs:42:20 [INFO] [stderr] | [INFO] [stderr] 42 | } else { [INFO] [stderr] | ____________________^ [INFO] [stderr] 43 | | if self.capture { [INFO] [stderr] 44 | | state.push_capture(MatchCapture::Bytes { start: self.startpos, end: pos}); [INFO] [stderr] 45 | | } [INFO] [stderr] 46 | | } [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] 42 | } else if self.capture { [INFO] [stderr] 43 | state.push_capture(MatchCapture::Bytes { start: self.startpos, end: pos}); [INFO] [stderr] 44 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/matchers/group.rs:38:13 [INFO] [stderr] | [INFO] [stderr] 38 | return CompareResult::Match(0) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `CompareResult::Match(0)` [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: returning the result of a let binding from a block. Consider returning the expression directly. [INFO] [stderr] --> src/matchers/group.rs:42:13 [INFO] [stderr] | [INFO] [stderr] 42 | result [INFO] [stderr] | ^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::let_and_return)] on by default [INFO] [stderr] note: this expression can be directly returned [INFO] [stderr] --> src/matchers/group.rs:41:26 [INFO] [stderr] | [INFO] [stderr] 41 | let result = slice.compare_next(state, next); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#let_and_return [INFO] [stderr] [INFO] [stderr] warning: returning the result of a let binding from a block. Consider returning the expression directly. [INFO] [stderr] --> src/matchers/root.rs:29:9 [INFO] [stderr] | [INFO] [stderr] 29 | result [INFO] [stderr] | ^^^^^^ [INFO] [stderr] | [INFO] [stderr] note: this expression can be directly returned [INFO] [stderr] --> src/matchers/root.rs:27:22 [INFO] [stderr] | [INFO] [stderr] 27 | let result = slice.compare_next(state, None); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#let_and_return [INFO] [stderr] [INFO] [stderr] warning: this `else { if .. }` block can be collapsed [INFO] [stderr] --> src/matchers/slice.rs:42:20 [INFO] [stderr] | [INFO] [stderr] 42 | } else { [INFO] [stderr] | ____________________^ [INFO] [stderr] 43 | | if self.capture { [INFO] [stderr] 44 | | state.push_capture(MatchCapture::Bytes { start: self.startpos, end: pos}); [INFO] [stderr] 45 | | } [INFO] [stderr] 46 | | } [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] 42 | } else if self.capture { [INFO] [stderr] 43 | state.push_capture(MatchCapture::Bytes { start: self.startpos, end: pos}); [INFO] [stderr] 44 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: the `b @ _` pattern can be written as just `b` [INFO] [stderr] --> src/matchers/basic.rs:106:13 [INFO] [stderr] | [INFO] [stderr] 106 | b @ _ => write!(f, "\\x{:X}", b), [INFO] [stderr] | ^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::redundant_pattern)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_pattern [INFO] [stderr] [INFO] [stderr] warning: the `b @ _` pattern can be written as just `b` [INFO] [stderr] --> src/matchers/basic.rs:106:13 [INFO] [stderr] | [INFO] [stderr] 106 | b @ _ => write!(f, "\\x{:X}", b), [INFO] [stderr] | ^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::redundant_pattern)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_pattern [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/matchers/set.rs:31:13 [INFO] [stderr] | [INFO] [stderr] 31 | / match e { [INFO] [stderr] 32 | | &SetElement::PE(ref pe) => { [INFO] [stderr] 33 | | result = Some(pe.compare(state)); [INFO] [stderr] 34 | | if let Some(CompareResult::Match(0)) = result { [INFO] [stderr] ... | [INFO] [stderr] 51 | | }, [INFO] [stderr] 52 | | } [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] 31 | match *e { [INFO] [stderr] 32 | SetElement::PE(ref pe) => { [INFO] [stderr] 33 | result = Some(pe.compare(state)); [INFO] [stderr] 34 | if let Some(CompareResult::Match(0)) = result { [INFO] [stderr] 35 | break; [INFO] [stderr] 36 | } [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/matchers/set.rs:57:26 [INFO] [stderr] | [INFO] [stderr] 57 | _ => match self.next.compare(state) { [INFO] [stderr] | __________________________^ [INFO] [stderr] 58 | | r @ CompareResult::Match(0) => { return r; }, [INFO] [stderr] 59 | | _ => {}, [INFO] [stderr] 60 | | }, [INFO] [stderr] | |_____________________^ help: try this: `if let r @ CompareResult::Match(0) = self.next.compare(state) { return r; }` [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 seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/matchers/set.rs:63:17 [INFO] [stderr] | [INFO] [stderr] 63 | / match result.unwrap() { [INFO] [stderr] 64 | | CompareResult::Match(0) => match self.next.compare(state) { [INFO] [stderr] 65 | | r @ CompareResult::Match(0) => { return r; }, [INFO] [stderr] 66 | | _ => {}, [INFO] [stderr] 67 | | }, [INFO] [stderr] 68 | | _ => {}, [INFO] [stderr] 69 | | } [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] 63 | if let CompareResult::Match(0) = result.unwrap() { match self.next.compare(state) { [INFO] [stderr] 64 | r @ CompareResult::Match(0) => { return r; }, [INFO] [stderr] 65 | _ => {}, [INFO] [stderr] 66 | } } [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/matchers/set.rs:64:48 [INFO] [stderr] | [INFO] [stderr] 64 | CompareResult::Match(0) => match self.next.compare(state) { [INFO] [stderr] | ________________________________________________^ [INFO] [stderr] 65 | | r @ CompareResult::Match(0) => { return r; }, [INFO] [stderr] 66 | | _ => {}, [INFO] [stderr] 67 | | }, [INFO] [stderr] | |_____________________^ help: try this: `if let r @ CompareResult::Match(0) = self.next.compare(state) { return r; }` [INFO] [stderr] | [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/matchers/set.rs:91:13 [INFO] [stderr] | [INFO] [stderr] 91 | / match e { [INFO] [stderr] 92 | | &SetElement::PE(ref pe) => { try!(write!(f, "{}", pe)); }, [INFO] [stderr] 93 | | &SetElement::R{ ref lower, ref upper } => { [INFO] [stderr] 94 | | try!(write!(f, "{}", lower)); [INFO] [stderr] ... | [INFO] [stderr] 97 | | }, [INFO] [stderr] 98 | | } [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] 91 | match *e { [INFO] [stderr] 92 | SetElement::PE(ref pe) => { try!(write!(f, "{}", pe)); }, [INFO] [stderr] 93 | SetElement::R{ ref lower, ref upper } => { [INFO] [stderr] | [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/matchers/set.rs:31:13 [INFO] [stderr] | [INFO] [stderr] 31 | / match e { [INFO] [stderr] 32 | | &SetElement::PE(ref pe) => { [INFO] [stderr] 33 | | result = Some(pe.compare(state)); [INFO] [stderr] 34 | | if let Some(CompareResult::Match(0)) = result { [INFO] [stderr] ... | [INFO] [stderr] 51 | | }, [INFO] [stderr] 52 | | } [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] [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 31 | match *e { [INFO] [stderr] 32 | SetElement::PE(ref pe) => { [INFO] [stderr] 33 | result = Some(pe.compare(state)); [INFO] [stderr] 34 | if let Some(CompareResult::Match(0)) = result { [INFO] [stderr] 35 | break; [INFO] [stderr] 36 | } [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/matchers/set.rs:57:26 [INFO] [stderr] | [INFO] [stderr] 57 | _ => match self.next.compare(state) { [INFO] [stderr] | __________________________^ [INFO] [stderr] 58 | | r @ CompareResult::Match(0) => { return r; }, [INFO] [stderr] 59 | | _ => {}, [INFO] [stderr] 60 | | }, [INFO] [stderr] | |_____________________^ help: try this: `if let r @ CompareResult::Match(0) = self.next.compare(state) { return r; }` [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 seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/matchers/set.rs:63:17 [INFO] [stderr] | [INFO] [stderr] 63 | / match result.unwrap() { [INFO] [stderr] 64 | | CompareResult::Match(0) => match self.next.compare(state) { [INFO] [stderr] 65 | | r @ CompareResult::Match(0) => { return r; }, [INFO] [stderr] 66 | | _ => {}, [INFO] [stderr] 67 | | }, [INFO] [stderr] 68 | | _ => {}, [INFO] [stderr] 69 | | } [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] 63 | if let CompareResult::Match(0) = result.unwrap() { match self.next.compare(state) { [INFO] [stderr] 64 | r @ CompareResult::Match(0) => { return r; }, [INFO] [stderr] 65 | _ => {}, [INFO] [stderr] 66 | } } [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/matchers/set.rs:64:48 [INFO] [stderr] | [INFO] [stderr] 64 | CompareResult::Match(0) => match self.next.compare(state) { [INFO] [stderr] | ________________________________________________^ [INFO] [stderr] 65 | | r @ CompareResult::Match(0) => { return r; }, [INFO] [stderr] 66 | | _ => {}, [INFO] [stderr] 67 | | }, [INFO] [stderr] | |_____________________^ help: try this: `if let r @ CompareResult::Match(0) = self.next.compare(state) { return r; }` [INFO] [stderr] | [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/matchers/set.rs:91:13 [INFO] [stderr] | [INFO] [stderr] 91 | / match e { [INFO] [stderr] 92 | | &SetElement::PE(ref pe) => { try!(write!(f, "{}", pe)); }, [INFO] [stderr] 93 | | &SetElement::R{ ref lower, ref upper } => { [INFO] [stderr] 94 | | try!(write!(f, "{}", lower)); [INFO] [stderr] ... | [INFO] [stderr] 97 | | }, [INFO] [stderr] 98 | | } [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] 91 | match *e { [INFO] [stderr] 92 | SetElement::PE(ref pe) => { try!(write!(f, "{}", pe)); }, [INFO] [stderr] 93 | SetElement::R{ ref lower, ref upper } => { [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: this loop could be written as a `while let` loop [INFO] [stderr] --> src/matchers/quantifiers.rs:37:17 [INFO] [stderr] | [INFO] [stderr] 37 | / loop { [INFO] [stderr] 38 | | match self.quantified.compare(state) { [INFO] [stderr] 39 | | CompareResult::Match(0) => { matched.push(state.pos()) }, [INFO] [stderr] 40 | | _ => { break }, [INFO] [stderr] 41 | | } [INFO] [stderr] 42 | | } [INFO] [stderr] | |_________________^ help: try: `while let CompareResult::Match(0) = self.quantified.compare(state) { .. }` [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 seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/matchers/quantifiers.rs:58:29 [INFO] [stderr] | [INFO] [stderr] 58 | / match self.next.compare(state) { [INFO] [stderr] 59 | | CompareResult::Match(0) => { return CompareResult::Match(0) }, [INFO] [stderr] 60 | | _ => {}, [INFO] [stderr] 61 | | } [INFO] [stderr] | |_____________________________^ help: try this: `if let CompareResult::Match(0) = self.next.compare(state) { return CompareResult::Match(0) }` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/matchers/slice.rs:32:12 [INFO] [stderr] | [INFO] [stderr] 32 | if self.slice.len() == 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `self.slice.is_empty()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::len_zero)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: this loop could be written as a `for` loop [INFO] [stderr] --> src/matchers/slice.rs:49:38 [INFO] [stderr] | [INFO] [stderr] 49 | while let Some((i, c)) = iter.next() { [INFO] [stderr] | ^^^^^^^^^^^ help: try: `for (i, c) in iter { .. }` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::while_let_on_iterator)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#while_let_on_iterator [INFO] [stderr] [INFO] [stderr] warning: this loop could be written as a `while let` loop [INFO] [stderr] --> src/matchers/quantifiers.rs:37:17 [INFO] [stderr] | [INFO] [stderr] 37 | / loop { [INFO] [stderr] 38 | | match self.quantified.compare(state) { [INFO] [stderr] 39 | | CompareResult::Match(0) => { matched.push(state.pos()) }, [INFO] [stderr] 40 | | _ => { break }, [INFO] [stderr] 41 | | } [INFO] [stderr] 42 | | } [INFO] [stderr] | |_________________^ help: try: `while let CompareResult::Match(0) = self.quantified.compare(state) { .. }` [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 seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/matchers/quantifiers.rs:58:29 [INFO] [stderr] | [INFO] [stderr] 58 | / match self.next.compare(state) { [INFO] [stderr] 59 | | CompareResult::Match(0) => { return CompareResult::Match(0) }, [INFO] [stderr] 60 | | _ => {}, [INFO] [stderr] 61 | | } [INFO] [stderr] | |_____________________________^ help: try this: `if let CompareResult::Match(0) = self.next.compare(state) { return CompareResult::Match(0) }` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/matchers/slice.rs:32:12 [INFO] [stderr] | [INFO] [stderr] 32 | if self.slice.len() == 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `self.slice.is_empty()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::len_zero)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: this loop could be written as a `for` loop [INFO] [stderr] --> src/matchers/slice.rs:49:38 [INFO] [stderr] | [INFO] [stderr] 49 | while let Some((i, c)) = iter.next() { [INFO] [stderr] | ^^^^^^^^^^^ help: try: `for (i, c) in iter { .. }` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::while_let_on_iterator)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#while_let_on_iterator [INFO] [stderr] [INFO] [stderr] Finished dev [unoptimized + debuginfo] target(s) in 1.29s [INFO] running `"docker" "inspect" "6c6152c6709a34c57a179bff9c2c985527d6ce617dd68426d324b5c83b1ece65"` [INFO] running `"docker" "rm" "-f" "6c6152c6709a34c57a179bff9c2c985527d6ce617dd68426d324b5c83b1ece65"` [INFO] [stdout] 6c6152c6709a34c57a179bff9c2c985527d6ce617dd68426d324b5c83b1ece65