[INFO] updating cached repository bhamrick/factorio [INFO] running `"git" "fetch" "--all"` [INFO] [stdout] Fetching origin [INFO] [stderr] From git://github.com/bhamrick/factorio [INFO] [stderr] * branch HEAD -> FETCH_HEAD [INFO] running `"git" "clone" "work/cache/sources/gh/bhamrick/factorio" "work/ex/clippy-test-run/sources/stable/gh/bhamrick/factorio"` [INFO] [stderr] Cloning into 'work/ex/clippy-test-run/sources/stable/gh/bhamrick/factorio'... [INFO] [stderr] done. [INFO] running `"git" "clone" "work/cache/sources/gh/bhamrick/factorio" "work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/bhamrick/factorio"` [INFO] [stderr] Cloning into 'work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/bhamrick/factorio'... [INFO] [stderr] done. [INFO] running `"git" "rev-parse" "HEAD"` [INFO] [stdout] c41b01434d6105fc6bbf002659f145a8d67dc562 [INFO] sha for GitHub repo bhamrick/factorio: c41b01434d6105fc6bbf002659f145a8d67dc562 [INFO] validating manifest of bhamrick/factorio 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 bhamrick/factorio 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 bhamrick/factorio [INFO] finished frobbing bhamrick/factorio [INFO] frobbed toml for bhamrick/factorio written to work/ex/clippy-test-run/sources/stable/gh/bhamrick/factorio/Cargo.toml [INFO] started frobbing bhamrick/factorio [INFO] finished frobbing bhamrick/factorio [INFO] frobbed toml for bhamrick/factorio written to work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/bhamrick/factorio/Cargo.toml [INFO] crate bhamrick/factorio 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 bhamrick/factorio against stable for clippy-test-run [INFO] running `"docker" "create" "-v" "/mnt/big/crater/work/local/target-dirs/clippy-test-run/worker-3/stable:/opt/crater/target:rw,Z" "-v" "/mnt/big/crater/work/ex/clippy-test-run/sources/stable/gh/bhamrick/factorio:/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] 679a395f8f5d7082000b4621b3e8786ebf26e6bca0c5599355d3fa680408993b [INFO] running `"docker" "start" "-a" "679a395f8f5d7082000b4621b3e8786ebf26e6bca0c5599355d3fa680408993b"` [INFO] [stderr] Checking memchr v1.0.1 [INFO] [stderr] Checking rulinalg v0.4.2 [INFO] [stderr] Checking nom v3.1.0 [INFO] [stderr] Checking factorio v0.1.0 (/opt/crater/workdir) [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/main.rs:3571:21 [INFO] [stderr] | [INFO] [stderr] 3571 | name: name, [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `name` [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/main.rs:3572:21 [INFO] [stderr] | [INFO] [stderr] 3572 | resource_type: resource_type, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `resource_type` [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/main.rs:3721:21 [INFO] [stderr] | [INFO] [stderr] 3721 | recipe: recipe, [INFO] [stderr] | ^^^^^^^^^^^^^^ help: replace it with: `recipe` [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/main.rs:3725:21 [INFO] [stderr] | [INFO] [stderr] 3725 | modules: modules, [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: replace it with: `modules` [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: using `println!("")` [INFO] [stderr] --> src/main.rs:3825:9 [INFO] [stderr] | [INFO] [stderr] 3825 | println!(""); [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `println!()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::println_empty_string)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#println_empty_string [INFO] [stderr] [INFO] [stderr] warning: using `println!("")` [INFO] [stderr] --> src/main.rs:3833:13 [INFO] [stderr] | [INFO] [stderr] 3833 | println!(""); [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `println!()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#println_empty_string [INFO] [stderr] [INFO] [stderr] warning: using `println!("")` [INFO] [stderr] --> src/main.rs:3859:9 [INFO] [stderr] | [INFO] [stderr] 3859 | println!(""); [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `println!()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#println_empty_string [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/main.rs:3873:13 [INFO] [stderr] | [INFO] [stderr] 3873 | value: value, [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `value` [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/main.rs:3571:21 [INFO] [stderr] | [INFO] [stderr] 3571 | name: name, [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `name` [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/main.rs:3572:21 [INFO] [stderr] | [INFO] [stderr] 3572 | resource_type: resource_type, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `resource_type` [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/main.rs:3721:21 [INFO] [stderr] | [INFO] [stderr] 3721 | recipe: recipe, [INFO] [stderr] | ^^^^^^^^^^^^^^ help: replace it with: `recipe` [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/main.rs:3725:21 [INFO] [stderr] | [INFO] [stderr] 3725 | modules: modules, [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: replace it with: `modules` [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: using `println!("")` [INFO] [stderr] --> src/main.rs:3825:9 [INFO] [stderr] | [INFO] [stderr] 3825 | println!(""); [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `println!()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::println_empty_string)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#println_empty_string [INFO] [stderr] [INFO] [stderr] warning: using `println!("")` [INFO] [stderr] --> src/main.rs:3833:13 [INFO] [stderr] | [INFO] [stderr] 3833 | println!(""); [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `println!()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#println_empty_string [INFO] [stderr] [INFO] [stderr] warning: using `println!("")` [INFO] [stderr] --> src/main.rs:3859:9 [INFO] [stderr] | [INFO] [stderr] 3859 | println!(""); [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `println!()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#println_empty_string [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/main.rs:3873:13 [INFO] [stderr] | [INFO] [stderr] 3873 | value: value, [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `value` [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/main.rs:3872:9 [INFO] [stderr] | [INFO] [stderr] 3872 | / return Data { [INFO] [stderr] 3873 | | value: value, [INFO] [stderr] 3874 | | children: Vec::new(), [INFO] [stderr] 3875 | | } [INFO] [stderr] | |_________^ [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] help: remove `return` as shown [INFO] [stderr] | [INFO] [stderr] 3872 | Data { [INFO] [stderr] 3873 | value: value, [INFO] [stderr] 3874 | children: Vec::new(), [INFO] [stderr] 3875 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/main.rs:3916:5 [INFO] [stderr] | [INFO] [stderr] 3916 | return cleaned_contents; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `cleaned_contents` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: this `else { if .. }` block can be collapsed [INFO] [stderr] --> src/main.rs:3906:16 [INFO] [stderr] | [INFO] [stderr] 3906 | } else { [INFO] [stderr] | ________________^ [INFO] [stderr] 3907 | | if !in_comment { [INFO] [stderr] 3908 | | cleaned_contents.extend(spaces.iter()); [INFO] [stderr] 3909 | | cleaned_contents.push(b); [INFO] [stderr] ... | [INFO] [stderr] 3912 | | } [INFO] [stderr] 3913 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/main.rs:3872:9 [INFO] [stderr] | [INFO] [stderr] 3872 | / return Data { [INFO] [stderr] 3873 | | value: value, [INFO] [stderr] 3874 | | children: Vec::new(), [INFO] [stderr] 3875 | | } [INFO] [stderr] | |_________^ [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] help: remove `return` as shown [INFO] [stderr] | [INFO] [stderr] 3872 | Data { [INFO] [stderr] 3873 | value: value, [INFO] [stderr] 3874 | children: Vec::new(), [INFO] [stderr] 3875 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/main.rs:3916:5 [INFO] [stderr] | [INFO] [stderr] 3916 | return cleaned_contents; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `cleaned_contents` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: this `else { if .. }` block can be collapsed [INFO] [stderr] --> src/main.rs:3906:16 [INFO] [stderr] | [INFO] [stderr] 3906 | } else { [INFO] [stderr] | ________________^ [INFO] [stderr] 3907 | | if !in_comment { [INFO] [stderr] 3908 | | cleaned_contents.extend(spaces.iter()); [INFO] [stderr] 3909 | | cleaned_contents.push(b); [INFO] [stderr] ... | [INFO] [stderr] 3912 | | } [INFO] [stderr] 3913 | | } [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] 3906 | } else if !in_comment { [INFO] [stderr] 3907 | cleaned_contents.extend(spaces.iter()); [INFO] [stderr] 3908 | cleaned_contents.push(b); [INFO] [stderr] 3909 | line_filled = true; [INFO] [stderr] 3910 | spaces.clear(); [INFO] [stderr] 3911 | } [INFO] [stderr] | [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] 3906 | } else if !in_comment { [INFO] [stderr] 3907 | cleaned_contents.extend(spaces.iter()); [INFO] [stderr] 3908 | cleaned_contents.push(b); [INFO] [stderr] 3909 | line_filled = true; [INFO] [stderr] 3910 | spaces.clear(); [INFO] [stderr] 3911 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/main.rs:3361:21 [INFO] [stderr] | [INFO] [stderr] 3361 | fn display_name(&self) -> &'static str { [INFO] [stderr] | ^^^^^ help: consider passing by value instead: `self` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::trivially_copy_pass_by_ref)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: `ref` on an entire `let` pattern is discouraged, take a reference with `&` instead [INFO] [stderr] --> src/main.rs:3457:13 [INFO] [stderr] | [INFO] [stderr] 3457 | for ref proto in PROTO_BUILDINGS.iter() { [INFO] [stderr] | ^^^^^^^^^ ---------------------- help: try: `let proto = &PROTO_BUILDINGS.iter();` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::toplevel_ref_arg)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#toplevel_ref_arg [INFO] [stderr] [INFO] [stderr] warning: `ref` on an entire `let` pattern is discouraged, take a reference with `&` instead [INFO] [stderr] --> src/main.rs:3485:13 [INFO] [stderr] | [INFO] [stderr] 3485 | for ref proto in PROTO_RECIPES.iter() { [INFO] [stderr] | ^^^^^^^^^ -------------------- help: try: `let proto = &PROTO_RECIPES.iter();` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#toplevel_ref_arg [INFO] [stderr] [INFO] [stderr] warning: use of `ok_or` followed by a function call [INFO] [stderr] --> src/main.rs:3626:22 [INFO] [stderr] | [INFO] [stderr] 3626 | .ok_or(InputError::new(&format!("Unknown building: {}", datum.value)))?; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `ok_or_else(|| InputError::new(&format!("Unknown building: {}", datum.value)))` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::or_fun_call)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] [INFO] [stderr] warning: use of `ok_or` followed by a function call [INFO] [stderr] --> src/main.rs:3632:22 [INFO] [stderr] | [INFO] [stderr] 3632 | .ok_or(InputError::new(&format!("Unknown recipe: {}", recipe_name)))?; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `ok_or_else(|| InputError::new(&format!("Unknown recipe: {}", recipe_name)))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/main.rs:3686:32 [INFO] [stderr] | [INFO] [stderr] 3686 | if module_datum.children.len() == 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `module_datum.children.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: use of `ok_or` followed by a function call [INFO] [stderr] --> src/main.rs:3792:69 [INFO] [stderr] | [INFO] [stderr] 3792 | let first_output_name = self.output_lines.iter().nth(0).ok_or(AnalyzeError::new("No outputs to normalize!"))?; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `ok_or_else(|| AnalyzeError::new("No outputs to normalize!"))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] [INFO] [stderr] warning: use of `ok_or` followed by a function call [INFO] [stderr] --> src/main.rs:3794:18 [INFO] [stderr] | [INFO] [stderr] 3794 | .ok_or(AnalyzeError::new("No line for first output"))?; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `ok_or_else(|| AnalyzeError::new("No line for first output"))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] [INFO] [stderr] warning: use of `ok_or` followed by a function call [INFO] [stderr] --> src/main.rs:3804:22 [INFO] [stderr] | [INFO] [stderr] 3804 | .ok_or(AnalyzeError::new("No such target line"))?; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `ok_or_else(|| AnalyzeError::new("No such target line"))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] [INFO] [stderr] warning: called `.get().unwrap()` on a HashMap. Using `[]` is more clear and more concise [INFO] [stderr] --> src/main.rs:3822:30 [INFO] [stderr] | [INFO] [stderr] 3822 | let input_line = self.resource_lines.get(input_name).unwrap(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `&self.resource_lines[input_name]` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::get_unwrap)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_unwrap [INFO] [stderr] [INFO] [stderr] warning: called `.get().unwrap()` on a HashMap. Using `[]` is more clear and more concise [INFO] [stderr] --> src/main.rs:3828:31 [INFO] [stderr] | [INFO] [stderr] 3828 | let output_line = self.resource_lines.get(output_name).unwrap(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `&self.resource_lines[output_name]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_unwrap [INFO] [stderr] [INFO] [stderr] warning: the function has a cyclomatic complexity of 42 [INFO] [stderr] --> src/main.rs:3936:1 [INFO] [stderr] | [INFO] [stderr] 3936 | / fn inline_node<'a, 'b>(input: &'a [u8], indentation: &'b [u8]) -> IResult<&'a [u8], Data<'a>> { [INFO] [stderr] 3937 | | do_parse!(input, [INFO] [stderr] 3938 | | call!(match_indentation, indentation) >> [INFO] [stderr] 3939 | | value: map_res!(is_not!(":\n"), std::str::from_utf8) >> [INFO] [stderr] ... | [INFO] [stderr] 3955 | | ) [INFO] [stderr] 3956 | | } [INFO] [stderr] | |_^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::cyclomatic_complexity)] on by default [INFO] [stderr] = help: you could split it up into multiple smaller functions [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cyclomatic_complexity [INFO] [stderr] [INFO] [stderr] warning: the function has a cyclomatic complexity of 26 [INFO] [stderr] --> src/main.rs:3958:1 [INFO] [stderr] | [INFO] [stderr] 3958 | / fn nested_node<'a, 'b>(input: &'a [u8], indentation: &'b [u8]) -> IResult<&'a [u8], Data<'a>> { [INFO] [stderr] 3959 | | do_parse!(input, [INFO] [stderr] 3960 | | call!(match_indentation, indentation) >> [INFO] [stderr] 3961 | | value: map_res!(is_not!(":\n"), std::str::from_utf8) >> [INFO] [stderr] ... | [INFO] [stderr] 3972 | | ) [INFO] [stderr] 3973 | | } [INFO] [stderr] | |_^ [INFO] [stderr] | [INFO] [stderr] = help: you could split it up into multiple smaller functions [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cyclomatic_complexity [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/main.rs:3361:21 [INFO] [stderr] | [INFO] [stderr] 3361 | fn display_name(&self) -> &'static str { [INFO] [stderr] | ^^^^^ help: consider passing by value instead: `self` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::trivially_copy_pass_by_ref)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: `ref` on an entire `let` pattern is discouraged, take a reference with `&` instead [INFO] [stderr] --> src/main.rs:3457:13 [INFO] [stderr] | [INFO] [stderr] 3457 | for ref proto in PROTO_BUILDINGS.iter() { [INFO] [stderr] | ^^^^^^^^^ ---------------------- help: try: `let proto = &PROTO_BUILDINGS.iter();` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::toplevel_ref_arg)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#toplevel_ref_arg [INFO] [stderr] [INFO] [stderr] warning: `ref` on an entire `let` pattern is discouraged, take a reference with `&` instead [INFO] [stderr] --> src/main.rs:3485:13 [INFO] [stderr] | [INFO] [stderr] 3485 | for ref proto in PROTO_RECIPES.iter() { [INFO] [stderr] | ^^^^^^^^^ -------------------- help: try: `let proto = &PROTO_RECIPES.iter();` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#toplevel_ref_arg [INFO] [stderr] [INFO] [stderr] warning: use of `ok_or` followed by a function call [INFO] [stderr] --> src/main.rs:3626:22 [INFO] [stderr] | [INFO] [stderr] 3626 | .ok_or(InputError::new(&format!("Unknown building: {}", datum.value)))?; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `ok_or_else(|| InputError::new(&format!("Unknown building: {}", datum.value)))` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::or_fun_call)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] [INFO] [stderr] warning: use of `ok_or` followed by a function call [INFO] [stderr] --> src/main.rs:3632:22 [INFO] [stderr] | [INFO] [stderr] 3632 | .ok_or(InputError::new(&format!("Unknown recipe: {}", recipe_name)))?; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `ok_or_else(|| InputError::new(&format!("Unknown recipe: {}", recipe_name)))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/main.rs:3686:32 [INFO] [stderr] | [INFO] [stderr] 3686 | if module_datum.children.len() == 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `module_datum.children.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: use of `ok_or` followed by a function call [INFO] [stderr] --> src/main.rs:3792:69 [INFO] [stderr] | [INFO] [stderr] 3792 | let first_output_name = self.output_lines.iter().nth(0).ok_or(AnalyzeError::new("No outputs to normalize!"))?; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `ok_or_else(|| AnalyzeError::new("No outputs to normalize!"))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] [INFO] [stderr] warning: use of `ok_or` followed by a function call [INFO] [stderr] --> src/main.rs:3794:18 [INFO] [stderr] | [INFO] [stderr] 3794 | .ok_or(AnalyzeError::new("No line for first output"))?; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `ok_or_else(|| AnalyzeError::new("No line for first output"))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] [INFO] [stderr] warning: use of `ok_or` followed by a function call [INFO] [stderr] --> src/main.rs:3804:22 [INFO] [stderr] | [INFO] [stderr] 3804 | .ok_or(AnalyzeError::new("No such target line"))?; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `ok_or_else(|| AnalyzeError::new("No such target line"))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] [INFO] [stderr] warning: called `.get().unwrap()` on a HashMap. Using `[]` is more clear and more concise [INFO] [stderr] --> src/main.rs:3822:30 [INFO] [stderr] | [INFO] [stderr] 3822 | let input_line = self.resource_lines.get(input_name).unwrap(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `&self.resource_lines[input_name]` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::get_unwrap)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_unwrap [INFO] [stderr] [INFO] [stderr] warning: called `.get().unwrap()` on a HashMap. Using `[]` is more clear and more concise [INFO] [stderr] --> src/main.rs:3828:31 [INFO] [stderr] | [INFO] [stderr] 3828 | let output_line = self.resource_lines.get(output_name).unwrap(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `&self.resource_lines[output_name]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_unwrap [INFO] [stderr] [INFO] [stderr] warning: the function has a cyclomatic complexity of 42 [INFO] [stderr] --> src/main.rs:3936:1 [INFO] [stderr] | [INFO] [stderr] 3936 | / fn inline_node<'a, 'b>(input: &'a [u8], indentation: &'b [u8]) -> IResult<&'a [u8], Data<'a>> { [INFO] [stderr] 3937 | | do_parse!(input, [INFO] [stderr] 3938 | | call!(match_indentation, indentation) >> [INFO] [stderr] 3939 | | value: map_res!(is_not!(":\n"), std::str::from_utf8) >> [INFO] [stderr] ... | [INFO] [stderr] 3955 | | ) [INFO] [stderr] 3956 | | } [INFO] [stderr] | |_^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::cyclomatic_complexity)] on by default [INFO] [stderr] = help: you could split it up into multiple smaller functions [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cyclomatic_complexity [INFO] [stderr] [INFO] [stderr] warning: the function has a cyclomatic complexity of 26 [INFO] [stderr] --> src/main.rs:3958:1 [INFO] [stderr] | [INFO] [stderr] 3958 | / fn nested_node<'a, 'b>(input: &'a [u8], indentation: &'b [u8]) -> IResult<&'a [u8], Data<'a>> { [INFO] [stderr] 3959 | | do_parse!(input, [INFO] [stderr] 3960 | | call!(match_indentation, indentation) >> [INFO] [stderr] 3961 | | value: map_res!(is_not!(":\n"), std::str::from_utf8) >> [INFO] [stderr] ... | [INFO] [stderr] 3972 | | ) [INFO] [stderr] 3973 | | } [INFO] [stderr] | |_^ [INFO] [stderr] | [INFO] [stderr] = help: you could split it up into multiple smaller functions [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cyclomatic_complexity [INFO] [stderr] [INFO] [stderr] Finished dev [unoptimized + debuginfo] target(s) in 7.95s [INFO] running `"docker" "inspect" "679a395f8f5d7082000b4621b3e8786ebf26e6bca0c5599355d3fa680408993b"` [INFO] running `"docker" "rm" "-f" "679a395f8f5d7082000b4621b3e8786ebf26e6bca0c5599355d3fa680408993b"` [INFO] [stdout] 679a395f8f5d7082000b4621b3e8786ebf26e6bca0c5599355d3fa680408993b