[INFO] updating cached repository Dineshs91/x-ray [INFO] running `"git" "fetch" "--all"` [INFO] [stdout] Fetching origin [INFO] [stderr] From git://github.com/Dineshs91/x-ray [INFO] [stderr] * branch HEAD -> FETCH_HEAD [INFO] running `"git" "clone" "work/cache/sources/gh/Dineshs91/x-ray" "work/ex/clippy-test-run/sources/stable/gh/Dineshs91/x-ray"` [INFO] [stderr] Cloning into 'work/ex/clippy-test-run/sources/stable/gh/Dineshs91/x-ray'... [INFO] [stderr] done. [INFO] running `"git" "clone" "work/cache/sources/gh/Dineshs91/x-ray" "work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/Dineshs91/x-ray"` [INFO] [stderr] Cloning into 'work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/Dineshs91/x-ray'... [INFO] [stderr] done. [INFO] running `"git" "rev-parse" "HEAD"` [INFO] [stdout] d1739dfb88d4c4b3b3e1afb397f83f3312472079 [INFO] sha for GitHub repo Dineshs91/x-ray: d1739dfb88d4c4b3b3e1afb397f83f3312472079 [INFO] validating manifest of Dineshs91/x-ray 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 Dineshs91/x-ray 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 Dineshs91/x-ray [INFO] finished frobbing Dineshs91/x-ray [INFO] frobbed toml for Dineshs91/x-ray written to work/ex/clippy-test-run/sources/stable/gh/Dineshs91/x-ray/Cargo.toml [INFO] started frobbing Dineshs91/x-ray [INFO] finished frobbing Dineshs91/x-ray [INFO] frobbed toml for Dineshs91/x-ray written to work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/Dineshs91/x-ray/Cargo.toml [INFO] crate Dineshs91/x-ray 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 Dineshs91/x-ray against stable for clippy-test-run [INFO] running `"docker" "create" "-v" "/mnt/big/crater/work/local/target-dirs/clippy-test-run/worker-5/stable:/opt/crater/target:rw,Z" "-v" "/mnt/big/crater/work/ex/clippy-test-run/sources/stable/gh/Dineshs91/x-ray:/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] b78fc4cb41d96b11f9153f9b1f4358072a292173b6bb72652a0a087aebf50792 [INFO] running `"docker" "start" "-a" "b78fc4cb41d96b11f9153f9b1f4358072a292173b6bb72652a0a087aebf50792"` [INFO] [stderr] Checking nom v2.2.1 [INFO] [stderr] Checking memchr v0.1.11 [INFO] [stderr] Checking clap v2.19.3 [INFO] [stderr] Checking thread-id v2.0.0 [INFO] [stderr] Checking thread_local v0.2.7 [INFO] [stderr] Checking aho-corasick v0.5.3 [INFO] [stderr] Checking regex v0.1.80 [INFO] [stderr] Checking rustache v0.1.0 [INFO] [stderr] Checking x-ray v0.1.0 (/opt/crater/workdir) [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/util.rs:54:9 [INFO] [stderr] | [INFO] [stderr] 54 | root: root [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `root` [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/util.rs:63:9 [INFO] [stderr] | [INFO] [stderr] 63 | root: root [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `root` [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/cli/mod.rs:121:9 [INFO] [stderr] | [INFO] [stderr] 121 | skip_validations: skip_validations, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `skip_validations` [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/cli/mod.rs:123:9 [INFO] [stderr] | [INFO] [stderr] 123 | conf_type: conf_type, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: replace it with: `conf_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/cli/mod.rs:124:9 [INFO] [stderr] | [INFO] [stderr] 124 | parse: parse, [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `parse` [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/cli/mod.rs:125:9 [INFO] [stderr] | [INFO] [stderr] 125 | parse_dir: parse_dir, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: replace it with: `parse_dir` [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/cli/mod.rs:126:9 [INFO] [stderr] | [INFO] [stderr] 126 | gen_dir: gen_dir [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: replace it with: `gen_dir` [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/template.rs:265:9 [INFO] [stderr] | [INFO] [stderr] 265 | methods: methods [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: replace it with: `methods` [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/parse.rs:83:21 [INFO] [stderr] | [INFO] [stderr] 83 | name: name, [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `name` [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/parse.rs:90:21 [INFO] [stderr] | [INFO] [stderr] 90 | name: name, [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `name` [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/parse.rs:92:21 [INFO] [stderr] | [INFO] [stderr] 92 | parents: parents, [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: replace it with: `parents` [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/util.rs:54:9 [INFO] [stderr] | [INFO] [stderr] 54 | root: root [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `root` [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/util.rs:63:9 [INFO] [stderr] | [INFO] [stderr] 63 | root: root [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `root` [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/cli/mod.rs:121:9 [INFO] [stderr] | [INFO] [stderr] 121 | skip_validations: skip_validations, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `skip_validations` [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/cli/mod.rs:123:9 [INFO] [stderr] | [INFO] [stderr] 123 | conf_type: conf_type, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: replace it with: `conf_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/cli/mod.rs:124:9 [INFO] [stderr] | [INFO] [stderr] 124 | parse: parse, [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `parse` [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/cli/mod.rs:125:9 [INFO] [stderr] | [INFO] [stderr] 125 | parse_dir: parse_dir, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: replace it with: `parse_dir` [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/cli/mod.rs:126:9 [INFO] [stderr] | [INFO] [stderr] 126 | gen_dir: gen_dir [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: replace it with: `gen_dir` [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/template.rs:265:9 [INFO] [stderr] | [INFO] [stderr] 265 | methods: methods [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: replace it with: `methods` [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/parse.rs:83:21 [INFO] [stderr] | [INFO] [stderr] 83 | name: name, [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `name` [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/parse.rs:90:21 [INFO] [stderr] | [INFO] [stderr] 90 | name: name, [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `name` [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/parse.rs:92:21 [INFO] [stderr] | [INFO] [stderr] 92 | parents: parents, [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: replace it with: `parents` [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: Constants have by default a `'static` lifetime [INFO] [stderr] --> src/util.rs:11:23 [INFO] [stderr] | [INFO] [stderr] 11 | const FILE_EXTENSION:&'static str = ".py"; [INFO] [stderr] | -^^^^^^^---- help: consider removing `'static`: `&str` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::const_static_lifetime)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#const_static_lifetime [INFO] [stderr] [INFO] [stderr] warning: Constants have by default a `'static` lifetime [INFO] [stderr] --> src/util.rs:12:18 [INFO] [stderr] | [INFO] [stderr] 12 | const INIT_FILE:&'static str = "__init__.py"; [INFO] [stderr] | -^^^^^^^---- help: consider removing `'static`: `&str` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#const_static_lifetime [INFO] [stderr] [INFO] [stderr] warning: Constants have by default a `'static` lifetime [INFO] [stderr] --> src/cli/mod.rs:5:15 [INFO] [stderr] | [INFO] [stderr] 5 | const ABOUT: &'static str = " [INFO] [stderr] | -^^^^^^^---- help: consider removing `'static`: `&str` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#const_static_lifetime [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/cli/mod.rs:129:5 [INFO] [stderr] | [INFO] [stderr] 129 | return cli_conf; [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: remove `return` as shown: `cli_conf` [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/parse.rs:109:5 [INFO] [stderr] | [INFO] [stderr] 109 | module_res [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/parse.rs:102:22 [INFO] [stderr] | [INFO] [stderr] 102 | let module_res = Module { [INFO] [stderr] | ______________________^ [INFO] [stderr] 103 | | name: file_name.to_string(), [INFO] [stderr] 104 | | description: module_description, [INFO] [stderr] 105 | | functions: func_vec, [INFO] [stderr] 106 | | classes: class_vec [INFO] [stderr] 107 | | }; [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/parse.rs:145:5 [INFO] [stderr] | [INFO] [stderr] 145 | root_res [INFO] [stderr] | ^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] note: this expression can be directly returned [INFO] [stderr] --> src/parse.rs:139:20 [INFO] [stderr] | [INFO] [stderr] 139 | let root_res = Root { [INFO] [stderr] | ____________________^ [INFO] [stderr] 140 | | name: root_name, [INFO] [stderr] 141 | | packages: root_packages, [INFO] [stderr] 142 | | modules: root_modules [INFO] [stderr] 143 | | }; [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: Constants have by default a `'static` lifetime [INFO] [stderr] --> src/util.rs:11:23 [INFO] [stderr] | [INFO] [stderr] 11 | const FILE_EXTENSION:&'static str = ".py"; [INFO] [stderr] | -^^^^^^^---- help: consider removing `'static`: `&str` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::const_static_lifetime)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#const_static_lifetime [INFO] [stderr] [INFO] [stderr] warning: Constants have by default a `'static` lifetime [INFO] [stderr] --> src/util.rs:12:18 [INFO] [stderr] | [INFO] [stderr] 12 | const INIT_FILE:&'static str = "__init__.py"; [INFO] [stderr] | -^^^^^^^---- help: consider removing `'static`: `&str` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#const_static_lifetime [INFO] [stderr] [INFO] [stderr] warning: Constants have by default a `'static` lifetime [INFO] [stderr] --> src/cli/mod.rs:5:15 [INFO] [stderr] | [INFO] [stderr] 5 | const ABOUT: &'static str = " [INFO] [stderr] | -^^^^^^^---- help: consider removing `'static`: `&str` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#const_static_lifetime [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/cli/mod.rs:129:5 [INFO] [stderr] | [INFO] [stderr] 129 | return cli_conf; [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: remove `return` as shown: `cli_conf` [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/parse.rs:109:5 [INFO] [stderr] | [INFO] [stderr] 109 | module_res [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/parse.rs:102:22 [INFO] [stderr] | [INFO] [stderr] 102 | let module_res = Module { [INFO] [stderr] | ______________________^ [INFO] [stderr] 103 | | name: file_name.to_string(), [INFO] [stderr] 104 | | description: module_description, [INFO] [stderr] 105 | | functions: func_vec, [INFO] [stderr] 106 | | classes: class_vec [INFO] [stderr] 107 | | }; [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/parse.rs:145:5 [INFO] [stderr] | [INFO] [stderr] 145 | root_res [INFO] [stderr] | ^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] note: this expression can be directly returned [INFO] [stderr] --> src/parse.rs:139:20 [INFO] [stderr] | [INFO] [stderr] 139 | let root_res = Root { [INFO] [stderr] | ____________________^ [INFO] [stderr] 140 | | name: root_name, [INFO] [stderr] 141 | | packages: root_packages, [INFO] [stderr] 142 | | modules: root_modules [INFO] [stderr] 143 | | }; [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: redundant pattern matching, consider using `is_some()` [INFO] [stderr] --> src/cli/mod.rs:103:17 [INFO] [stderr] | [INFO] [stderr] 103 | let parse = match matches.subcommand_matches("parse") { [INFO] [stderr] | _________________^ [INFO] [stderr] 104 | | Some(_) => true, [INFO] [stderr] 105 | | None => false, [INFO] [stderr] 106 | | }; [INFO] [stderr] | |_____^ help: try this: `matches.subcommand_matches("parse").is_some()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::redundant_pattern_matching)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_pattern_matching [INFO] [stderr] [INFO] [stderr] warning: the variable `i` is used as a loop counter. Consider using `for (i, item) in function.parameters.enumerate()` or similar iterators [INFO] [stderr] --> src/template.rs:48:22 [INFO] [stderr] | [INFO] [stderr] 48 | for parameter in function.parameters { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::explicit_counter_loop)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_counter_loop [INFO] [stderr] [INFO] [stderr] warning: the variable `i` is used as a loop counter. Consider using `for (i, item) in method.parameters.enumerate()` or similar iterators [INFO] [stderr] --> src/template.rs:83:22 [INFO] [stderr] | [INFO] [stderr] 83 | for parameter in method.parameters { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_counter_loop [INFO] [stderr] [INFO] [stderr] warning: `if _ { .. } else { .. }` is an expression [INFO] [stderr] --> src/template.rs:126:5 [INFO] [stderr] | [INFO] [stderr] 126 | / let mut class_inheritance_bool = false; [INFO] [stderr] 127 | | [INFO] [stderr] 128 | | if class.parents.len() > 0 { [INFO] [stderr] 129 | | class_inheritance_bool = true; [INFO] [stderr] 130 | | } [INFO] [stderr] | |_____^ help: it is more idiomatic to write: `let class_inheritance_bool = if class.parents.len() > 0 { true } else { false };` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::useless_let_if_seq)] on by default [INFO] [stderr] = note: you might not need `mut` at all [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_let_if_seq [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/template.rs:128:8 [INFO] [stderr] | [INFO] [stderr] 128 | if class.parents.len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!class.parents.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: equality checks against true are unnecessary [INFO] [stderr] --> src/parser/util.rs:88:12 [INFO] [stderr] | [INFO] [stderr] 88 | if start == true && item_char == ' ' { [INFO] [stderr] | ^^^^^^^^^^^^^ help: try simplifying it as shown: `start` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::bool_comparison)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#bool_comparison [INFO] [stderr] [INFO] [stderr] warning: equality checks against true are unnecessary [INFO] [stderr] --> src/parser/util.rs:92:12 [INFO] [stderr] | [INFO] [stderr] 92 | if start == true && !(item_char == '\n' || item_char == ' ') { [INFO] [stderr] | ^^^^^^^^^^^^^ help: try simplifying it as shown: `start` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#bool_comparison [INFO] [stderr] [INFO] [stderr] warning: equality checks against false can be replaced by a negation [INFO] [stderr] --> src/parser/util.rs:94:19 [INFO] [stderr] | [INFO] [stderr] 94 | } else if start == false && (item_char != '\n') { [INFO] [stderr] | ^^^^^^^^^^^^^^ help: try simplifying it as shown: `!start` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#bool_comparison [INFO] [stderr] [INFO] [stderr] warning: equality checks against false can be replaced by a negation [INFO] [stderr] --> src/parser/mod.rs:90:24 [INFO] [stderr] | [INFO] [stderr] 90 | if init == false && ch == '.' { [INFO] [stderr] | ^^^^^^^^^^^^^ help: try simplifying it as shown: `!init` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#bool_comparison [INFO] [stderr] [INFO] [stderr] warning: single-character string constant used as pattern [INFO] [stderr] --> src/parser/mod.rs:104:39 [INFO] [stderr] | [INFO] [stderr] 104 | if module.starts_with(".") { [INFO] [stderr] | ^^^ help: try using a char instead: `'.'` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::single_char_pattern)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_char_pattern [INFO] [stderr] [INFO] [stderr] warning: an inclusive range would be more readable [INFO] [stderr] --> src/parser/mac.rs:138:29 [INFO] [stderr] | [INFO] [stderr] 138 | if $i.slice(ind..ind + 1)[0] == 10 { [INFO] [stderr] | ^^^^^^^^^^^^ help: use: `ind..=ind` [INFO] [stderr] | [INFO] [stderr] ::: src/parser/mod.rs:168:1 [INFO] [stderr] | [INFO] [stderr] 168 | / named!(item_class, do_parse!( [INFO] [stderr] 169 | | many0!(nom::newline) >> [INFO] [stderr] 170 | | start_len: many0!(tag!(" ")) >> [INFO] [stderr] 171 | | tag!("class") >> [INFO] [stderr] ... | [INFO] [stderr] 219 | | }) [INFO] [stderr] 220 | | )); [INFO] [stderr] | |___- in this macro invocation [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::range_plus_one)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#range_plus_one [INFO] [stderr] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [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/parser/mod.rs:204:21 [INFO] [stderr] | [INFO] [stderr] 204 | / match item.node { [INFO] [stderr] 205 | | ItemKind::Function {name, description, parameters} => { [INFO] [stderr] 206 | | result.push(Function { [INFO] [stderr] 207 | | name: name, [INFO] [stderr] ... | [INFO] [stderr] 212 | | _ => {} [INFO] [stderr] 213 | | } [INFO] [stderr] | |_____________________^ [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] help: try this [INFO] [stderr] | [INFO] [stderr] 204 | if let ItemKind::Function {name, description, parameters} = item.node { [INFO] [stderr] 205 | result.push(Function { [INFO] [stderr] 206 | name: name, [INFO] [stderr] 207 | description: description, [INFO] [stderr] 208 | parameters: parameters [INFO] [stderr] 209 | }); [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: redundant pattern matching, consider using `is_some()` [INFO] [stderr] --> src/cli/mod.rs:103:17 [INFO] [stderr] | [INFO] [stderr] 103 | let parse = match matches.subcommand_matches("parse") { [INFO] [stderr] | _________________^ [INFO] [stderr] 104 | | Some(_) => true, [INFO] [stderr] 105 | | None => false, [INFO] [stderr] 106 | | }; [INFO] [stderr] | |_____^ help: try this: `matches.subcommand_matches("parse").is_some()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::redundant_pattern_matching)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_pattern_matching [INFO] [stderr] [INFO] [stderr] warning: the variable `i` is used as a loop counter. Consider using `for (i, item) in function.parameters.enumerate()` or similar iterators [INFO] [stderr] --> src/template.rs:48:22 [INFO] [stderr] | [INFO] [stderr] 48 | for parameter in function.parameters { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::explicit_counter_loop)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_counter_loop [INFO] [stderr] [INFO] [stderr] warning: the variable `i` is used as a loop counter. Consider using `for (i, item) in method.parameters.enumerate()` or similar iterators [INFO] [stderr] --> src/template.rs:83:22 [INFO] [stderr] | [INFO] [stderr] 83 | for parameter in method.parameters { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_counter_loop [INFO] [stderr] [INFO] [stderr] warning: `if _ { .. } else { .. }` is an expression [INFO] [stderr] --> src/template.rs:126:5 [INFO] [stderr] | [INFO] [stderr] 126 | / let mut class_inheritance_bool = false; [INFO] [stderr] 127 | | [INFO] [stderr] 128 | | if class.parents.len() > 0 { [INFO] [stderr] 129 | | class_inheritance_bool = true; [INFO] [stderr] 130 | | } [INFO] [stderr] | |_____^ help: it is more idiomatic to write: `let class_inheritance_bool = if class.parents.len() > 0 { true } else { false };` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::useless_let_if_seq)] on by default [INFO] [stderr] = note: you might not need `mut` at all [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_let_if_seq [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/template.rs:128:8 [INFO] [stderr] | [INFO] [stderr] 128 | if class.parents.len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!class.parents.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: an inclusive range would be more readable [INFO] [stderr] --> src/parser/mac.rs:19:78 [INFO] [stderr] | [INFO] [stderr] 19 | res = nom::IResult::Done(input.slice(idx + 1..), input.slice(0..idx + 1)); [INFO] [stderr] | ^^^^^^^^^^ help: use: `0..=idx` [INFO] [stderr] | [INFO] [stderr] ::: src/parser/mod.rs:222:1 [INFO] [stderr] | [INFO] [stderr] 222 | / named!(item_fn, do_parse!( [INFO] [stderr] 223 | | many0!(nom::newline) >> [INFO] [stderr] 224 | | start_len: many0!(tag!(" ")) >> [INFO] [stderr] 225 | | decorators: many0!(decorator) >> [INFO] [stderr] ... | [INFO] [stderr] 244 | | }) [INFO] [stderr] 245 | | )); [INFO] [stderr] | |___- in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#range_plus_one [INFO] [stderr] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] warning: equality checks against false can be replaced by a negation [INFO] [stderr] --> src/parse.rs:45:12 [INFO] [stderr] | [INFO] [stderr] 45 | if is_dir == false { [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: try simplifying it as shown: `!is_dir` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#bool_comparison [INFO] [stderr] [INFO] [stderr] warning: single-character string constant used as pattern [INFO] [stderr] --> src/parse.rs:48:45 [INFO] [stderr] | [INFO] [stderr] 48 | file_name = file_name.split(".").collect::>()[0]; [INFO] [stderr] | ^^^ help: try using a char instead: `'.'` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_char_pattern [INFO] [stderr] [INFO] [stderr] warning: equality checks against true are unnecessary [INFO] [stderr] --> src/parse.rs:53:16 [INFO] [stderr] | [INFO] [stderr] 53 | if is_py_package == true { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: try simplifying it as shown: `is_py_package` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#bool_comparison [INFO] [stderr] [INFO] [stderr] error: using `clone` on a double-reference; this will copy the reference instead of cloning the inner type [INFO] [stderr] --> src/parse.rs:113:21 [INFO] [stderr] | [INFO] [stderr] 113 | let root_name = parse_dir.clone().to_string(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[deny(clippy::clone_double_ref)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_double_ref [INFO] [stderr] help: try dereferencing it [INFO] [stderr] | [INFO] [stderr] 113 | let root_name = &(*parse_dir).clone().to_string(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] help: or try being explicit about what type to clone [INFO] [stderr] | [INFO] [stderr] 113 | let root_name = &str::clone(parse_dir).to_string(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: equality checks against false can be replaced by a negation [INFO] [stderr] --> src/parse.rs:124:12 [INFO] [stderr] | [INFO] [stderr] 124 | if is_dir == false { [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: try simplifying it as shown: `!is_dir` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#bool_comparison [INFO] [stderr] [INFO] [stderr] warning: single-character string constant used as pattern [INFO] [stderr] --> src/parse.rs:128:45 [INFO] [stderr] | [INFO] [stderr] 128 | file_name = file_name.split(".").collect::>()[0]; [INFO] [stderr] | ^^^ help: try using a char instead: `'.'` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_char_pattern [INFO] [stderr] [INFO] [stderr] warning: equality checks against true are unnecessary [INFO] [stderr] --> src/parse.rs:133:16 [INFO] [stderr] | [INFO] [stderr] 133 | if is_py_package == true { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: try simplifying it as shown: `is_py_package` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#bool_comparison [INFO] [stderr] [INFO] [stderr] warning: `ref` on an entire `let` pattern is discouraged, take a reference with `&` instead [INFO] [stderr] --> src/gen.rs:14:13 [INFO] [stderr] | [INFO] [stderr] 14 | let ref modules: Vec = package.modules; [INFO] [stderr] | ----^^^^^^^^^^^-------------------------------- help: try: `let modules: &Vec = &package.modules;` [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/gen.rs:17:17 [INFO] [stderr] | [INFO] [stderr] 17 | let ref functions = module.functions; [INFO] [stderr] | ----^^^^^^^^^^^^^-------------------- help: try: `let functions = &module.functions;` [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: `ref` on an entire `let` pattern is discouraged, take a reference with `&` instead [INFO] [stderr] --> src/gen.rs:18:17 [INFO] [stderr] | [INFO] [stderr] 18 | let ref classes = module.classes; [INFO] [stderr] | ----^^^^^^^^^^^------------------ help: try: `let classes = &module.classes;` [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: `ref` on an entire `let` pattern is discouraged, take a reference with `&` instead [INFO] [stderr] --> src/gen.rs:55:13 [INFO] [stderr] | [INFO] [stderr] 55 | let ref filename = module.name; [INFO] [stderr] | ----^^^^^^^^^^^^--------------- help: try: `let filename = &module.name;` [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: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/gen.rs:60:9 [INFO] [stderr] | [INFO] [stderr] 60 | / match module.description { [INFO] [stderr] 61 | | Some(desc) => { [INFO] [stderr] 62 | | content += &module_desc_template(desc); [INFO] [stderr] 63 | | write_to_file(&path, &filename, &content); [INFO] [stderr] 64 | | }, [INFO] [stderr] 65 | | None => {} [INFO] [stderr] 66 | | }; [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] 60 | if let Some(desc) = module.description { [INFO] [stderr] 61 | content += &module_desc_template(desc); [INFO] [stderr] 62 | write_to_file(&path, &filename, &content); [INFO] [stderr] 63 | }; [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] error: aborting due to previous error [INFO] [stderr] [INFO] [stderr] error: Could not compile `x-ray`. [INFO] [stderr] warning: build failed, waiting for other jobs to finish... [INFO] [stderr] warning: equality checks against true are unnecessary [INFO] [stderr] --> src/parser/util.rs:88:12 [INFO] [stderr] | [INFO] [stderr] 88 | if start == true && item_char == ' ' { [INFO] [stderr] | ^^^^^^^^^^^^^ help: try simplifying it as shown: `start` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::bool_comparison)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#bool_comparison [INFO] [stderr] [INFO] [stderr] warning: equality checks against true are unnecessary [INFO] [stderr] --> src/parser/util.rs:92:12 [INFO] [stderr] | [INFO] [stderr] 92 | if start == true && !(item_char == '\n' || item_char == ' ') { [INFO] [stderr] | ^^^^^^^^^^^^^ help: try simplifying it as shown: `start` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#bool_comparison [INFO] [stderr] [INFO] [stderr] warning: equality checks against false can be replaced by a negation [INFO] [stderr] --> src/parser/util.rs:94:19 [INFO] [stderr] | [INFO] [stderr] 94 | } else if start == false && (item_char != '\n') { [INFO] [stderr] | ^^^^^^^^^^^^^^ help: try simplifying it as shown: `!start` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#bool_comparison [INFO] [stderr] [INFO] [stderr] warning: equality checks against false can be replaced by a negation [INFO] [stderr] --> src/parser/mod.rs:90:24 [INFO] [stderr] | [INFO] [stderr] 90 | if init == false && ch == '.' { [INFO] [stderr] | ^^^^^^^^^^^^^ help: try simplifying it as shown: `!init` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#bool_comparison [INFO] [stderr] [INFO] [stderr] warning: single-character string constant used as pattern [INFO] [stderr] --> src/parser/mod.rs:104:39 [INFO] [stderr] | [INFO] [stderr] 104 | if module.starts_with(".") { [INFO] [stderr] | ^^^ help: try using a char instead: `'.'` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::single_char_pattern)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_char_pattern [INFO] [stderr] [INFO] [stderr] warning: an inclusive range would be more readable [INFO] [stderr] --> src/parser/mac.rs:138:29 [INFO] [stderr] | [INFO] [stderr] 138 | if $i.slice(ind..ind + 1)[0] == 10 { [INFO] [stderr] | ^^^^^^^^^^^^ help: use: `ind..=ind` [INFO] [stderr] | [INFO] [stderr] ::: src/parser/mod.rs:168:1 [INFO] [stderr] | [INFO] [stderr] 168 | / named!(item_class, do_parse!( [INFO] [stderr] 169 | | many0!(nom::newline) >> [INFO] [stderr] 170 | | start_len: many0!(tag!(" ")) >> [INFO] [stderr] 171 | | tag!("class") >> [INFO] [stderr] ... | [INFO] [stderr] 219 | | }) [INFO] [stderr] 220 | | )); [INFO] [stderr] | |___- in this macro invocation [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::range_plus_one)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#range_plus_one [INFO] [stderr] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [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/parser/mod.rs:204:21 [INFO] [stderr] | [INFO] [stderr] 204 | / match item.node { [INFO] [stderr] 205 | | ItemKind::Function {name, description, parameters} => { [INFO] [stderr] 206 | | result.push(Function { [INFO] [stderr] 207 | | name: name, [INFO] [stderr] ... | [INFO] [stderr] 212 | | _ => {} [INFO] [stderr] 213 | | } [INFO] [stderr] | |_____________________^ [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] help: try this [INFO] [stderr] | [INFO] [stderr] 204 | if let ItemKind::Function {name, description, parameters} = item.node { [INFO] [stderr] 205 | result.push(Function { [INFO] [stderr] 206 | name: name, [INFO] [stderr] 207 | description: description, [INFO] [stderr] 208 | parameters: parameters [INFO] [stderr] 209 | }); [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: an inclusive range would be more readable [INFO] [stderr] --> src/parser/mac.rs:19:78 [INFO] [stderr] | [INFO] [stderr] 19 | res = nom::IResult::Done(input.slice(idx + 1..), input.slice(0..idx + 1)); [INFO] [stderr] | ^^^^^^^^^^ help: use: `0..=idx` [INFO] [stderr] | [INFO] [stderr] ::: src/parser/mod.rs:222:1 [INFO] [stderr] | [INFO] [stderr] 222 | / named!(item_fn, do_parse!( [INFO] [stderr] 223 | | many0!(nom::newline) >> [INFO] [stderr] 224 | | start_len: many0!(tag!(" ")) >> [INFO] [stderr] 225 | | decorators: many0!(decorator) >> [INFO] [stderr] ... | [INFO] [stderr] 244 | | }) [INFO] [stderr] 245 | | )); [INFO] [stderr] | |___- in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#range_plus_one [INFO] [stderr] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] warning: equality checks against false can be replaced by a negation [INFO] [stderr] --> src/parse.rs:45:12 [INFO] [stderr] | [INFO] [stderr] 45 | if is_dir == false { [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: try simplifying it as shown: `!is_dir` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#bool_comparison [INFO] [stderr] [INFO] [stderr] warning: single-character string constant used as pattern [INFO] [stderr] --> src/parse.rs:48:45 [INFO] [stderr] | [INFO] [stderr] 48 | file_name = file_name.split(".").collect::>()[0]; [INFO] [stderr] | ^^^ help: try using a char instead: `'.'` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_char_pattern [INFO] [stderr] [INFO] [stderr] warning: equality checks against true are unnecessary [INFO] [stderr] --> src/parse.rs:53:16 [INFO] [stderr] | [INFO] [stderr] 53 | if is_py_package == true { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: try simplifying it as shown: `is_py_package` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#bool_comparison [INFO] [stderr] [INFO] [stderr] error: using `clone` on a double-reference; this will copy the reference instead of cloning the inner type [INFO] [stderr] --> src/parse.rs:113:21 [INFO] [stderr] | [INFO] [stderr] 113 | let root_name = parse_dir.clone().to_string(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[deny(clippy::clone_double_ref)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_double_ref [INFO] [stderr] help: try dereferencing it [INFO] [stderr] | [INFO] [stderr] 113 | let root_name = &(*parse_dir).clone().to_string(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] help: or try being explicit about what type to clone [INFO] [stderr] | [INFO] [stderr] 113 | let root_name = &str::clone(parse_dir).to_string(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: equality checks against false can be replaced by a negation [INFO] [stderr] --> src/parse.rs:124:12 [INFO] [stderr] | [INFO] [stderr] 124 | if is_dir == false { [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: try simplifying it as shown: `!is_dir` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#bool_comparison [INFO] [stderr] [INFO] [stderr] warning: single-character string constant used as pattern [INFO] [stderr] --> src/parse.rs:128:45 [INFO] [stderr] | [INFO] [stderr] 128 | file_name = file_name.split(".").collect::>()[0]; [INFO] [stderr] | ^^^ help: try using a char instead: `'.'` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_char_pattern [INFO] [stderr] [INFO] [stderr] warning: equality checks against true are unnecessary [INFO] [stderr] --> src/parse.rs:133:16 [INFO] [stderr] | [INFO] [stderr] 133 | if is_py_package == true { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: try simplifying it as shown: `is_py_package` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#bool_comparison [INFO] [stderr] [INFO] [stderr] warning: `ref` on an entire `let` pattern is discouraged, take a reference with `&` instead [INFO] [stderr] --> src/gen.rs:14:13 [INFO] [stderr] | [INFO] [stderr] 14 | let ref modules: Vec = package.modules; [INFO] [stderr] | ----^^^^^^^^^^^-------------------------------- help: try: `let modules: &Vec = &package.modules;` [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/gen.rs:17:17 [INFO] [stderr] | [INFO] [stderr] 17 | let ref functions = module.functions; [INFO] [stderr] | ----^^^^^^^^^^^^^-------------------- help: try: `let functions = &module.functions;` [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: `ref` on an entire `let` pattern is discouraged, take a reference with `&` instead [INFO] [stderr] --> src/gen.rs:18:17 [INFO] [stderr] | [INFO] [stderr] 18 | let ref classes = module.classes; [INFO] [stderr] | ----^^^^^^^^^^^------------------ help: try: `let classes = &module.classes;` [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: `ref` on an entire `let` pattern is discouraged, take a reference with `&` instead [INFO] [stderr] --> src/gen.rs:55:13 [INFO] [stderr] | [INFO] [stderr] 55 | let ref filename = module.name; [INFO] [stderr] | ----^^^^^^^^^^^^--------------- help: try: `let filename = &module.name;` [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: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/gen.rs:60:9 [INFO] [stderr] | [INFO] [stderr] 60 | / match module.description { [INFO] [stderr] 61 | | Some(desc) => { [INFO] [stderr] 62 | | content += &module_desc_template(desc); [INFO] [stderr] 63 | | write_to_file(&path, &filename, &content); [INFO] [stderr] 64 | | }, [INFO] [stderr] 65 | | None => {} [INFO] [stderr] 66 | | }; [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] 60 | if let Some(desc) = module.description { [INFO] [stderr] 61 | content += &module_desc_template(desc); [INFO] [stderr] 62 | write_to_file(&path, &filename, &content); [INFO] [stderr] 63 | }; [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] error: aborting due to previous error [INFO] [stderr] [INFO] [stderr] error: Could not compile `x-ray`. [INFO] [stderr] [INFO] [stderr] To learn more, run the command again with --verbose. [INFO] running `"docker" "inspect" "b78fc4cb41d96b11f9153f9b1f4358072a292173b6bb72652a0a087aebf50792"` [INFO] running `"docker" "rm" "-f" "b78fc4cb41d96b11f9153f9b1f4358072a292173b6bb72652a0a087aebf50792"` [INFO] [stdout] b78fc4cb41d96b11f9153f9b1f4358072a292173b6bb72652a0a087aebf50792