[INFO] crate commander 0.1.2 is already in cache [INFO] extracting crate commander 0.1.2 into work/ex/clippy-test-run/sources/stable/reg/commander/0.1.2 [INFO] extracting crate commander 0.1.2 into work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/reg/commander/0.1.2 [INFO] validating manifest of commander-0.1.2 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 commander-0.1.2 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 commander-0.1.2 [INFO] finished frobbing commander-0.1.2 [INFO] frobbed toml for commander-0.1.2 written to work/ex/clippy-test-run/sources/stable/reg/commander/0.1.2/Cargo.toml [INFO] started frobbing commander-0.1.2 [INFO] finished frobbing commander-0.1.2 [INFO] frobbed toml for commander-0.1.2 written to work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/reg/commander/0.1.2/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 commander-0.1.2 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/commander/0.1.2:/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] 3d657f83711b350a2f52a43fe9755cacd45cc57600e07166b98714b33a316738 [INFO] running `"docker" "start" "-a" "3d657f83711b350a2f52a43fe9755cacd45cc57600e07166b98714b33a316738"` [INFO] [stderr] Compiling commander v0.1.2 (/opt/crater/workdir) [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/lib.rs:99:13 [INFO] [stderr] | [INFO] [stderr] 99 | short: short, [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `short` [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/lib.rs:100:13 [INFO] [stderr] | [INFO] [stderr] 100 | long: long, [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `long` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/lib.rs:101:13 [INFO] [stderr] | [INFO] [stderr] 101 | arg_type : arg_type, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: replace it with: `arg_type` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/lib.rs:102:13 [INFO] [stderr] | [INFO] [stderr] 102 | 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/lib.rs:103:13 [INFO] [stderr] | [INFO] [stderr] 103 | desc: desc, [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `desc` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/lib.rs:99:13 [INFO] [stderr] | [INFO] [stderr] 99 | short: short, [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `short` [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/lib.rs:100:13 [INFO] [stderr] | [INFO] [stderr] 100 | long: long, [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `long` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/lib.rs:101:13 [INFO] [stderr] | [INFO] [stderr] 101 | arg_type : arg_type, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: replace it with: `arg_type` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/lib.rs:102:13 [INFO] [stderr] | [INFO] [stderr] 102 | 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/lib.rs:103:13 [INFO] [stderr] | [INFO] [stderr] 103 | desc: desc, [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `desc` [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: length comparison to zero [INFO] [stderr] --> src/lib.rs:87:20 [INFO] [stderr] | [INFO] [stderr] 87 | if cur_str.len() != 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!cur_str.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 should consider deriving a `Default` implementation for `Commander` [INFO] [stderr] --> src/lib.rs:122:5 [INFO] [stderr] | [INFO] [stderr] 122 | / pub fn new() -> Commander { [INFO] [stderr] 123 | | let commander = Commander { [INFO] [stderr] 124 | | version: String::new(), [INFO] [stderr] 125 | | build_time: get_build_time().to_string(), [INFO] [stderr] ... | [INFO] [stderr] 135 | | .option("-h, --help", "Show this help message and exit", None) [INFO] [stderr] 136 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::new_without_default_derive)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default_derive [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 110 | #[derive(Default)] [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: using `clone` on a `Copy` type [INFO] [stderr] --> src/lib.rs:170:51 [INFO] [stderr] | [INFO] [stderr] 170 | Value::Bool(ref b) => return Some(b.clone()), [INFO] [stderr] | ^^^^^^^^^ help: try dereferencing it: `*b` [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: using `clone` on a `Copy` type [INFO] [stderr] --> src/lib.rs:190:50 [INFO] [stderr] | [INFO] [stderr] 190 | Value::Int(ref i) => return Some(i.clone()), [INFO] [stderr] | ^^^^^^^^^ help: try dereferencing it: `*i` [INFO] [stderr] | [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: using `clone` on a `Copy` type [INFO] [stderr] --> src/lib.rs:200:52 [INFO] [stderr] | [INFO] [stderr] 200 | Value::Float(ref f) => return Some(f.clone()), [INFO] [stderr] | ^^^^^^^^^ help: try dereferencing it: `*f` [INFO] [stderr] | [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: using `clone` on a `Copy` type [INFO] [stderr] --> src/lib.rs:218:57 [INFO] [stderr] | [INFO] [stderr] 218 | let new_default = default.map(|val| Value::Bool(val.clone())); [INFO] [stderr] | ^^^^^^^^^^^ help: try removing the `clone` call: `val` [INFO] [stderr] | [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: using `clone` on a `Copy` type [INFO] [stderr] --> src/lib.rs:230:56 [INFO] [stderr] | [INFO] [stderr] 230 | let new_default = default.map(|val| Value::Int(val.clone())); [INFO] [stderr] | ^^^^^^^^^^^ help: try removing the `clone` call: `val` [INFO] [stderr] | [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: using `clone` on a `Copy` type [INFO] [stderr] --> src/lib.rs:236:58 [INFO] [stderr] | [INFO] [stderr] 236 | let new_default = default.map(|val| Value::Float(val.clone())); [INFO] [stderr] | ^^^^^^^^^^^ help: try removing the `clone` call: `val` [INFO] [stderr] | [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: writing `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> src/lib.rs:247:48 [INFO] [stderr] | [INFO] [stderr] 247 | fn try_analyse_commnad(&mut self, command: &String, args: &Vec) { [INFO] [stderr] | ^^^^^^^ help: change this to: `&str` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::ptr_arg)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/lib.rs:247:63 [INFO] [stderr] | [INFO] [stderr] 247 | fn try_analyse_commnad(&mut self, command: &String, args: &Vec) { [INFO] [stderr] | ^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] help: change this to [INFO] [stderr] | [INFO] [stderr] 247 | fn try_analyse_commnad(&mut self, command: &String, args: &[String]) { [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] help: change `args.clone()` to [INFO] [stderr] | [INFO] [stderr] 293 | value = Some(Value::List(args.to_owned())); [INFO] [stderr] | ^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/lib.rs:248:12 [INFO] [stderr] | [INFO] [stderr] 248 | if command.len() == 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `command.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: length comparison to zero [INFO] [stderr] --> src/lib.rs:264:28 [INFO] [stderr] | [INFO] [stderr] 264 | if args.len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!args.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: Matching on `Some` with `ok()` is redundant [INFO] [stderr] --> src/lib.rs:265:29 [INFO] [stderr] | [INFO] [stderr] 265 | / if let Some(i) = bool::from_str(&args[0]).ok() { [INFO] [stderr] 266 | | value = Some(Value::Bool(i)); [INFO] [stderr] 267 | | } [INFO] [stderr] | |_____________________________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::if_let_some_result)] on by default [INFO] [stderr] = help: Consider matching on `Ok(i)` and removing the call to `ok` instead [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#if_let_some_result [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/lib.rs:273:28 [INFO] [stderr] | [INFO] [stderr] 273 | if args.len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!args.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: Matching on `Some` with `ok()` is redundant [INFO] [stderr] --> src/lib.rs:274:29 [INFO] [stderr] | [INFO] [stderr] 274 | / if let Some(i) = i32::from_str(&args[0]).ok() { [INFO] [stderr] 275 | | value = Some(Value::Int(i)); [INFO] [stderr] 276 | | } [INFO] [stderr] | |_____________________________^ [INFO] [stderr] | [INFO] [stderr] = help: Consider matching on `Ok(i)` and removing the call to `ok` instead [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#if_let_some_result [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/lib.rs:280:28 [INFO] [stderr] | [INFO] [stderr] 280 | if args.len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!args.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: Matching on `Some` with `ok()` is redundant [INFO] [stderr] --> src/lib.rs:281:29 [INFO] [stderr] | [INFO] [stderr] 281 | / if let Some(f) = f32::from_str(&args[0]).ok() { [INFO] [stderr] 282 | | value = Some(Value::Float(f)); [INFO] [stderr] 283 | | } [INFO] [stderr] | |_____________________________^ [INFO] [stderr] | [INFO] [stderr] = help: Consider matching on `Ok(f)` and removing the call to `ok` instead [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#if_let_some_result [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/lib.rs:287:28 [INFO] [stderr] | [INFO] [stderr] 287 | if args.len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!args.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: length comparison to zero [INFO] [stderr] --> src/lib.rs:292:28 [INFO] [stderr] | [INFO] [stderr] 292 | if args.len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!args.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: length comparison to zero [INFO] [stderr] --> src/lib.rs:299:24 [INFO] [stderr] | [INFO] [stderr] 299 | if arg.short.len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!arg.short.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: length comparison to zero [INFO] [stderr] --> src/lib.rs:303:24 [INFO] [stderr] | [INFO] [stderr] 303 | if arg.long.len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!arg.long.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: length comparison to zero [INFO] [stderr] --> src/lib.rs:314:12 [INFO] [stderr] | [INFO] [stderr] 314 | if list.len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!list.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: single-character string constant used as pattern [INFO] [stderr] --> src/lib.rs:322:53 [INFO] [stderr] | [INFO] [stderr] 322 | if v.starts_with("--") || v.starts_with("-") { [INFO] [stderr] | ^^^ help: try using a char instead: `'-'` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::single_char_pattern)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_char_pattern [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/lib.rs:335:12 [INFO] [stderr] | [INFO] [stderr] 335 | if command.len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!command.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: useless use of `format!` [INFO] [stderr] --> src/lib.rs:372:26 [INFO] [stderr] | [INFO] [stderr] 372 | help += &format!("{}", usage); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `usage.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: useless use of `format!` [INFO] [stderr] --> src/lib.rs:377:18 [INFO] [stderr] | [INFO] [stderr] 377 | help += &format!("\nOptions:\n"); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `"\nOptions:\n".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] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/lib.rs:380:16 [INFO] [stderr] | [INFO] [stderr] 380 | if arg.short.len() == 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `arg.short.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: length comparison to zero [INFO] [stderr] --> src/lib.rs:87:20 [INFO] [stderr] | [INFO] [stderr] 87 | if cur_str.len() != 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!cur_str.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 should consider deriving a `Default` implementation for `Commander` [INFO] [stderr] --> src/lib.rs:122:5 [INFO] [stderr] | [INFO] [stderr] 122 | / pub fn new() -> Commander { [INFO] [stderr] 123 | | let commander = Commander { [INFO] [stderr] 124 | | version: String::new(), [INFO] [stderr] 125 | | build_time: get_build_time().to_string(), [INFO] [stderr] ... | [INFO] [stderr] 135 | | .option("-h, --help", "Show this help message and exit", None) [INFO] [stderr] 136 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::new_without_default_derive)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default_derive [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 110 | #[derive(Default)] [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: using `clone` on a `Copy` type [INFO] [stderr] --> src/lib.rs:170:51 [INFO] [stderr] | [INFO] [stderr] 170 | Value::Bool(ref b) => return Some(b.clone()), [INFO] [stderr] | ^^^^^^^^^ help: try dereferencing it: `*b` [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: using `clone` on a `Copy` type [INFO] [stderr] --> src/lib.rs:190:50 [INFO] [stderr] | [INFO] [stderr] 190 | Value::Int(ref i) => return Some(i.clone()), [INFO] [stderr] | ^^^^^^^^^ help: try dereferencing it: `*i` [INFO] [stderr] | [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: using `clone` on a `Copy` type [INFO] [stderr] --> src/lib.rs:200:52 [INFO] [stderr] | [INFO] [stderr] 200 | Value::Float(ref f) => return Some(f.clone()), [INFO] [stderr] | ^^^^^^^^^ help: try dereferencing it: `*f` [INFO] [stderr] | [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: using `clone` on a `Copy` type [INFO] [stderr] --> src/lib.rs:218:57 [INFO] [stderr] | [INFO] [stderr] 218 | let new_default = default.map(|val| Value::Bool(val.clone())); [INFO] [stderr] | ^^^^^^^^^^^ help: try removing the `clone` call: `val` [INFO] [stderr] | [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: using `clone` on a `Copy` type [INFO] [stderr] --> src/lib.rs:230:56 [INFO] [stderr] | [INFO] [stderr] 230 | let new_default = default.map(|val| Value::Int(val.clone())); [INFO] [stderr] | ^^^^^^^^^^^ help: try removing the `clone` call: `val` [INFO] [stderr] | [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: using `clone` on a `Copy` type [INFO] [stderr] --> src/lib.rs:236:58 [INFO] [stderr] | [INFO] [stderr] 236 | let new_default = default.map(|val| Value::Float(val.clone())); [INFO] [stderr] | ^^^^^^^^^^^ help: try removing the `clone` call: `val` [INFO] [stderr] | [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: writing `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> src/lib.rs:247:48 [INFO] [stderr] | [INFO] [stderr] 247 | fn try_analyse_commnad(&mut self, command: &String, args: &Vec) { [INFO] [stderr] | ^^^^^^^ help: change this to: `&str` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::ptr_arg)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/lib.rs:247:63 [INFO] [stderr] | [INFO] [stderr] 247 | fn try_analyse_commnad(&mut self, command: &String, args: &Vec) { [INFO] [stderr] | ^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] help: change this to [INFO] [stderr] | [INFO] [stderr] 247 | fn try_analyse_commnad(&mut self, command: &String, args: &[String]) { [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] help: change `args.clone()` to [INFO] [stderr] | [INFO] [stderr] 293 | value = Some(Value::List(args.to_owned())); [INFO] [stderr] | ^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/lib.rs:248:12 [INFO] [stderr] | [INFO] [stderr] 248 | if command.len() == 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `command.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: length comparison to zero [INFO] [stderr] --> src/lib.rs:264:28 [INFO] [stderr] | [INFO] [stderr] 264 | if args.len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!args.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: Matching on `Some` with `ok()` is redundant [INFO] [stderr] --> src/lib.rs:265:29 [INFO] [stderr] | [INFO] [stderr] 265 | / if let Some(i) = bool::from_str(&args[0]).ok() { [INFO] [stderr] 266 | | value = Some(Value::Bool(i)); [INFO] [stderr] 267 | | } [INFO] [stderr] | |_____________________________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::if_let_some_result)] on by default [INFO] [stderr] = help: Consider matching on `Ok(i)` and removing the call to `ok` instead [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#if_let_some_result [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/lib.rs:273:28 [INFO] [stderr] | [INFO] [stderr] 273 | if args.len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!args.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: Matching on `Some` with `ok()` is redundant [INFO] [stderr] --> src/lib.rs:274:29 [INFO] [stderr] | [INFO] [stderr] 274 | / if let Some(i) = i32::from_str(&args[0]).ok() { [INFO] [stderr] 275 | | value = Some(Value::Int(i)); [INFO] [stderr] 276 | | } [INFO] [stderr] | |_____________________________^ [INFO] [stderr] | [INFO] [stderr] = help: Consider matching on `Ok(i)` and removing the call to `ok` instead [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#if_let_some_result [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/lib.rs:280:28 [INFO] [stderr] | [INFO] [stderr] 280 | if args.len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!args.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: Matching on `Some` with `ok()` is redundant [INFO] [stderr] --> src/lib.rs:281:29 [INFO] [stderr] | [INFO] [stderr] 281 | / if let Some(f) = f32::from_str(&args[0]).ok() { [INFO] [stderr] 282 | | value = Some(Value::Float(f)); [INFO] [stderr] 283 | | } [INFO] [stderr] | |_____________________________^ [INFO] [stderr] | [INFO] [stderr] = help: Consider matching on `Ok(f)` and removing the call to `ok` instead [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#if_let_some_result [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/lib.rs:287:28 [INFO] [stderr] | [INFO] [stderr] 287 | if args.len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!args.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: length comparison to zero [INFO] [stderr] --> src/lib.rs:292:28 [INFO] [stderr] | [INFO] [stderr] 292 | if args.len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!args.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: length comparison to zero [INFO] [stderr] --> src/lib.rs:299:24 [INFO] [stderr] | [INFO] [stderr] 299 | if arg.short.len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!arg.short.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: length comparison to zero [INFO] [stderr] --> src/lib.rs:303:24 [INFO] [stderr] | [INFO] [stderr] 303 | if arg.long.len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!arg.long.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: length comparison to zero [INFO] [stderr] --> src/lib.rs:314:12 [INFO] [stderr] | [INFO] [stderr] 314 | if list.len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!list.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: single-character string constant used as pattern [INFO] [stderr] --> src/lib.rs:322:53 [INFO] [stderr] | [INFO] [stderr] 322 | if v.starts_with("--") || v.starts_with("-") { [INFO] [stderr] | ^^^ help: try using a char instead: `'-'` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::single_char_pattern)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_char_pattern [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/lib.rs:335:12 [INFO] [stderr] | [INFO] [stderr] 335 | if command.len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!command.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: useless use of `format!` [INFO] [stderr] --> src/lib.rs:372:26 [INFO] [stderr] | [INFO] [stderr] 372 | help += &format!("{}", usage); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `usage.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: useless use of `format!` [INFO] [stderr] --> src/lib.rs:377:18 [INFO] [stderr] | [INFO] [stderr] 377 | help += &format!("\nOptions:\n"); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `"\nOptions:\n".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] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/lib.rs:380:16 [INFO] [stderr] | [INFO] [stderr] 380 | if arg.short.len() == 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `arg.short.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] Finished dev [unoptimized + debuginfo] target(s) in 3.05s [INFO] running `"docker" "inspect" "3d657f83711b350a2f52a43fe9755cacd45cc57600e07166b98714b33a316738"` [INFO] running `"docker" "rm" "-f" "3d657f83711b350a2f52a43fe9755cacd45cc57600e07166b98714b33a316738"` [INFO] [stdout] 3d657f83711b350a2f52a43fe9755cacd45cc57600e07166b98714b33a316738