[INFO] crate rabbiteer 1.4.1 is already in cache [INFO] extracting crate rabbiteer 1.4.1 into work/ex/clippy-test-run/sources/stable/reg/rabbiteer/1.4.1 [INFO] extracting crate rabbiteer 1.4.1 into work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/reg/rabbiteer/1.4.1 [INFO] validating manifest of rabbiteer-1.4.1 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 rabbiteer-1.4.1 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 rabbiteer-1.4.1 [INFO] finished frobbing rabbiteer-1.4.1 [INFO] frobbed toml for rabbiteer-1.4.1 written to work/ex/clippy-test-run/sources/stable/reg/rabbiteer/1.4.1/Cargo.toml [INFO] started frobbing rabbiteer-1.4.1 [INFO] finished frobbing rabbiteer-1.4.1 [INFO] frobbed toml for rabbiteer-1.4.1 written to work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/reg/rabbiteer/1.4.1/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 rabbiteer-1.4.1 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/rabbiteer/1.4.1:/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] 1db0c748e087a72ffd5c613e021d143678a3eb4aca0e6004f159d94d67287497 [INFO] running `"docker" "start" "-a" "1db0c748e087a72ffd5c613e021d143678a3eb4aca0e6004f159d94d67287497"` [INFO] [stderr] Checking amq-proto v0.1.0 [INFO] [stderr] Checking amqp v0.1.3 [INFO] [stderr] Checking rabbiteer v1.4.1 (/opt/crater/workdir) [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/output.rs:62:13 [INFO] [stderr] | [INFO] [stderr] 62 | data:data, [INFO] [stderr] | ^^^^^^^^^ help: replace it with: `data` [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/publish.rs:60:9 [INFO] [stderr] | [INFO] [stderr] 60 | content_type: content_type, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `content_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/publish.rs:63:9 [INFO] [stderr] | [INFO] [stderr] 63 | reader: reader, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: replace it with: `reader` [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/output.rs:62:13 [INFO] [stderr] | [INFO] [stderr] 62 | data:data, [INFO] [stderr] | ^^^^^^^^^ help: replace it with: `data` [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/publish.rs:60:9 [INFO] [stderr] | [INFO] [stderr] 60 | content_type: content_type, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `content_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/publish.rs:63:9 [INFO] [stderr] | [INFO] [stderr] 63 | reader: reader, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: replace it with: `reader` [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: identical conversion [INFO] [stderr] --> src/client.rs:52:70 [INFO] [stderr] | [INFO] [stderr] 52 | headers.insert("fileName".to_owned(), TableEntry::LongString(String::from(s.file_name))); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider removing `String::from()`: `s.file_name` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::identity_conversion)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_conversion [INFO] [stderr] [INFO] [stderr] warning: this creates an owned instance just for comparison [INFO] [stderr] --> src/client.rs:108:45 [INFO] [stderr] | [INFO] [stderr] 108 | if err.description() == "timed out waiting on channel".to_string() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `"timed out waiting on channel"` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::cmp_owned)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cmp_owned [INFO] [stderr] [INFO] [stderr] warning: this boolean expression can be simplified [INFO] [stderr] --> src/client.rs:129:8 [INFO] [stderr] | [INFO] [stderr] 129 | if !boolv.is_err() { [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: try: `boolv.is_ok()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::nonminimal_bool)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#nonminimal_bool [INFO] [stderr] [INFO] [stderr] warning: this boolean expression can be simplified [INFO] [stderr] --> src/client.rs:133:12 [INFO] [stderr] | [INFO] [stderr] 133 | if !doublev.is_err() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: try: `doublev.is_ok()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#nonminimal_bool [INFO] [stderr] [INFO] [stderr] warning: using `clone` on a `Copy` type [INFO] [stderr] --> src/client.rs:154:28 [INFO] [stderr] | [INFO] [stderr] 154 | let delivery_tag = deliver.delivery_tag.clone(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `deliver.delivery_tag` [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: redundant pattern matching, consider using `is_none()` [INFO] [stderr] --> src/client.rs:203:20 [INFO] [stderr] | [INFO] [stderr] 203 | if let None = bind_routing_key { [INFO] [stderr] | _____________- ^^^^ [INFO] [stderr] 204 | | bind_routing_key = Some("#".to_owned()); // Default the routing key [INFO] [stderr] 205 | | } [INFO] [stderr] | |_____________- help: try this: `if bind_routing_key.is_none()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::redundant_pattern_matching)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_pattern_matching [INFO] [stderr] [INFO] [stderr] warning: use of `unwrap_or` followed by a function call [INFO] [stderr] --> src/client.rs:210:47 [INFO] [stderr] | [INFO] [stderr] 210 | q.clone().unwrap_or("".to_owned()) , [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `unwrap_or_else(|| "".to_owned())` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::or_fun_call)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] [INFO] [stderr] warning: using `clone` on a `Copy` type [INFO] [stderr] --> src/output.rs:37:26 [INFO] [stderr] | [INFO] [stderr] 37 | delivery_tag:deliver.delivery_tag.clone(), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `deliver.delivery_tag` [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/output.rs:38:25 [INFO] [stderr] | [INFO] [stderr] 38 | redelivered:deliver.redelivered.clone(), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `deliver.redelivered` [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: use of `unwrap_or` followed by a function call [INFO] [stderr] --> src/output.rs:43:55 [INFO] [stderr] | [INFO] [stderr] 43 | let content_type = props.content_type.clone().unwrap_or(String::from("")); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `unwrap_or_else(|| String::from(""))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] [INFO] [stderr] warning: use of `unwrap_or` followed by a function call [INFO] [stderr] --> src/output.rs:73:55 [INFO] [stderr] | [INFO] [stderr] 73 | let content_type = props.content_type.clone().unwrap_or(String::from("")); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `unwrap_or_else(|| String::from(""))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] [INFO] [stderr] warning: casting i8 to i64 may become silently lossy if types change [INFO] [stderr] --> src/output.rs:121:53 [INFO] [stderr] | [INFO] [stderr] 121 | TableEntry::ShortShortInt(v) => Json::I64(v as i64), [INFO] [stderr] | ^^^^^^^^ help: try: `i64::from(v)` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::cast_lossless)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u64 may become silently lossy if types change [INFO] [stderr] --> src/output.rs:122:53 [INFO] [stderr] | [INFO] [stderr] 122 | TableEntry::ShortShortUint(v) => Json::U64(v as u64), [INFO] [stderr] | ^^^^^^^^ help: try: `u64::from(v)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting i16 to i64 may become silently lossy if types change [INFO] [stderr] --> src/output.rs:123:53 [INFO] [stderr] | [INFO] [stderr] 123 | TableEntry::ShortInt(v) => Json::I64(v as i64), [INFO] [stderr] | ^^^^^^^^ help: try: `i64::from(v)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u16 to u64 may become silently lossy if types change [INFO] [stderr] --> src/output.rs:124:53 [INFO] [stderr] | [INFO] [stderr] 124 | TableEntry::ShortUint(v) => Json::U64(v as u64), [INFO] [stderr] | ^^^^^^^^ help: try: `u64::from(v)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting i32 to i64 may become silently lossy if types change [INFO] [stderr] --> src/output.rs:125:53 [INFO] [stderr] | [INFO] [stderr] 125 | TableEntry::LongInt(v) => Json::I64(v as i64), [INFO] [stderr] | ^^^^^^^^ help: try: `i64::from(v)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u32 to u64 may become silently lossy if types change [INFO] [stderr] --> src/output.rs:126:53 [INFO] [stderr] | [INFO] [stderr] 126 | TableEntry::LongUint(v) => Json::U64(v as u64), [INFO] [stderr] | ^^^^^^^^ help: try: `u64::from(v)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting f32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/output.rs:129:53 [INFO] [stderr] | [INFO] [stderr] 129 | TableEntry::Float(v) => Json::F64(v as f64), [INFO] [stderr] | ^^^^^^^^ help: try: `f64::from(v)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u32 may become silently lossy if types change [INFO] [stderr] --> src/output.rs:141:43 [INFO] [stderr] | [INFO] [stderr] 141 | let ten:f64 = (10 as u64).pow(decimals as u32) as f64; [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: try: `u32::from(decimals)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/output.rs:142:27 [INFO] [stderr] | [INFO] [stderr] 142 | let dec:f64 = (v as f64) / ten; [INFO] [stderr] | ^^^^^^^^^^ help: try: `f64::from(v)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: writing `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> src/publish.rs:17:24 [INFO] [stderr] | [INFO] [stderr] 17 | fn type_from_file(file:&String) -> Result { [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: use of `unwrap_or` followed by a function call [INFO] [stderr] --> src/publish.rs:61:60 [INFO] [stderr] | [INFO] [stderr] 61 | headers: values_t!(matches, "header", String).unwrap_or(vec![]), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: try this: `unwrap_or_else(|_| vec![])` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to match on a boolean expression [INFO] [stderr] --> src/publish.rs:69:23 [INFO] [stderr] | [INFO] [stderr] 69 | let rpc_receive = match rpc { [INFO] [stderr] | _______________________^ [INFO] [stderr] 70 | | false => None, [INFO] [stderr] 71 | | true => { [INFO] [stderr] 72 | | let receive = [INFO] [stderr] ... | [INFO] [stderr] 105 | | } [INFO] [stderr] 106 | | }; [INFO] [stderr] | |_____^ [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] help: consider using an if/else expression [INFO] [stderr] | [INFO] [stderr] 69 | let rpc_receive = if rpc { [INFO] [stderr] 70 | let receive = [INFO] [stderr] 71 | move |channel: &mut Channel, deliver:Deliver, props:BasicProperties, body:Vec| -> [INFO] [stderr] 72 | Result<(),RbtError> { [INFO] [stderr] 73 | let msg = output::build_output(false, &deliver, &props, body)?; [INFO] [stderr] 74 | [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] error: handle written amount returned or use `Write::write_all` instead [INFO] [stderr] --> src/publish.rs:83:21 [INFO] [stderr] | [INFO] [stderr] 83 | handle.write(&msg)?; [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] error: handle written amount returned or use `Write::write_all` instead [INFO] [stderr] --> src/publish.rs:84:21 [INFO] [stderr] | [INFO] [stderr] 84 | handle.write(b"\n")?; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_io_amount [INFO] [stderr] [INFO] [stderr] error: handle written amount returned or use `Write::write_all` instead [INFO] [stderr] --> src/subscribe.rs:50:17 [INFO] [stderr] | [INFO] [stderr] 50 | handle.write(&msg)?; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_io_amount [INFO] [stderr] [INFO] [stderr] error: handle written amount returned or use `Write::write_all` instead [INFO] [stderr] --> src/subscribe.rs:51:17 [INFO] [stderr] | [INFO] [stderr] 51 | handle.write(b"\n")?; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [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: use of `unwrap_or` followed by a function call [INFO] [stderr] --> src/subscribe.rs:105:36 [INFO] [stderr] | [INFO] [stderr] 105 | props.content_type.clone().unwrap_or("application/octet-stream".to_owned()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `unwrap_or_else(|| "application/octet-stream".to_owned())` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] [INFO] [stderr] error: aborting due to 4 previous errors [INFO] [stderr] [INFO] [stderr] error: Could not compile `rabbiteer`. [INFO] [stderr] warning: build failed, waiting for other jobs to finish... [INFO] [stderr] warning: identical conversion [INFO] [stderr] --> src/client.rs:52:70 [INFO] [stderr] | [INFO] [stderr] 52 | headers.insert("fileName".to_owned(), TableEntry::LongString(String::from(s.file_name))); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider removing `String::from()`: `s.file_name` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::identity_conversion)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_conversion [INFO] [stderr] [INFO] [stderr] warning: this creates an owned instance just for comparison [INFO] [stderr] --> src/client.rs:108:45 [INFO] [stderr] | [INFO] [stderr] 108 | if err.description() == "timed out waiting on channel".to_string() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `"timed out waiting on channel"` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::cmp_owned)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cmp_owned [INFO] [stderr] [INFO] [stderr] warning: this boolean expression can be simplified [INFO] [stderr] --> src/client.rs:129:8 [INFO] [stderr] | [INFO] [stderr] 129 | if !boolv.is_err() { [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: try: `boolv.is_ok()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::nonminimal_bool)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#nonminimal_bool [INFO] [stderr] [INFO] [stderr] warning: this boolean expression can be simplified [INFO] [stderr] --> src/client.rs:133:12 [INFO] [stderr] | [INFO] [stderr] 133 | if !doublev.is_err() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: try: `doublev.is_ok()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#nonminimal_bool [INFO] [stderr] [INFO] [stderr] warning: using `clone` on a `Copy` type [INFO] [stderr] --> src/client.rs:154:28 [INFO] [stderr] | [INFO] [stderr] 154 | let delivery_tag = deliver.delivery_tag.clone(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `deliver.delivery_tag` [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: redundant pattern matching, consider using `is_none()` [INFO] [stderr] --> src/client.rs:203:20 [INFO] [stderr] | [INFO] [stderr] 203 | if let None = bind_routing_key { [INFO] [stderr] | _____________- ^^^^ [INFO] [stderr] 204 | | bind_routing_key = Some("#".to_owned()); // Default the routing key [INFO] [stderr] 205 | | } [INFO] [stderr] | |_____________- help: try this: `if bind_routing_key.is_none()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::redundant_pattern_matching)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_pattern_matching [INFO] [stderr] [INFO] [stderr] warning: use of `unwrap_or` followed by a function call [INFO] [stderr] --> src/client.rs:210:47 [INFO] [stderr] | [INFO] [stderr] 210 | q.clone().unwrap_or("".to_owned()) , [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `unwrap_or_else(|| "".to_owned())` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::or_fun_call)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] [INFO] [stderr] warning: using `clone` on a `Copy` type [INFO] [stderr] --> src/output.rs:37:26 [INFO] [stderr] | [INFO] [stderr] 37 | delivery_tag:deliver.delivery_tag.clone(), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `deliver.delivery_tag` [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/output.rs:38:25 [INFO] [stderr] | [INFO] [stderr] 38 | redelivered:deliver.redelivered.clone(), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `deliver.redelivered` [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: use of `unwrap_or` followed by a function call [INFO] [stderr] --> src/output.rs:43:55 [INFO] [stderr] | [INFO] [stderr] 43 | let content_type = props.content_type.clone().unwrap_or(String::from("")); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `unwrap_or_else(|| String::from(""))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] [INFO] [stderr] warning: use of `unwrap_or` followed by a function call [INFO] [stderr] --> src/output.rs:73:55 [INFO] [stderr] | [INFO] [stderr] 73 | let content_type = props.content_type.clone().unwrap_or(String::from("")); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `unwrap_or_else(|| String::from(""))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] [INFO] [stderr] warning: casting i8 to i64 may become silently lossy if types change [INFO] [stderr] --> src/output.rs:121:53 [INFO] [stderr] | [INFO] [stderr] 121 | TableEntry::ShortShortInt(v) => Json::I64(v as i64), [INFO] [stderr] | ^^^^^^^^ help: try: `i64::from(v)` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::cast_lossless)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u64 may become silently lossy if types change [INFO] [stderr] --> src/output.rs:122:53 [INFO] [stderr] | [INFO] [stderr] 122 | TableEntry::ShortShortUint(v) => Json::U64(v as u64), [INFO] [stderr] | ^^^^^^^^ help: try: `u64::from(v)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting i16 to i64 may become silently lossy if types change [INFO] [stderr] --> src/output.rs:123:53 [INFO] [stderr] | [INFO] [stderr] 123 | TableEntry::ShortInt(v) => Json::I64(v as i64), [INFO] [stderr] | ^^^^^^^^ help: try: `i64::from(v)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u16 to u64 may become silently lossy if types change [INFO] [stderr] --> src/output.rs:124:53 [INFO] [stderr] | [INFO] [stderr] 124 | TableEntry::ShortUint(v) => Json::U64(v as u64), [INFO] [stderr] | ^^^^^^^^ help: try: `u64::from(v)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting i32 to i64 may become silently lossy if types change [INFO] [stderr] --> src/output.rs:125:53 [INFO] [stderr] | [INFO] [stderr] 125 | TableEntry::LongInt(v) => Json::I64(v as i64), [INFO] [stderr] | ^^^^^^^^ help: try: `i64::from(v)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u32 to u64 may become silently lossy if types change [INFO] [stderr] --> src/output.rs:126:53 [INFO] [stderr] | [INFO] [stderr] 126 | TableEntry::LongUint(v) => Json::U64(v as u64), [INFO] [stderr] | ^^^^^^^^ help: try: `u64::from(v)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting f32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/output.rs:129:53 [INFO] [stderr] | [INFO] [stderr] 129 | TableEntry::Float(v) => Json::F64(v as f64), [INFO] [stderr] | ^^^^^^^^ help: try: `f64::from(v)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u32 may become silently lossy if types change [INFO] [stderr] --> src/output.rs:141:43 [INFO] [stderr] | [INFO] [stderr] 141 | let ten:f64 = (10 as u64).pow(decimals as u32) as f64; [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: try: `u32::from(decimals)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/output.rs:142:27 [INFO] [stderr] | [INFO] [stderr] 142 | let dec:f64 = (v as f64) / ten; [INFO] [stderr] | ^^^^^^^^^^ help: try: `f64::from(v)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: writing `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> src/publish.rs:17:24 [INFO] [stderr] | [INFO] [stderr] 17 | fn type_from_file(file:&String) -> Result { [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: use of `unwrap_or` followed by a function call [INFO] [stderr] --> src/publish.rs:61:60 [INFO] [stderr] | [INFO] [stderr] 61 | headers: values_t!(matches, "header", String).unwrap_or(vec![]), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: try this: `unwrap_or_else(|_| vec![])` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to match on a boolean expression [INFO] [stderr] --> src/publish.rs:69:23 [INFO] [stderr] | [INFO] [stderr] 69 | let rpc_receive = match rpc { [INFO] [stderr] | _______________________^ [INFO] [stderr] 70 | | false => None, [INFO] [stderr] 71 | | true => { [INFO] [stderr] 72 | | let receive = [INFO] [stderr] ... | [INFO] [stderr] 105 | | } [INFO] [stderr] 106 | | }; [INFO] [stderr] | |_____^ [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] help: consider using an if/else expression [INFO] [stderr] | [INFO] [stderr] 69 | let rpc_receive = if rpc { [INFO] [stderr] 70 | let receive = [INFO] [stderr] 71 | move |channel: &mut Channel, deliver:Deliver, props:BasicProperties, body:Vec| -> [INFO] [stderr] 72 | Result<(),RbtError> { [INFO] [stderr] 73 | let msg = output::build_output(false, &deliver, &props, body)?; [INFO] [stderr] 74 | [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] error: handle written amount returned or use `Write::write_all` instead [INFO] [stderr] --> src/publish.rs:83:21 [INFO] [stderr] | [INFO] [stderr] 83 | handle.write(&msg)?; [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] error: handle written amount returned or use `Write::write_all` instead [INFO] [stderr] --> src/publish.rs:84:21 [INFO] [stderr] | [INFO] [stderr] 84 | handle.write(b"\n")?; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_io_amount [INFO] [stderr] [INFO] [stderr] error: handle written amount returned or use `Write::write_all` instead [INFO] [stderr] --> src/subscribe.rs:50:17 [INFO] [stderr] | [INFO] [stderr] 50 | handle.write(&msg)?; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_io_amount [INFO] [stderr] [INFO] [stderr] error: handle written amount returned or use `Write::write_all` instead [INFO] [stderr] --> src/subscribe.rs:51:17 [INFO] [stderr] | [INFO] [stderr] 51 | handle.write(b"\n")?; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [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: use of `unwrap_or` followed by a function call [INFO] [stderr] --> src/subscribe.rs:105:36 [INFO] [stderr] | [INFO] [stderr] 105 | props.content_type.clone().unwrap_or("application/octet-stream".to_owned()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `unwrap_or_else(|| "application/octet-stream".to_owned())` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] [INFO] [stderr] error: aborting due to 4 previous errors [INFO] [stderr] [INFO] [stderr] error: Could not compile `rabbiteer`. [INFO] [stderr] [INFO] [stderr] To learn more, run the command again with --verbose. [INFO] running `"docker" "inspect" "1db0c748e087a72ffd5c613e021d143678a3eb4aca0e6004f159d94d67287497"` [INFO] running `"docker" "rm" "-f" "1db0c748e087a72ffd5c613e021d143678a3eb4aca0e6004f159d94d67287497"` [INFO] [stdout] 1db0c748e087a72ffd5c613e021d143678a3eb4aca0e6004f159d94d67287497