[INFO] crate clt 0.0.6 is already in cache [INFO] extracting crate clt 0.0.6 into work/ex/clippy-test-run/sources/stable/reg/clt/0.0.6 [INFO] extracting crate clt 0.0.6 into work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/reg/clt/0.0.6 [INFO] validating manifest of clt-0.0.6 on toolchain stable [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "read-manifest" "--manifest-path" "Cargo.toml"` [INFO] validating manifest of clt-0.0.6 on toolchain stable+rustflags=-Dclippy::into_iter_on_array [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "read-manifest" "--manifest-path" "Cargo.toml"` [INFO] started frobbing clt-0.0.6 [INFO] finished frobbing clt-0.0.6 [INFO] frobbed toml for clt-0.0.6 written to work/ex/clippy-test-run/sources/stable/reg/clt/0.0.6/Cargo.toml [INFO] started frobbing clt-0.0.6 [INFO] finished frobbing clt-0.0.6 [INFO] frobbed toml for clt-0.0.6 written to work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/reg/clt/0.0.6/Cargo.toml [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "generate-lockfile" "--manifest-path" "Cargo.toml" "-Zno-index-update"` [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "generate-lockfile" "--manifest-path" "Cargo.toml" "-Zno-index-update"` [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "fetch" "--locked" "--manifest-path" "Cargo.toml"` [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "fetch" "--locked" "--manifest-path" "Cargo.toml"` [INFO] linting clt-0.0.6 against stable for clippy-test-run [INFO] running `"docker" "create" "-v" "/mnt/big/crater/work/local/target-dirs/clippy-test-run/worker-2/stable:/opt/crater/target:rw,Z" "-v" "/mnt/big/crater/work/ex/clippy-test-run/sources/stable/reg/clt/0.0.6:/opt/crater/workdir:ro,Z" "-v" "/mnt/big/crater/work/local/cargo-home:/opt/crater/cargo-home:ro,Z" "-v" "/mnt/big/crater/work/local/rustup-home:/opt/crater/rustup-home:ro,Z" "-e" "USER_ID=1000" "-e" "SOURCE_DIR=/opt/crater/workdir" "-e" "MAP_USER_ID=1000" "-e" "CARGO_TARGET_DIR=/opt/crater/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-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] 52a655c5a71e03df2a6a7476eb5892990eb40b3987dad29aebb5b1f2841b2d6b [INFO] running `"docker" "start" "-a" "52a655c5a71e03df2a6a7476eb5892990eb40b3987dad29aebb5b1f2841b2d6b"` [INFO] [stderr] Checking clt v0.0.6 (/opt/crater/workdir) [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/core.rs:32:13 [INFO] [stderr] | [INFO] [stderr] 32 | callback: callback, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: replace it with: `callback` [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/types.rs:35:13 [INFO] [stderr] | [INFO] [stderr] 35 | help: help, [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `help` [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/types.rs:36:13 [INFO] [stderr] | [INFO] [stderr] 36 | is_flag: is_flag, [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: replace it with: `is_flag` [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/types.rs:37:13 [INFO] [stderr] | [INFO] [stderr] 37 | is_bool_flag: is_bool_flag, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `is_bool_flag` [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/types.rs:38:13 [INFO] [stderr] | [INFO] [stderr] 38 | multiple: multiple, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: replace it with: `multiple` [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/types.rs:39:13 [INFO] [stderr] | [INFO] [stderr] 39 | required: required, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: replace it with: `required` [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/types.rs:40:13 [INFO] [stderr] | [INFO] [stderr] 40 | default: default, [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: replace it with: `default` [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/types.rs:107:13 [INFO] [stderr] | [INFO] [stderr] 107 | 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/types.rs:108:13 [INFO] [stderr] | [INFO] [stderr] 108 | required: required, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: replace it with: `required` [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/types.rs:109:13 [INFO] [stderr] | [INFO] [stderr] 109 | default: default, [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: replace it with: `default` [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/term.rs:104:13 [INFO] [stderr] | [INFO] [stderr] 104 | text: text, [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `text` [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/term.rs:390:13 [INFO] [stderr] | [INFO] [stderr] 390 | length: length, [INFO] [stderr] | ^^^^^^^^^^^^^^ help: replace it with: `length` [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/term.rs:391:13 [INFO] [stderr] | [INFO] [stderr] 391 | label: label, [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `label` [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/term.rs:529:13 [INFO] [stderr] | [INFO] [stderr] 529 | editor: editor, [INFO] [stderr] | ^^^^^^^^^^^^^^ help: replace it with: `editor` [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/formatting.rs:25:13 [INFO] [stderr] | [INFO] [stderr] 25 | width: width, [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `width` [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/formatting.rs:26:13 [INFO] [stderr] | [INFO] [stderr] 26 | indent_increment: indent_increment, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `indent_increment` [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/core.rs:32:13 [INFO] [stderr] | [INFO] [stderr] 32 | callback: callback, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: replace it with: `callback` [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/types.rs:35:13 [INFO] [stderr] | [INFO] [stderr] 35 | help: help, [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `help` [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/types.rs:36:13 [INFO] [stderr] | [INFO] [stderr] 36 | is_flag: is_flag, [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: replace it with: `is_flag` [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/types.rs:37:13 [INFO] [stderr] | [INFO] [stderr] 37 | is_bool_flag: is_bool_flag, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `is_bool_flag` [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/types.rs:38:13 [INFO] [stderr] | [INFO] [stderr] 38 | multiple: multiple, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: replace it with: `multiple` [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/types.rs:39:13 [INFO] [stderr] | [INFO] [stderr] 39 | required: required, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: replace it with: `required` [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/types.rs:40:13 [INFO] [stderr] | [INFO] [stderr] 40 | default: default, [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: replace it with: `default` [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/types.rs:107:13 [INFO] [stderr] | [INFO] [stderr] 107 | 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/types.rs:108:13 [INFO] [stderr] | [INFO] [stderr] 108 | required: required, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: replace it with: `required` [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/types.rs:109:13 [INFO] [stderr] | [INFO] [stderr] 109 | default: default, [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: replace it with: `default` [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/term.rs:104:13 [INFO] [stderr] | [INFO] [stderr] 104 | text: text, [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `text` [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/term.rs:390:13 [INFO] [stderr] | [INFO] [stderr] 390 | length: length, [INFO] [stderr] | ^^^^^^^^^^^^^^ help: replace it with: `length` [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/term.rs:391:13 [INFO] [stderr] | [INFO] [stderr] 391 | label: label, [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `label` [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/term.rs:529:13 [INFO] [stderr] | [INFO] [stderr] 529 | editor: editor, [INFO] [stderr] | ^^^^^^^^^^^^^^ help: replace it with: `editor` [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/formatting.rs:25:13 [INFO] [stderr] | [INFO] [stderr] 25 | width: width, [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `width` [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/formatting.rs:26:13 [INFO] [stderr] | [INFO] [stderr] 26 | indent_increment: indent_increment, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `indent_increment` [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/core.rs:124:9 [INFO] [stderr] | [INFO] [stderr] 124 | / return Options::new(help_option_names[0], help_option_names[1], [INFO] [stderr] 125 | | "Show this message and exit.", true, true, false, false, None); [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] 124 | Options::new(help_option_names[0], help_option_names[1], [INFO] [stderr] 125 | "Show this message and exit.", true, true, false, false, None) [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/core.rs:143:9 [INFO] [stderr] | [INFO] [stderr] 143 | return options; [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: remove `return` as shown: `options` [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: unneeded return statement [INFO] [stderr] --> src/core.rs:152:9 [INFO] [stderr] | [INFO] [stderr] 152 | return parser; [INFO] [stderr] | ^^^^^^^^^^^^^^ help: remove `return` as shown: `parser` [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/types.rs:53:16 [INFO] [stderr] | [INFO] [stderr] 53 | } else { [INFO] [stderr] | ________________^ [INFO] [stderr] 54 | | if self.required { [INFO] [stderr] 55 | | parser.reqopt(self.short_name, self.long_name, self.help, self.long_name); [INFO] [stderr] 56 | | } else if self.multiple { [INFO] [stderr] ... | [INFO] [stderr] 60 | | } [INFO] [stderr] 61 | | } [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] 53 | } else if self.required { [INFO] [stderr] 54 | parser.reqopt(self.short_name, self.long_name, self.help, self.long_name); [INFO] [stderr] 55 | } else if self.multiple { [INFO] [stderr] 56 | parser.optmulti(self.short_name, self.long_name, self.help, self.long_name); [INFO] [stderr] 57 | } else { [INFO] [stderr] 58 | parser.optopt(self.short_name, self.long_name, self.help, self.long_name); [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/types.rs:92:9 [INFO] [stderr] | [INFO] [stderr] 92 | return (options, help); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `(options, help)` [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: unused import: `std::path::Path` [INFO] [stderr] --> src/term.rs:14:5 [INFO] [stderr] | [INFO] [stderr] 14 | use std::path::Path; [INFO] [stderr] | ^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_imports)] on by default [INFO] [stderr] [INFO] [stderr] warning: unused import: `Duration` [INFO] [stderr] --> src/term.rs:16:26 [INFO] [stderr] | [INFO] [stderr] 16 | use std::time::{Instant, Duration, SystemTime, UNIX_EPOCH}; [INFO] [stderr] | ^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/term.rs:225:5 [INFO] [stderr] | [INFO] [stderr] 225 | return input.trim_right_matches("\n").to_string(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `input.trim_right_matches("\n").to_string()` [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: unneeded return statement [INFO] [stderr] --> src/term.rs:263:9 [INFO] [stderr] | [INFO] [stderr] 263 | return prompt_input; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `prompt_input` [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: long literal lacking separators [INFO] [stderr] --> src/term.rs:304:35 [INFO] [stderr] | [INFO] [stderr] 304 | const TIOCGWINSZ: libc::c_ulong = 0x40087468; [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0x4008_7468` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::unreadable_literal)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: Constants have by default a `'static` lifetime [INFO] [stderr] --> src/term.rs:354:20 [INFO] [stderr] | [INFO] [stderr] 354 | const BEFORE_BAR: &'static str = "\r\x1b[?25l"; [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/term.rs:355:19 [INFO] [stderr] | [INFO] [stderr] 355 | const AFTER_BAR: &'static str = "\x1b[?25h\n"; [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/term.rs:429:13 [INFO] [stderr] | [INFO] [stderr] 429 | return self.pos as f32 / self.length as f32; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `self.pos as f32 / self.length as f32` [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: unneeded return statement [INFO] [stderr] --> src/term.rs:431:13 [INFO] [stderr] | [INFO] [stderr] 431 | return 1.0 [INFO] [stderr] | ^^^^^^^^^^ help: remove `return` as shown: `1.0` [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: unneeded return statement [INFO] [stderr] --> src/term.rs:440:9 [INFO] [stderr] | [INFO] [stderr] 440 | return avg_sum / (self.avgs.len() as f32); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `avg_sum / (self.avgs.len() as f32)` [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: unneeded return statement [INFO] [stderr] --> src/term.rs:589:9 [INFO] [stderr] | [INFO] [stderr] 589 | return edited_text; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `edited_text` [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: unused import: `std` [INFO] [stderr] --> src/formatting.rs:5:5 [INFO] [stderr] | [INFO] [stderr] 5 | use std; [INFO] [stderr] | ^^^ [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/formatting.rs:124:5 [INFO] [stderr] | [INFO] [stderr] 124 | return text; [INFO] [stderr] | ^^^^^^^^^^^^ help: remove `return` as shown: `text` [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: use of deprecated item 'std::ascii::AsciiExt': use inherent methods instead [INFO] [stderr] --> src/term.rs:8:5 [INFO] [stderr] | [INFO] [stderr] 8 | use std::ascii::AsciiExt; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(deprecated)] on by default [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/core.rs:124:9 [INFO] [stderr] | [INFO] [stderr] 124 | / return Options::new(help_option_names[0], help_option_names[1], [INFO] [stderr] 125 | | "Show this message and exit.", true, true, false, false, None); [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] 124 | Options::new(help_option_names[0], help_option_names[1], [INFO] [stderr] 125 | "Show this message and exit.", true, true, false, false, None) [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/core.rs:143:9 [INFO] [stderr] | [INFO] [stderr] 143 | return options; [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: remove `return` as shown: `options` [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: unneeded return statement [INFO] [stderr] --> src/core.rs:152:9 [INFO] [stderr] | [INFO] [stderr] 152 | return parser; [INFO] [stderr] | ^^^^^^^^^^^^^^ help: remove `return` as shown: `parser` [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/types.rs:53:16 [INFO] [stderr] | [INFO] [stderr] 53 | } else { [INFO] [stderr] | ________________^ [INFO] [stderr] 54 | | if self.required { [INFO] [stderr] 55 | | parser.reqopt(self.short_name, self.long_name, self.help, self.long_name); [INFO] [stderr] 56 | | } else if self.multiple { [INFO] [stderr] ... | [INFO] [stderr] 60 | | } [INFO] [stderr] 61 | | } [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] 53 | } else if self.required { [INFO] [stderr] 54 | parser.reqopt(self.short_name, self.long_name, self.help, self.long_name); [INFO] [stderr] 55 | } else if self.multiple { [INFO] [stderr] 56 | parser.optmulti(self.short_name, self.long_name, self.help, self.long_name); [INFO] [stderr] 57 | } else { [INFO] [stderr] 58 | parser.optopt(self.short_name, self.long_name, self.help, self.long_name); [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/types.rs:92:9 [INFO] [stderr] | [INFO] [stderr] 92 | return (options, help); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `(options, help)` [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: unused import: `std::path::Path` [INFO] [stderr] --> src/term.rs:14:5 [INFO] [stderr] | [INFO] [stderr] 14 | use std::path::Path; [INFO] [stderr] | ^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_imports)] on by default [INFO] [stderr] [INFO] [stderr] warning: unused import: `Duration` [INFO] [stderr] --> src/term.rs:16:26 [INFO] [stderr] | [INFO] [stderr] 16 | use std::time::{Instant, Duration, SystemTime, UNIX_EPOCH}; [INFO] [stderr] | ^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/term.rs:225:5 [INFO] [stderr] | [INFO] [stderr] 225 | return input.trim_right_matches("\n").to_string(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `input.trim_right_matches("\n").to_string()` [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: unneeded return statement [INFO] [stderr] --> src/term.rs:263:9 [INFO] [stderr] | [INFO] [stderr] 263 | return prompt_input; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `prompt_input` [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: long literal lacking separators [INFO] [stderr] --> src/term.rs:304:35 [INFO] [stderr] | [INFO] [stderr] 304 | const TIOCGWINSZ: libc::c_ulong = 0x40087468; [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0x4008_7468` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::unreadable_literal)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: Constants have by default a `'static` lifetime [INFO] [stderr] --> src/term.rs:354:20 [INFO] [stderr] | [INFO] [stderr] 354 | const BEFORE_BAR: &'static str = "\r\x1b[?25l"; [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/term.rs:355:19 [INFO] [stderr] | [INFO] [stderr] 355 | const AFTER_BAR: &'static str = "\x1b[?25h\n"; [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/term.rs:429:13 [INFO] [stderr] | [INFO] [stderr] 429 | return self.pos as f32 / self.length as f32; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `self.pos as f32 / self.length as f32` [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: unneeded return statement [INFO] [stderr] --> src/term.rs:431:13 [INFO] [stderr] | [INFO] [stderr] 431 | return 1.0 [INFO] [stderr] | ^^^^^^^^^^ help: remove `return` as shown: `1.0` [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: unneeded return statement [INFO] [stderr] --> src/term.rs:440:9 [INFO] [stderr] | [INFO] [stderr] 440 | return avg_sum / (self.avgs.len() as f32); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `avg_sum / (self.avgs.len() as f32)` [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: unneeded return statement [INFO] [stderr] --> src/term.rs:589:9 [INFO] [stderr] | [INFO] [stderr] 589 | return edited_text; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `edited_text` [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: unused import: `std` [INFO] [stderr] --> src/formatting.rs:5:5 [INFO] [stderr] | [INFO] [stderr] 5 | use std; [INFO] [stderr] | ^^^ [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/formatting.rs:124:5 [INFO] [stderr] | [INFO] [stderr] 124 | return text; [INFO] [stderr] | ^^^^^^^^^^^^ help: remove `return` as shown: `text` [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: use of deprecated item 'std::ascii::AsciiExt': use inherent methods instead [INFO] [stderr] --> src/term.rs:8:5 [INFO] [stderr] | [INFO] [stderr] 8 | use std::ascii::AsciiExt; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(deprecated)] on by default [INFO] [stderr] [INFO] [stderr] warning: unused import: `std::ascii::AsciiExt` [INFO] [stderr] --> src/term.rs:8:5 [INFO] [stderr] | [INFO] [stderr] 8 | use std::ascii::AsciiExt; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused variable: `hide_input` [INFO] [stderr] --> src/term.rs:221:40 [INFO] [stderr] | [INFO] [stderr] 221 | fn get_prompt_input(prompt_text: &str, hide_input: bool) -> String { [INFO] [stderr] | ^^^^^^^^^^ help: consider using `_hide_input` instead [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_variables)] on by default [INFO] [stderr] [INFO] [stderr] warning: unused variable: `width` [INFO] [stderr] --> src/formatting.rs:123:28 [INFO] [stderr] | [INFO] [stderr] 123 | fn wrap_text(text: String, width: usize, initial_indent: &str, subsequent_indent: &str) -> String { [INFO] [stderr] | ^^^^^ help: consider using `_width` instead [INFO] [stderr] [INFO] [stderr] warning: unused variable: `initial_indent` [INFO] [stderr] --> src/formatting.rs:123:42 [INFO] [stderr] | [INFO] [stderr] 123 | fn wrap_text(text: String, width: usize, initial_indent: &str, subsequent_indent: &str) -> String { [INFO] [stderr] | ^^^^^^^^^^^^^^ help: consider using `_initial_indent` instead [INFO] [stderr] [INFO] [stderr] warning: unused variable: `subsequent_indent` [INFO] [stderr] --> src/formatting.rs:123:64 [INFO] [stderr] | [INFO] [stderr] 123 | fn wrap_text(text: String, width: usize, initial_indent: &str, subsequent_indent: &str) -> String { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: consider using `_subsequent_indent` instead [INFO] [stderr] [INFO] [stderr] warning: unused variable: `params` [INFO] [stderr] --> src/core.rs:121:26 [INFO] [stderr] | [INFO] [stderr] 121 | let show_help = |params: Params| { [INFO] [stderr] | ^^^^^^ help: consider using `_params` instead [INFO] [stderr] [INFO] [stderr] warning: unused variable: `show_help` [INFO] [stderr] --> src/core.rs:121:13 [INFO] [stderr] | [INFO] [stderr] 121 | let show_help = |params: Params| { [INFO] [stderr] | ^^^^^^^^^ help: consider using `_show_help` instead [INFO] [stderr] [INFO] [stderr] warning: unused variable: `pragram_name` [INFO] [stderr] --> src/core.rs:129:26 [INFO] [stderr] | [INFO] [stderr] 129 | pub fn invoke(&self, pragram_name: String, args: Vec) { [INFO] [stderr] | ^^^^^^^^^^^^ help: consider using `_pragram_name` instead [INFO] [stderr] [INFO] [stderr] warning: unused variable: `parser` [INFO] [stderr] --> src/types.rs:113:33 [INFO] [stderr] | [INFO] [stderr] 113 | pub fn add_to_parser(&self, parser: &mut getopts::Options) { [INFO] [stderr] | ^^^^^^ help: consider using `_parser` instead [INFO] [stderr] [INFO] [stderr] warning: unused import: `std::ascii::AsciiExt` [INFO] [stderr] --> src/term.rs:8:5 [INFO] [stderr] | [INFO] [stderr] 8 | use std::ascii::AsciiExt; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/term.rs:475:13 [INFO] [stderr] | [INFO] [stderr] 475 | let mut info: String; [INFO] [stderr] | ----^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_mut)] on by default [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/term.rs:576:13 [INFO] [stderr] | [INFO] [stderr] 576 | let mut filepath = tmpdir.path().clone(); [INFO] [stderr] | ----^^^^^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `hide_input` [INFO] [stderr] --> src/term.rs:221:40 [INFO] [stderr] | [INFO] [stderr] 221 | fn get_prompt_input(prompt_text: &str, hide_input: bool) -> String { [INFO] [stderr] | ^^^^^^^^^^ help: consider using `_hide_input` instead [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_variables)] on by default [INFO] [stderr] [INFO] [stderr] warning: unused variable: `width` [INFO] [stderr] --> src/formatting.rs:123:28 [INFO] [stderr] | [INFO] [stderr] 123 | fn wrap_text(text: String, width: usize, initial_indent: &str, subsequent_indent: &str) -> String { [INFO] [stderr] | ^^^^^ help: consider using `_width` instead [INFO] [stderr] [INFO] [stderr] warning: unused variable: `initial_indent` [INFO] [stderr] --> src/formatting.rs:123:42 [INFO] [stderr] | [INFO] [stderr] 123 | fn wrap_text(text: String, width: usize, initial_indent: &str, subsequent_indent: &str) -> String { [INFO] [stderr] | ^^^^^^^^^^^^^^ help: consider using `_initial_indent` instead [INFO] [stderr] [INFO] [stderr] warning: unused variable: `subsequent_indent` [INFO] [stderr] --> src/formatting.rs:123:64 [INFO] [stderr] | [INFO] [stderr] 123 | fn wrap_text(text: String, width: usize, initial_indent: &str, subsequent_indent: &str) -> String { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: consider using `_subsequent_indent` instead [INFO] [stderr] [INFO] [stderr] warning: unused variable: `params` [INFO] [stderr] --> src/core.rs:121:26 [INFO] [stderr] | [INFO] [stderr] 121 | let show_help = |params: Params| { [INFO] [stderr] | ^^^^^^ help: consider using `_params` instead [INFO] [stderr] [INFO] [stderr] warning: unused variable: `show_help` [INFO] [stderr] --> src/core.rs:121:13 [INFO] [stderr] | [INFO] [stderr] 121 | let show_help = |params: Params| { [INFO] [stderr] | ^^^^^^^^^ help: consider using `_show_help` instead [INFO] [stderr] [INFO] [stderr] warning: unused variable: `pragram_name` [INFO] [stderr] --> src/core.rs:129:26 [INFO] [stderr] | [INFO] [stderr] 129 | pub fn invoke(&self, pragram_name: String, args: Vec) { [INFO] [stderr] | ^^^^^^^^^^^^ help: consider using `_pragram_name` instead [INFO] [stderr] [INFO] [stderr] warning: unused variable: `parser` [INFO] [stderr] --> src/types.rs:113:33 [INFO] [stderr] | [INFO] [stderr] 113 | pub fn add_to_parser(&self, parser: &mut getopts::Options) { [INFO] [stderr] | ^^^^^^ help: consider using `_parser` instead [INFO] [stderr] [INFO] [stderr] warning: struct is never constructed: `Command` [INFO] [stderr] --> src/core.rs:17:1 [INFO] [stderr] | [INFO] [stderr] 17 | pub struct Command { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(dead_code)] on by default [INFO] [stderr] [INFO] [stderr] warning: method is never used: `new` [INFO] [stderr] --> src/core.rs:29:5 [INFO] [stderr] | [INFO] [stderr] 29 | pub fn new(name: &str, callback: CommandCallback) -> Command { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `option` [INFO] [stderr] --> src/core.rs:42:5 [INFO] [stderr] | [INFO] [stderr] 42 | / pub fn option(&mut self, short_name: &'static str, long_name: &'static str, help: &'static str, [INFO] [stderr] 43 | | is_flag: bool, is_bool_flag: bool, multiple: bool, [INFO] [stderr] 44 | | required: bool, default: Option<&'static str>) { [INFO] [stderr] 45 | | let option = Options::new(short_name, long_name, help, is_flag, [INFO] [stderr] 46 | | is_bool_flag, multiple, required, default); [INFO] [stderr] 47 | | self.options.push(option); [INFO] [stderr] 48 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `argument` [INFO] [stderr] --> src/core.rs:51:5 [INFO] [stderr] | [INFO] [stderr] 51 | pub fn argument(&mut self, name: &'static str, required: bool, default: Option<&'static str>) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `make_formatter` [INFO] [stderr] --> src/core.rs:56:5 [INFO] [stderr] | [INFO] [stderr] 56 | fn make_formatter(&self) -> HelpFormatter { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `format_usage` [INFO] [stderr] --> src/core.rs:60:5 [INFO] [stderr] | [INFO] [stderr] 60 | fn format_usage(&self, formatter: &mut HelpFormatter) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `get_usage` [INFO] [stderr] --> src/core.rs:69:5 [INFO] [stderr] | [INFO] [stderr] 69 | pub fn get_usage(&self) -> String { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `format_help_text` [INFO] [stderr] --> src/core.rs:75:5 [INFO] [stderr] | [INFO] [stderr] 75 | fn format_help_text(&self, formatter: &mut HelpFormatter) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `format_options` [INFO] [stderr] --> src/core.rs:84:5 [INFO] [stderr] | [INFO] [stderr] 84 | fn format_options(&self, formatter: &mut HelpFormatter) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `format_epilog` [INFO] [stderr] --> src/core.rs:96:5 [INFO] [stderr] | [INFO] [stderr] 96 | fn format_epilog(&self, formatter: &mut HelpFormatter) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `format_help` [INFO] [stderr] --> src/core.rs:105:5 [INFO] [stderr] | [INFO] [stderr] 105 | fn format_help(&self, formatter: &mut HelpFormatter) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `get_help` [INFO] [stderr] --> src/core.rs:112:5 [INFO] [stderr] | [INFO] [stderr] 112 | pub fn get_help(&self) -> String { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `get_help_option` [INFO] [stderr] --> src/core.rs:119:5 [INFO] [stderr] | [INFO] [stderr] 119 | fn get_help_option(&self) -> Options { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `invoke` [INFO] [stderr] --> src/core.rs:129:5 [INFO] [stderr] | [INFO] [stderr] 129 | pub fn invoke(&self, pragram_name: String, args: Vec) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `get_options` [INFO] [stderr] --> src/core.rs:136:5 [INFO] [stderr] | [INFO] [stderr] 136 | fn get_options(&self) -> Vec { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `make_parser` [INFO] [stderr] --> src/core.rs:147:5 [INFO] [stderr] | [INFO] [stderr] 147 | fn make_parser(&self) -> getopts::Options { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `parse_args` [INFO] [stderr] --> src/core.rs:156:5 [INFO] [stderr] | [INFO] [stderr] 156 | fn parse_args(&self, args: Vec) -> Vec { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `run` [INFO] [stderr] --> src/core.rs:161:5 [INFO] [stderr] | [INFO] [stderr] 161 | pub fn run(&self) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: type alias is never used: `Params` [INFO] [stderr] --> src/types.rs:9:1 [INFO] [stderr] | [INFO] [stderr] 9 | pub type Params = Vec; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: type alias is never used: `CommandCallback` [INFO] [stderr] --> src/types.rs:13:1 [INFO] [stderr] | [INFO] [stderr] 13 | pub type CommandCallback = fn(Params); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `new` [INFO] [stderr] --> src/types.rs:30:5 [INFO] [stderr] | [INFO] [stderr] 30 | / pub fn new(s_name: &'static str, l_name: &'static str, help: &'static str, is_flag: bool, is_bool_flag: bool, [INFO] [stderr] 31 | | multiple: bool, required: bool, default: Option<&'static str>) -> Options { [INFO] [stderr] 32 | | Options { [INFO] [stderr] 33 | | short_name: s_name, [INFO] [stderr] ... | [INFO] [stderr] 41 | | } [INFO] [stderr] 42 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `add_to_parser` [INFO] [stderr] --> src/types.rs:44:5 [INFO] [stderr] | [INFO] [stderr] 44 | pub fn add_to_parser(&self, parser: &mut getopts::Options) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `get_help_record` [INFO] [stderr] --> src/types.rs:64:5 [INFO] [stderr] | [INFO] [stderr] 64 | pub fn get_help_record(&self) -> (String, String) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: struct is never constructed: `Argument` [INFO] [stderr] --> src/types.rs:98:1 [INFO] [stderr] | [INFO] [stderr] 98 | pub struct Argument { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `new` [INFO] [stderr] --> src/types.rs:105:5 [INFO] [stderr] | [INFO] [stderr] 105 | pub fn new(name: &'static str, required: bool, default: Option<&'static str>) -> Argument { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `add_to_parser` [INFO] [stderr] --> src/types.rs:113:5 [INFO] [stderr] | [INFO] [stderr] 113 | pub fn add_to_parser(&self, parser: &mut getopts::Options) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `get_usage_piece` [INFO] [stderr] --> src/types.rs:116:5 [INFO] [stderr] | [INFO] [stderr] 116 | pub fn get_usage_piece(&self) -> String { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `time_per_iteration` [INFO] [stderr] --> src/term.rs:435:5 [INFO] [stderr] | [INFO] [stderr] 435 | fn time_per_iteration(&self) -> f32 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `estimate_time` [INFO] [stderr] --> src/term.rs:443:5 [INFO] [stderr] | [INFO] [stderr] 443 | fn estimate_time(&self) -> f32 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: struct is never constructed: `HelpFormatter` [INFO] [stderr] --> src/formatting.rs:10:1 [INFO] [stderr] | [INFO] [stderr] 10 | pub struct HelpFormatter { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `new` [INFO] [stderr] --> src/formatting.rs:23:5 [INFO] [stderr] | [INFO] [stderr] 23 | pub fn new(width: usize, indent_increment: usize) -> HelpFormatter { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `indent` [INFO] [stderr] --> src/formatting.rs:33:5 [INFO] [stderr] | [INFO] [stderr] 33 | pub fn indent(&mut self) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `dedent` [INFO] [stderr] --> src/formatting.rs:38:5 [INFO] [stderr] | [INFO] [stderr] 38 | pub fn dedent(&mut self) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `write` [INFO] [stderr] --> src/formatting.rs:43:5 [INFO] [stderr] | [INFO] [stderr] 43 | pub fn write(&mut self, s: String) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `write_paragraph` [INFO] [stderr] --> src/formatting.rs:48:5 [INFO] [stderr] | [INFO] [stderr] 48 | pub fn write_paragraph(&mut self) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `write_heading` [INFO] [stderr] --> src/formatting.rs:57:5 [INFO] [stderr] | [INFO] [stderr] 57 | pub fn write_heading(&mut self, heading: &str) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `write_dl` [INFO] [stderr] --> src/formatting.rs:63:5 [INFO] [stderr] | [INFO] [stderr] 63 | pub fn write_dl(&mut self, rows: Vec<(String, String)>) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `enter_section` [INFO] [stderr] --> src/formatting.rs:73:5 [INFO] [stderr] | [INFO] [stderr] 73 | pub fn enter_section(&mut self, name: &str) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `exit_section` [INFO] [stderr] --> src/formatting.rs:80:5 [INFO] [stderr] | [INFO] [stderr] 80 | pub fn exit_section(&mut self) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `write_text` [INFO] [stderr] --> src/formatting.rs:85:5 [INFO] [stderr] | [INFO] [stderr] 85 | pub fn write_text(&mut self, text: String) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `write_usage` [INFO] [stderr] --> src/formatting.rs:98:5 [INFO] [stderr] | [INFO] [stderr] 98 | pub fn write_usage(&mut self, name: &str, args: String, prefix: &str) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `getvalue` [INFO] [stderr] --> src/formatting.rs:115:5 [INFO] [stderr] | [INFO] [stderr] 115 | pub fn getvalue(&self) -> String { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: function is never used: `wrap_text` [INFO] [stderr] --> src/formatting.rs:123:1 [INFO] [stderr] | [INFO] [stderr] 123 | fn wrap_text(text: String, width: usize, initial_indent: &str, subsequent_indent: &str) -> String { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: this function has too many arguments (9/7) [INFO] [stderr] --> src/core.rs:42:5 [INFO] [stderr] | [INFO] [stderr] 42 | / pub fn option(&mut self, short_name: &'static str, long_name: &'static str, help: &'static str, [INFO] [stderr] 43 | | is_flag: bool, is_bool_flag: bool, multiple: bool, [INFO] [stderr] 44 | | required: bool, default: Option<&'static str>) { [INFO] [stderr] 45 | | let option = Options::new(short_name, long_name, help, is_flag, [INFO] [stderr] 46 | | is_bool_flag, multiple, required, default); [INFO] [stderr] 47 | | self.options.push(option); [INFO] [stderr] 48 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::too_many_arguments)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#too_many_arguments [INFO] [stderr] [INFO] [stderr] warning: this function has too many arguments (8/7) [INFO] [stderr] --> src/types.rs:30:5 [INFO] [stderr] | [INFO] [stderr] 30 | / pub fn new(s_name: &'static str, l_name: &'static str, help: &'static str, is_flag: bool, is_bool_flag: bool, [INFO] [stderr] 31 | | multiple: bool, required: bool, default: Option<&'static str>) -> Options { [INFO] [stderr] 32 | | Options { [INFO] [stderr] 33 | | short_name: s_name, [INFO] [stderr] ... | [INFO] [stderr] 41 | | } [INFO] [stderr] 42 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#too_many_arguments [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/types.rs:85:12 [INFO] [stderr] | [INFO] [stderr] 85 | if self.help.len() != 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!self.help.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: you seem to be trying to match on a boolean expression [INFO] [stderr] --> src/types.rs:117:9 [INFO] [stderr] | [INFO] [stderr] 117 | / match self.required { [INFO] [stderr] 118 | | true => format!("{}", self.name), [INFO] [stderr] 119 | | false => format!("[{}]", self.name), [INFO] [stderr] 120 | | } [INFO] [stderr] | |_________^ help: consider using an if/else expression: `if self.required { format!("{}", self.name) } else { format!("[{}]", self.name) }` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::match_bool)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_bool [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/types.rs:118:21 [INFO] [stderr] | [INFO] [stderr] 118 | true => format!("{}", self.name), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `self.name.to_string()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::useless_format)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [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: this function has too many arguments (8/7) [INFO] [stderr] --> src/utils.rs:9:1 [INFO] [stderr] | [INFO] [stderr] 9 | / pub fn sprintln(message: String, fg: Color, bg: Color, bold: bool, dim: bool, [INFO] [stderr] 10 | | underline: bool, blink: bool, reverse: bool) { [INFO] [stderr] 11 | | let mut text = Style::new(message); [INFO] [stderr] 12 | | text.fg(fg); [INFO] [stderr] ... | [INFO] [stderr] 19 | | println!("{}", text); [INFO] [stderr] 20 | | } [INFO] [stderr] | |_^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#too_many_arguments [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/term.rs:153:9 [INFO] [stderr] | [INFO] [stderr] 153 | / match self.fg { [INFO] [stderr] 154 | | Some(ref fg) => { [INFO] [stderr] 155 | | try!(f.write_str(fg.get_fg_str())); [INFO] [stderr] 156 | | }, [INFO] [stderr] 157 | | None => () [INFO] [stderr] 158 | | } [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] 153 | if let Some(ref fg) = self.fg { [INFO] [stderr] 154 | try!(f.write_str(fg.get_fg_str())); [INFO] [stderr] 155 | } [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/term.rs:159:9 [INFO] [stderr] | [INFO] [stderr] 159 | / match self.bg { [INFO] [stderr] 160 | | Some(ref bg) => { [INFO] [stderr] 161 | | try!(f.write_str(bg.get_bg_str())); [INFO] [stderr] 162 | | }, [INFO] [stderr] 163 | | None => () [INFO] [stderr] 164 | | } [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] 159 | if let Some(ref bg) = self.bg { [INFO] [stderr] 160 | try!(f.write_str(bg.get_bg_str())); [INFO] [stderr] 161 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: `if _ { .. } else { .. }` is an expression [INFO] [stderr] --> src/term.rs:211:5 [INFO] [stderr] | [INFO] [stderr] 211 | / let prompt_text: String; [INFO] [stderr] 212 | | if default.is_some() && show_default { [INFO] [stderr] 213 | | prompt_text = format!("{} [{}]", text, default.unwrap()); [INFO] [stderr] 214 | | } else { [INFO] [stderr] 215 | | prompt_text = text.to_string(); [INFO] [stderr] 216 | | } [INFO] [stderr] | |_____^ help: it is more idiomatic to write: `let prompt_text = if default.is_some() && show_default { $ crate :: fmt :: format ( format_args ! ( $ ( $ arg ) * ) ) } else { text.to_string() };` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::useless_let_if_seq)] on by default [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: called `ok().expect()` on a Result value. You can call `expect` directly on the `Result` [INFO] [stderr] --> src/term.rs:224:5 [INFO] [stderr] | [INFO] [stderr] 224 | io::stdin().read_line(&mut input).ok().expect("Failed to read line"); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::ok_expect)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ok_expect [INFO] [stderr] [INFO] [stderr] warning: single-character string constant used as pattern [INFO] [stderr] --> src/term.rs:225:37 [INFO] [stderr] | [INFO] [stderr] 225 | return input.trim_right_matches("\n").to_string(); [INFO] [stderr] | ^^^^ help: try using a char instead: `'\n'` [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: using `clone` on a `Copy` type [INFO] [stderr] --> src/term.rs:240:76 [INFO] [stderr] | [INFO] [stderr] 240 | let prompt_text = build_prompt_text(text, prompt_suffix, show_default, default.clone()); [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: try removing the `clone` call: `default` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::clone_on_copy)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to match on a boolean expression [INFO] [stderr] --> src/term.rs:278:26 [INFO] [stderr] | [INFO] [stderr] 278 | let default_string = match default { [INFO] [stderr] | __________________________^ [INFO] [stderr] 279 | | true => Some("Y/n"), [INFO] [stderr] 280 | | false => Some("y/N"), [INFO] [stderr] 281 | | }; [INFO] [stderr] | |_____^ help: consider using an if/else expression: `if default { Some("Y/n") } else { Some("y/N") }` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_bool [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/term.rs:436:12 [INFO] [stderr] | [INFO] [stderr] 436 | if self.avgs.len() == 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `self.avgs.is_empty()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: `if _ { .. } else { .. }` is an expression [INFO] [stderr] --> src/term.rs:475:9 [INFO] [stderr] | [INFO] [stderr] 475 | / let mut info: String; [INFO] [stderr] 476 | | if self.finished || self.start.elapsed().as_secs() == 0 { [INFO] [stderr] 477 | | info = format!("{}", self.format_percent()); [INFO] [stderr] 478 | | } else { [INFO] [stderr] 479 | | info = format!("{} {}", self.format_percent(), self.format_estimate_time()); [INFO] [stderr] 480 | | } [INFO] [stderr] | |_________^ help: it is more idiomatic to write: `let info = if self.finished || self.start.elapsed().as_secs() == 0 { $ crate :: fmt :: format ( format_args ! ( $ ( $ arg ) * ) ) } else { $ crate :: fmt :: format ( format_args ! ( $ ( $ arg ) * ) ) };` [INFO] [stderr] | [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: useless use of `format!` [INFO] [stderr] --> src/term.rs:477:20 [INFO] [stderr] | [INFO] [stderr] 477 | info = format!("{}", self.format_percent()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `self.format_percent().to_string()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [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: manual implementation of an assign operation [INFO] [stderr] --> src/term.rs:497:17 [INFO] [stderr] | [INFO] [stderr] 497 | clear_string = clear_string + " "; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `clear_string += " "` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::assign_op_pattern)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/term.rs:507:9 [INFO] [stderr] | [INFO] [stderr] 507 | self.pos = self.pos + 1; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `self.pos += 1` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [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/term.rs:576:28 [INFO] [stderr] | [INFO] [stderr] 576 | let mut filepath = tmpdir.path().clone(); [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] 576 | let mut filepath = &(*tmpdir.path()).clone(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] help: or try being explicit about what type to clone [INFO] [stderr] | [INFO] [stderr] 576 | let mut filepath = &std::path::Path::clone(tmpdir.path()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] error: handle written amount returned or use `Write::write_all` instead [INFO] [stderr] --> src/term.rs:580:9 [INFO] [stderr] | [INFO] [stderr] 580 | tmpfile.write(text.as_bytes()).unwrap(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[deny(clippy::unused_io_amount)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_io_amount [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/formatting.rs:34:9 [INFO] [stderr] | [INFO] [stderr] 34 | self.current_indent = self.current_indent + self.indent_increment; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `self.current_indent += self.indent_increment` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/formatting.rs:39:9 [INFO] [stderr] | [INFO] [stderr] 39 | self.current_indent = self.current_indent - self.indent_increment; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `self.current_indent -= self.indent_increment` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/term.rs:475:13 [INFO] [stderr] | [INFO] [stderr] 475 | let mut info: String; [INFO] [stderr] | ----^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_mut)] on by default [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/term.rs:576:13 [INFO] [stderr] | [INFO] [stderr] 576 | let mut filepath = tmpdir.path().clone(); [INFO] [stderr] | ----^^^^^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] error: aborting due to 2 previous errors [INFO] [stderr] [INFO] [stderr] warning: struct is never constructed: `Command` [INFO] [stderr] --> src/core.rs:17:1 [INFO] [stderr] | [INFO] [stderr] 17 | pub struct Command { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(dead_code)] on by default [INFO] [stderr] [INFO] [stderr] warning: method is never used: `new` [INFO] [stderr] --> src/core.rs:29:5 [INFO] [stderr] | [INFO] [stderr] 29 | pub fn new(name: &str, callback: CommandCallback) -> Command { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `option` [INFO] [stderr] --> src/core.rs:42:5 [INFO] [stderr] | [INFO] [stderr] 42 | / pub fn option(&mut self, short_name: &'static str, long_name: &'static str, help: &'static str, [INFO] [stderr] 43 | | is_flag: bool, is_bool_flag: bool, multiple: bool, [INFO] [stderr] 44 | | required: bool, default: Option<&'static str>) { [INFO] [stderr] 45 | | let option = Options::new(short_name, long_name, help, is_flag, [INFO] [stderr] 46 | | is_bool_flag, multiple, required, default); [INFO] [stderr] 47 | | self.options.push(option); [INFO] [stderr] 48 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `argument` [INFO] [stderr] --> src/core.rs:51:5 [INFO] [stderr] | [INFO] [stderr] 51 | pub fn argument(&mut self, name: &'static str, required: bool, default: Option<&'static str>) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `make_formatter` [INFO] [stderr] --> src/core.rs:56:5 [INFO] [stderr] | [INFO] [stderr] 56 | fn make_formatter(&self) -> HelpFormatter { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `format_usage` [INFO] [stderr] --> src/core.rs:60:5 [INFO] [stderr] | [INFO] [stderr] 60 | fn format_usage(&self, formatter: &mut HelpFormatter) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `get_usage` [INFO] [stderr] --> src/core.rs:69:5 [INFO] [stderr] | [INFO] [stderr] 69 | pub fn get_usage(&self) -> String { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `format_help_text` [INFO] [stderr] --> src/core.rs:75:5 [INFO] [stderr] | [INFO] [stderr] 75 | fn format_help_text(&self, formatter: &mut HelpFormatter) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `format_options` [INFO] [stderr] --> src/core.rs:84:5 [INFO] [stderr] | [INFO] [stderr] 84 | fn format_options(&self, formatter: &mut HelpFormatter) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `format_epilog` [INFO] [stderr] --> src/core.rs:96:5 [INFO] [stderr] | [INFO] [stderr] 96 | fn format_epilog(&self, formatter: &mut HelpFormatter) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `format_help` [INFO] [stderr] --> src/core.rs:105:5 [INFO] [stderr] | [INFO] [stderr] 105 | fn format_help(&self, formatter: &mut HelpFormatter) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `get_help` [INFO] [stderr] --> src/core.rs:112:5 [INFO] [stderr] | [INFO] [stderr] 112 | pub fn get_help(&self) -> String { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `get_help_option` [INFO] [stderr] --> src/core.rs:119:5 [INFO] [stderr] | [INFO] [stderr] 119 | fn get_help_option(&self) -> Options { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `invoke` [INFO] [stderr] --> src/core.rs:129:5 [INFO] [stderr] | [INFO] [stderr] 129 | pub fn invoke(&self, pragram_name: String, args: Vec) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `get_options` [INFO] [stderr] --> src/core.rs:136:5 [INFO] [stderr] | [INFO] [stderr] 136 | fn get_options(&self) -> Vec { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `make_parser` [INFO] [stderr] --> src/core.rs:147:5 [INFO] [stderr] | [INFO] [stderr] 147 | fn make_parser(&self) -> getopts::Options { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `parse_args` [INFO] [stderr] --> src/core.rs:156:5 [INFO] [stderr] | [INFO] [stderr] 156 | fn parse_args(&self, args: Vec) -> Vec { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `run` [INFO] [stderr] --> src/core.rs:161:5 [INFO] [stderr] | [INFO] [stderr] 161 | pub fn run(&self) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: type alias is never used: `Params` [INFO] [stderr] --> src/types.rs:9:1 [INFO] [stderr] | [INFO] [stderr] 9 | pub type Params = Vec; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: type alias is never used: `CommandCallback` [INFO] [stderr] --> src/types.rs:13:1 [INFO] [stderr] | [INFO] [stderr] 13 | pub type CommandCallback = fn(Params); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `new` [INFO] [stderr] --> src/types.rs:30:5 [INFO] [stderr] | [INFO] [stderr] 30 | / pub fn new(s_name: &'static str, l_name: &'static str, help: &'static str, is_flag: bool, is_bool_flag: bool, [INFO] [stderr] 31 | | multiple: bool, required: bool, default: Option<&'static str>) -> Options { [INFO] [stderr] 32 | | Options { [INFO] [stderr] 33 | | short_name: s_name, [INFO] [stderr] ... | [INFO] [stderr] 41 | | } [INFO] [stderr] 42 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `add_to_parser` [INFO] [stderr] --> src/types.rs:44:5 [INFO] [stderr] | [INFO] [stderr] 44 | pub fn add_to_parser(&self, parser: &mut getopts::Options) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `get_help_record` [INFO] [stderr] --> src/types.rs:64:5 [INFO] [stderr] | [INFO] [stderr] 64 | pub fn get_help_record(&self) -> (String, String) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: struct is never constructed: `Argument` [INFO] [stderr] --> src/types.rs:98:1 [INFO] [stderr] | [INFO] [stderr] 98 | pub struct Argument { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `new` [INFO] [stderr] --> src/types.rs:105:5 [INFO] [stderr] | [INFO] [stderr] 105 | pub fn new(name: &'static str, required: bool, default: Option<&'static str>) -> Argument { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `add_to_parser` [INFO] [stderr] --> src/types.rs:113:5 [INFO] [stderr] | [INFO] [stderr] 113 | pub fn add_to_parser(&self, parser: &mut getopts::Options) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `get_usage_piece` [INFO] [stderr] --> src/types.rs:116:5 [INFO] [stderr] | [INFO] [stderr] 116 | pub fn get_usage_piece(&self) -> String { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `time_per_iteration` [INFO] [stderr] --> src/term.rs:435:5 [INFO] [stderr] | [INFO] [stderr] 435 | fn time_per_iteration(&self) -> f32 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `estimate_time` [INFO] [stderr] --> src/term.rs:443:5 [INFO] [stderr] | [INFO] [stderr] 443 | fn estimate_time(&self) -> f32 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: struct is never constructed: `HelpFormatter` [INFO] [stderr] --> src/formatting.rs:10:1 [INFO] [stderr] | [INFO] [stderr] 10 | pub struct HelpFormatter { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `new` [INFO] [stderr] --> src/formatting.rs:23:5 [INFO] [stderr] | [INFO] [stderr] 23 | pub fn new(width: usize, indent_increment: usize) -> HelpFormatter { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `indent` [INFO] [stderr] --> src/formatting.rs:33:5 [INFO] [stderr] | [INFO] [stderr] 33 | pub fn indent(&mut self) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `dedent` [INFO] [stderr] --> src/formatting.rs:38:5 [INFO] [stderr] | [INFO] [stderr] 38 | pub fn dedent(&mut self) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `write` [INFO] [stderr] --> src/formatting.rs:43:5 [INFO] [stderr] | [INFO] [stderr] 43 | pub fn write(&mut self, s: String) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `write_paragraph` [INFO] [stderr] --> src/formatting.rs:48:5 [INFO] [stderr] | [INFO] [stderr] 48 | pub fn write_paragraph(&mut self) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] error: Could not compile `clt`. [INFO] [stderr] warning: build failed, waiting for other jobs to finish... [INFO] [stderr] [INFO] [stderr] warning: method is never used: `write_heading` [INFO] [stderr] --> src/formatting.rs:57:5 [INFO] [stderr] | [INFO] [stderr] 57 | pub fn write_heading(&mut self, heading: &str) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `write_dl` [INFO] [stderr] --> src/formatting.rs:63:5 [INFO] [stderr] | [INFO] [stderr] 63 | pub fn write_dl(&mut self, rows: Vec<(String, String)>) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `enter_section` [INFO] [stderr] --> src/formatting.rs:73:5 [INFO] [stderr] | [INFO] [stderr] 73 | pub fn enter_section(&mut self, name: &str) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `exit_section` [INFO] [stderr] --> src/formatting.rs:80:5 [INFO] [stderr] | [INFO] [stderr] 80 | pub fn exit_section(&mut self) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `write_text` [INFO] [stderr] --> src/formatting.rs:85:5 [INFO] [stderr] | [INFO] [stderr] 85 | pub fn write_text(&mut self, text: String) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `write_usage` [INFO] [stderr] --> src/formatting.rs:98:5 [INFO] [stderr] | [INFO] [stderr] 98 | pub fn write_usage(&mut self, name: &str, args: String, prefix: &str) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `getvalue` [INFO] [stderr] --> src/formatting.rs:115:5 [INFO] [stderr] | [INFO] [stderr] 115 | pub fn getvalue(&self) -> String { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: function is never used: `wrap_text` [INFO] [stderr] --> src/formatting.rs:123:1 [INFO] [stderr] | [INFO] [stderr] 123 | fn wrap_text(text: String, width: usize, initial_indent: &str, subsequent_indent: &str) -> String { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: this function has too many arguments (9/7) [INFO] [stderr] --> src/core.rs:42:5 [INFO] [stderr] | [INFO] [stderr] 42 | / pub fn option(&mut self, short_name: &'static str, long_name: &'static str, help: &'static str, [INFO] [stderr] 43 | | is_flag: bool, is_bool_flag: bool, multiple: bool, [INFO] [stderr] 44 | | required: bool, default: Option<&'static str>) { [INFO] [stderr] 45 | | let option = Options::new(short_name, long_name, help, is_flag, [INFO] [stderr] 46 | | is_bool_flag, multiple, required, default); [INFO] [stderr] 47 | | self.options.push(option); [INFO] [stderr] 48 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::too_many_arguments)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#too_many_arguments [INFO] [stderr] [INFO] [stderr] warning: this function has too many arguments (8/7) [INFO] [stderr] --> src/types.rs:30:5 [INFO] [stderr] | [INFO] [stderr] 30 | / pub fn new(s_name: &'static str, l_name: &'static str, help: &'static str, is_flag: bool, is_bool_flag: bool, [INFO] [stderr] 31 | | multiple: bool, required: bool, default: Option<&'static str>) -> Options { [INFO] [stderr] 32 | | Options { [INFO] [stderr] 33 | | short_name: s_name, [INFO] [stderr] ... | [INFO] [stderr] 41 | | } [INFO] [stderr] 42 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#too_many_arguments [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/types.rs:85:12 [INFO] [stderr] | [INFO] [stderr] 85 | if self.help.len() != 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!self.help.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: you seem to be trying to match on a boolean expression [INFO] [stderr] --> src/types.rs:117:9 [INFO] [stderr] | [INFO] [stderr] 117 | / match self.required { [INFO] [stderr] 118 | | true => format!("{}", self.name), [INFO] [stderr] 119 | | false => format!("[{}]", self.name), [INFO] [stderr] 120 | | } [INFO] [stderr] | |_________^ help: consider using an if/else expression: `if self.required { format!("{}", self.name) } else { format!("[{}]", self.name) }` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::match_bool)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_bool [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/types.rs:118:21 [INFO] [stderr] | [INFO] [stderr] 118 | true => format!("{}", self.name), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `self.name.to_string()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::useless_format)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [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: this function has too many arguments (8/7) [INFO] [stderr] --> src/utils.rs:9:1 [INFO] [stderr] | [INFO] [stderr] 9 | / pub fn sprintln(message: String, fg: Color, bg: Color, bold: bool, dim: bool, [INFO] [stderr] 10 | | underline: bool, blink: bool, reverse: bool) { [INFO] [stderr] 11 | | let mut text = Style::new(message); [INFO] [stderr] 12 | | text.fg(fg); [INFO] [stderr] ... | [INFO] [stderr] 19 | | println!("{}", text); [INFO] [stderr] 20 | | } [INFO] [stderr] | |_^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#too_many_arguments [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/term.rs:153:9 [INFO] [stderr] | [INFO] [stderr] 153 | / match self.fg { [INFO] [stderr] 154 | | Some(ref fg) => { [INFO] [stderr] 155 | | try!(f.write_str(fg.get_fg_str())); [INFO] [stderr] 156 | | }, [INFO] [stderr] 157 | | None => () [INFO] [stderr] 158 | | } [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] 153 | if let Some(ref fg) = self.fg { [INFO] [stderr] 154 | try!(f.write_str(fg.get_fg_str())); [INFO] [stderr] 155 | } [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/term.rs:159:9 [INFO] [stderr] | [INFO] [stderr] 159 | / match self.bg { [INFO] [stderr] 160 | | Some(ref bg) => { [INFO] [stderr] 161 | | try!(f.write_str(bg.get_bg_str())); [INFO] [stderr] 162 | | }, [INFO] [stderr] 163 | | None => () [INFO] [stderr] 164 | | } [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] 159 | if let Some(ref bg) = self.bg { [INFO] [stderr] 160 | try!(f.write_str(bg.get_bg_str())); [INFO] [stderr] 161 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: `if _ { .. } else { .. }` is an expression [INFO] [stderr] --> src/term.rs:211:5 [INFO] [stderr] | [INFO] [stderr] 211 | / let prompt_text: String; [INFO] [stderr] 212 | | if default.is_some() && show_default { [INFO] [stderr] 213 | | prompt_text = format!("{} [{}]", text, default.unwrap()); [INFO] [stderr] 214 | | } else { [INFO] [stderr] 215 | | prompt_text = text.to_string(); [INFO] [stderr] 216 | | } [INFO] [stderr] | |_____^ help: it is more idiomatic to write: `let prompt_text = if default.is_some() && show_default { $ crate :: fmt :: format ( format_args ! ( $ ( $ arg ) * ) ) } else { text.to_string() };` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::useless_let_if_seq)] on by default [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: called `ok().expect()` on a Result value. You can call `expect` directly on the `Result` [INFO] [stderr] --> src/term.rs:224:5 [INFO] [stderr] | [INFO] [stderr] 224 | io::stdin().read_line(&mut input).ok().expect("Failed to read line"); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::ok_expect)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ok_expect [INFO] [stderr] [INFO] [stderr] warning: single-character string constant used as pattern [INFO] [stderr] --> src/term.rs:225:37 [INFO] [stderr] | [INFO] [stderr] 225 | return input.trim_right_matches("\n").to_string(); [INFO] [stderr] | ^^^^ help: try using a char instead: `'\n'` [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: using `clone` on a `Copy` type [INFO] [stderr] --> src/term.rs:240:76 [INFO] [stderr] | [INFO] [stderr] 240 | let prompt_text = build_prompt_text(text, prompt_suffix, show_default, default.clone()); [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: try removing the `clone` call: `default` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::clone_on_copy)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to match on a boolean expression [INFO] [stderr] --> src/term.rs:278:26 [INFO] [stderr] | [INFO] [stderr] 278 | let default_string = match default { [INFO] [stderr] | __________________________^ [INFO] [stderr] 279 | | true => Some("Y/n"), [INFO] [stderr] 280 | | false => Some("y/N"), [INFO] [stderr] 281 | | }; [INFO] [stderr] | |_____^ help: consider using an if/else expression: `if default { Some("Y/n") } else { Some("y/N") }` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_bool [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/term.rs:436:12 [INFO] [stderr] | [INFO] [stderr] 436 | if self.avgs.len() == 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `self.avgs.is_empty()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: `if _ { .. } else { .. }` is an expression [INFO] [stderr] --> src/term.rs:475:9 [INFO] [stderr] | [INFO] [stderr] 475 | / let mut info: String; [INFO] [stderr] 476 | | if self.finished || self.start.elapsed().as_secs() == 0 { [INFO] [stderr] 477 | | info = format!("{}", self.format_percent()); [INFO] [stderr] 478 | | } else { [INFO] [stderr] 479 | | info = format!("{} {}", self.format_percent(), self.format_estimate_time()); [INFO] [stderr] 480 | | } [INFO] [stderr] | |_________^ help: it is more idiomatic to write: `let info = if self.finished || self.start.elapsed().as_secs() == 0 { $ crate :: fmt :: format ( format_args ! ( $ ( $ arg ) * ) ) } else { $ crate :: fmt :: format ( format_args ! ( $ ( $ arg ) * ) ) };` [INFO] [stderr] | [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: useless use of `format!` [INFO] [stderr] --> src/term.rs:477:20 [INFO] [stderr] | [INFO] [stderr] 477 | info = format!("{}", self.format_percent()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `self.format_percent().to_string()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [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: manual implementation of an assign operation [INFO] [stderr] --> src/term.rs:497:17 [INFO] [stderr] | [INFO] [stderr] 497 | clear_string = clear_string + " "; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `clear_string += " "` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::assign_op_pattern)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/term.rs:507:9 [INFO] [stderr] | [INFO] [stderr] 507 | self.pos = self.pos + 1; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `self.pos += 1` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [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/term.rs:576:28 [INFO] [stderr] | [INFO] [stderr] 576 | let mut filepath = tmpdir.path().clone(); [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] 576 | let mut filepath = &(*tmpdir.path()).clone(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] help: or try being explicit about what type to clone [INFO] [stderr] | [INFO] [stderr] 576 | let mut filepath = &std::path::Path::clone(tmpdir.path()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] error: handle written amount returned or use `Write::write_all` instead [INFO] [stderr] --> src/term.rs:580:9 [INFO] [stderr] | [INFO] [stderr] 580 | tmpfile.write(text.as_bytes()).unwrap(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[deny(clippy::unused_io_amount)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_io_amount [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/formatting.rs:34:9 [INFO] [stderr] | [INFO] [stderr] 34 | self.current_indent = self.current_indent + self.indent_increment; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `self.current_indent += self.indent_increment` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/formatting.rs:39:9 [INFO] [stderr] | [INFO] [stderr] 39 | self.current_indent = self.current_indent - self.indent_increment; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `self.current_indent -= self.indent_increment` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] error: aborting due to 2 previous errors [INFO] [stderr] [INFO] [stderr] error: Could not compile `clt`. [INFO] [stderr] [INFO] [stderr] To learn more, run the command again with --verbose. [INFO] running `"docker" "inspect" "52a655c5a71e03df2a6a7476eb5892990eb40b3987dad29aebb5b1f2841b2d6b"` [INFO] running `"docker" "rm" "-f" "52a655c5a71e03df2a6a7476eb5892990eb40b3987dad29aebb5b1f2841b2d6b"` [INFO] [stdout] 52a655c5a71e03df2a6a7476eb5892990eb40b3987dad29aebb5b1f2841b2d6b