[INFO] crate dbus 0.6.3 is already in cache [INFO] extracting crate dbus 0.6.3 into work/ex/clippy-test-run/sources/stable/reg/dbus/0.6.3 [INFO] extracting crate dbus 0.6.3 into work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/reg/dbus/0.6.3 [INFO] validating manifest of dbus-0.6.3 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 dbus-0.6.3 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 dbus-0.6.3 [INFO] finished frobbing dbus-0.6.3 [INFO] frobbed toml for dbus-0.6.3 written to work/ex/clippy-test-run/sources/stable/reg/dbus/0.6.3/Cargo.toml [INFO] started frobbing dbus-0.6.3 [INFO] finished frobbing dbus-0.6.3 [INFO] frobbed toml for dbus-0.6.3 written to work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/reg/dbus/0.6.3/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 dbus-0.6.3 against stable for clippy-test-run [INFO] running `"docker" "create" "-v" "/mnt/big/crater/work/local/target-dirs/clippy-test-run/worker-7/stable:/opt/crater/target:rw,Z" "-v" "/mnt/big/crater/work/ex/clippy-test-run/sources/stable/reg/dbus/0.6.3:/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] 56b0d1a41033616473521d51948611b28ad29eeb309d5bea9b1edf2bbeee954e [INFO] running `"docker" "start" "-a" "56b0d1a41033616473521d51948611b28ad29eeb309d5bea9b1edf2bbeee954e"` [INFO] [stderr] Checking dbus v0.6.3 (/opt/crater/workdir) [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/message.rs:35:19 [INFO] [stderr] | [INFO] [stderr] 35 | OwnedFd { fd: fd } [INFO] [stderr] | ^^^^^^ help: replace it with: `fd` [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/message.rs:77:35 [INFO] [stderr] | [INFO] [stderr] 77 | let a = MessageItemArray {v: v, sig: sig }; [INFO] [stderr] | ^^^^ help: replace it with: `v` [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/message.rs:77:41 [INFO] [stderr] | [INFO] [stderr] 77 | let a = MessageItemArray {v: v, sig: sig }; [INFO] [stderr] | ^^^^^^^^ help: replace it with: `sig` [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: 5th binding whose name is just one char [INFO] [stderr] --> src/message.rs:355:21 [INFO] [stderr] | [INFO] [stderr] 355 | let a = MessageItem::from_iter(&mut subiter); [INFO] [stderr] | ^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::many_single_char_names)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#many_single_char_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/prop.rs:21:13 [INFO] [stderr] | [INFO] [stderr] 21 | timeout_ms: timeout_ms, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `timeout_ms` [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/prop.rs:22:13 [INFO] [stderr] | [INFO] [stderr] 22 | conn: conn, [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `conn` [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: 5th binding whose name is just one char [INFO] [stderr] --> src/prop.rs:65:22 [INFO] [stderr] | [INFO] [stderr] 65 | let (k, v) = try!(p.inner()); [INFO] [stderr] | ^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#many_single_char_names [INFO] [stderr] [INFO] [stderr] warning: 6th binding whose name is just one char [INFO] [stderr] --> src/prop.rs:65:25 [INFO] [stderr] | [INFO] [stderr] 65 | let (k, v) = try!(p.inner()); [INFO] [stderr] | ^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#many_single_char_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/prop.rs:86:23 [INFO] [stderr] | [INFO] [stderr] 86 | PropHandler { p: p, map: BTreeMap::new() } [INFO] [stderr] | ^^^^ help: replace it with: `p` [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/connection.rs:107:13 [INFO] [stderr] | [INFO] [stderr] 107 | end_on_timeout: end_on_timeout, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `end_on_timeout` [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: 5th binding whose name is just one char [INFO] [stderr] --> src/connection.rs:439:17 [INFO] [stderr] | [INFO] [stderr] 439 | let s = unsafe { [INFO] [stderr] | ^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#many_single_char_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/tree/methodtype.rs:222:56 [INFO] [stderr] | [INFO] [stderr] 222 | PropInfo { msg: self.msg, method: self.method, iface: iface, prop: prop, path: self.path, tree: self.tree } [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `iface` [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/tree/methodtype.rs:222:70 [INFO] [stderr] | [INFO] [stderr] 222 | PropInfo { msg: self.msg, method: self.method, iface: iface, prop: prop, path: self.path, tree: self.tree } [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `prop` [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/tree/leaves.rs:88:102 [INFO] [stderr] | [INFO] [stderr] 88 | Method { name: n, i_args: vec!(), o_args: vec!(), anns: Annotations::new(), cb: DebugMethod(cb), data: data } [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `data` [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/tree/leaves.rs:157:68 [INFO] [stderr] | [INFO] [stderr] 157 | Signal { name: n, arguments: vec!(), anns: Annotations::new(), data: data } [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `data` [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/tree/leaves.rs:482:9 [INFO] [stderr] | [INFO] [stderr] 482 | sig: sig, anns: Annotations::new(), set_cb: None, get_cb: None, data: data [INFO] [stderr] | ^^^^^^^^ help: replace it with: `sig` [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/tree/leaves.rs:482:73 [INFO] [stderr] | [INFO] [stderr] 482 | sig: sig, anns: Annotations::new(), set_cb: None, get_cb: None, data: data [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `data` [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:109:16 [INFO] [stderr] | [INFO] [stderr] 109 | Error{ e: e } [INFO] [stderr] | ^^^^ help: replace it with: `e` [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/message.rs:35:19 [INFO] [stderr] | [INFO] [stderr] 35 | OwnedFd { fd: fd } [INFO] [stderr] | ^^^^^^ help: replace it with: `fd` [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/message.rs:77:35 [INFO] [stderr] | [INFO] [stderr] 77 | let a = MessageItemArray {v: v, sig: sig }; [INFO] [stderr] | ^^^^ help: replace it with: `v` [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/message.rs:77:41 [INFO] [stderr] | [INFO] [stderr] 77 | let a = MessageItemArray {v: v, sig: sig }; [INFO] [stderr] | ^^^^^^^^ help: replace it with: `sig` [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: 5th binding whose name is just one char [INFO] [stderr] --> src/message.rs:355:21 [INFO] [stderr] | [INFO] [stderr] 355 | let a = MessageItem::from_iter(&mut subiter); [INFO] [stderr] | ^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::many_single_char_names)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#many_single_char_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/prop.rs:21:13 [INFO] [stderr] | [INFO] [stderr] 21 | timeout_ms: timeout_ms, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `timeout_ms` [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/prop.rs:22:13 [INFO] [stderr] | [INFO] [stderr] 22 | conn: conn, [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `conn` [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: 5th binding whose name is just one char [INFO] [stderr] --> src/prop.rs:65:22 [INFO] [stderr] | [INFO] [stderr] 65 | let (k, v) = try!(p.inner()); [INFO] [stderr] | ^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#many_single_char_names [INFO] [stderr] [INFO] [stderr] warning: 6th binding whose name is just one char [INFO] [stderr] --> src/prop.rs:65:25 [INFO] [stderr] | [INFO] [stderr] 65 | let (k, v) = try!(p.inner()); [INFO] [stderr] | ^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#many_single_char_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/prop.rs:86:23 [INFO] [stderr] | [INFO] [stderr] 86 | PropHandler { p: p, map: BTreeMap::new() } [INFO] [stderr] | ^^^^ help: replace it with: `p` [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/connection.rs:107:13 [INFO] [stderr] | [INFO] [stderr] 107 | end_on_timeout: end_on_timeout, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `end_on_timeout` [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: 5th binding whose name is just one char [INFO] [stderr] --> src/connection.rs:439:17 [INFO] [stderr] | [INFO] [stderr] 439 | let s = unsafe { [INFO] [stderr] | ^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#many_single_char_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/tree/methodtype.rs:222:56 [INFO] [stderr] | [INFO] [stderr] 222 | PropInfo { msg: self.msg, method: self.method, iface: iface, prop: prop, path: self.path, tree: self.tree } [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `iface` [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/tree/methodtype.rs:222:70 [INFO] [stderr] | [INFO] [stderr] 222 | PropInfo { msg: self.msg, method: self.method, iface: iface, prop: prop, path: self.path, tree: self.tree } [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `prop` [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/tree/leaves.rs:88:102 [INFO] [stderr] | [INFO] [stderr] 88 | Method { name: n, i_args: vec!(), o_args: vec!(), anns: Annotations::new(), cb: DebugMethod(cb), data: data } [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `data` [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/tree/leaves.rs:157:68 [INFO] [stderr] | [INFO] [stderr] 157 | Signal { name: n, arguments: vec!(), anns: Annotations::new(), data: data } [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `data` [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/tree/leaves.rs:482:9 [INFO] [stderr] | [INFO] [stderr] 482 | sig: sig, anns: Annotations::new(), set_cb: None, get_cb: None, data: data [INFO] [stderr] | ^^^^^^^^ help: replace it with: `sig` [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/tree/leaves.rs:482:73 [INFO] [stderr] | [INFO] [stderr] 482 | sig: sig, anns: Annotations::new(), set_cb: None, get_cb: None, data: data [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `data` [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:109:16 [INFO] [stderr] | [INFO] [stderr] 109 | Error{ e: e } [INFO] [stderr] | ^^^^ help: replace it with: `e` [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/prop.rs:39:8 [INFO] [stderr] | [INFO] [stderr] 39 | return Err(Error::new_custom("InvalidReply", &f)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `Err(Error::new_custom("InvalidReply", &f))` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_return)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/connection.rs:712:9 [INFO] [stderr] | [INFO] [stderr] 712 | return Some(MsgHandlerResult { handled: true, done: true, reply: Vec::new() }) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `Some(MsgHandlerResult { handled: true, done: true, reply: Vec::new() })` [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/arg/msgarg.rs:20:32 [INFO] [stderr] | [INFO] [stderr] 20 | fn arg_type() -> ArgType { return Self::ARG_TYPE; } [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `Self::ARG_TYPE` [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: Constants have by default a `'static` lifetime [INFO] [stderr] --> src/arg/mod.rs:356:34 [INFO] [stderr] | [INFO] [stderr] 356 | const ALL_ARG_TYPES: [(ArgType, &'static str); 18] = [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: returning the result of a let binding from a block. Consider returning the expression directly. [INFO] [stderr] --> src/tree/methodtype.rs:250:5 [INFO] [stderr] | [INFO] [stderr] 250 | i [INFO] [stderr] | ^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::let_and_return)] on by default [INFO] [stderr] note: this expression can be directly returned [INFO] [stderr] --> src/tree/methodtype.rs:249:13 [INFO] [stderr] | [INFO] [stderr] 249 | let i = i.add_m(m); [INFO] [stderr] | ^^^^^^^^^^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#let_and_return [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/message.rs:1045:13 [INFO] [stderr] | [INFO] [stderr] 1045 | 987654321u64.into(), [INFO] [stderr] | ^^^^^^^^^^^^ help: consider: `987_654_321u64` [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: long literal lacking separators [INFO] [stderr] --> src/message.rs:1051:42 [INFO] [stderr] | [INFO] [stderr] 1051 | MessageItem::new_array(vec!((123543u32.into(), true.into()).into())).unwrap() [INFO] [stderr] | ^^^^^^^^^ help: consider: `123_543u32` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/prop.rs:39:8 [INFO] [stderr] | [INFO] [stderr] 39 | return Err(Error::new_custom("InvalidReply", &f)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `Err(Error::new_custom("InvalidReply", &f))` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_return)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/connection.rs:712:9 [INFO] [stderr] | [INFO] [stderr] 712 | return Some(MsgHandlerResult { handled: true, done: true, reply: Vec::new() }) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `Some(MsgHandlerResult { handled: true, done: true, reply: Vec::new() })` [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/arg/msgarg.rs:20:32 [INFO] [stderr] | [INFO] [stderr] 20 | fn arg_type() -> ArgType { return Self::ARG_TYPE; } [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `Self::ARG_TYPE` [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/arg/msgarg.rs:284:18 [INFO] [stderr] | [INFO] [stderr] 284 | z.insert(123543u32, true); [INFO] [stderr] | ^^^^^^^^^ help: consider: `123_543u32` [INFO] [stderr] | [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/arg/mod.rs:356:34 [INFO] [stderr] | [INFO] [stderr] 356 | const ALL_ARG_TYPES: [(ArgType, &'static str); 18] = [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: returning the result of a let binding from a block. Consider returning the expression directly. [INFO] [stderr] --> src/tree/methodtype.rs:250:5 [INFO] [stderr] | [INFO] [stderr] 250 | i [INFO] [stderr] | ^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::let_and_return)] on by default [INFO] [stderr] note: this expression can be directly returned [INFO] [stderr] --> src/tree/methodtype.rs:249:13 [INFO] [stderr] | [INFO] [stderr] 249 | let i = i.add_m(m); [INFO] [stderr] | ^^^^^^^^^^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#let_and_return [INFO] [stderr] [INFO] [stderr] error: useless lint attribute [INFO] [stderr] --> src/lib.rs:41:1 [INFO] [stderr] | [INFO] [stderr] 41 | #[allow(missing_docs)] [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: if you just forgot a `!`, use: `#![allow(missing_docs)]` [INFO] [stderr] | [INFO] [stderr] = note: #[deny(clippy::useless_attribute)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_attribute [INFO] [stderr] [INFO] [stderr] warning: transmute from a reference to a pointer [INFO] [stderr] --> src/message.rs:170:30 [INFO] [stderr] | [INFO] [stderr] 170 | let p: *mut c_void = mem::transmute(&mut c); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: try: `&mut c as *mut i64 as *mut libc::c_void` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::useless_transmute)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_transmute [INFO] [stderr] [INFO] [stderr] warning: transmute from a reference to a pointer [INFO] [stderr] --> src/message.rs:179:30 [INFO] [stderr] | [INFO] [stderr] 179 | let p: *mut c_void = mem::transmute(&mut c); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: try: `&mut c as *mut f64 as *mut libc::c_void` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_transmute [INFO] [stderr] [INFO] [stderr] warning: transmute from a reference to a pointer [INFO] [stderr] --> src/message.rs:187:32 [INFO] [stderr] | [INFO] [stderr] 187 | let p: *const c_void = mem::transmute(&v); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: try: `&v as *const f64 as *const libc::c_void` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_transmute [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/message.rs:266:17 [INFO] [stderr] | [INFO] [stderr] 266 | let s = match self { [INFO] [stderr] | _________________^ [INFO] [stderr] 267 | | &MessageItem::Str(_) => ffi::DBUS_TYPE_STRING, [INFO] [stderr] 268 | | &MessageItem::Bool(_) => ffi::DBUS_TYPE_BOOLEAN, [INFO] [stderr] 269 | | &MessageItem::Byte(_) => ffi::DBUS_TYPE_BYTE, [INFO] [stderr] ... | [INFO] [stderr] 282 | | &MessageItem::UnixFd(_) => ffi::DBUS_TYPE_UNIX_FD, [INFO] [stderr] 283 | | }; [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::match_ref_pats)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 266 | let s = match *self { [INFO] [stderr] 267 | MessageItem::Str(_) => ffi::DBUS_TYPE_STRING, [INFO] [stderr] 268 | MessageItem::Bool(_) => ffi::DBUS_TYPE_BOOLEAN, [INFO] [stderr] 269 | MessageItem::Byte(_) => ffi::DBUS_TYPE_BYTE, [INFO] [stderr] 270 | MessageItem::Int16(_) => ffi::DBUS_TYPE_INT16, [INFO] [stderr] 271 | MessageItem::Int32(_) => ffi::DBUS_TYPE_INT32, [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/message.rs:302:12 [INFO] [stderr] | [INFO] [stderr] 302 | if v.len() == 0 { [INFO] [stderr] | ^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `v.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: length comparison to zero [INFO] [stderr] --> src/message.rs:315:24 [INFO] [stderr] | [INFO] [stderr] 315 | let t = if v.len() == 0 { d = D::default().into(); &d } else { &v[0] }; [INFO] [stderr] | ^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `v.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: You are using an explicit closure for cloning elements [INFO] [stderr] --> src/message.rs:323:33 [INFO] [stderr] | [INFO] [stderr] 323 | MessageItem::new_array2(i.map(|ii| ii.clone())) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: Consider calling the dedicated `cloned` method: `i.cloned()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::map_clone)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_clone [INFO] [stderr] [INFO] [stderr] warning: transmute from a reference to a pointer [INFO] [stderr] --> src/message.rs:366:42 [INFO] [stderr] | [INFO] [stderr] 366 | let p: *mut c_void = mem::transmute(&mut c); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: try: `&mut c as *mut *const i8 as *mut libc::c_void` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_transmute [INFO] [stderr] [INFO] [stderr] warning: transmute from a reference to a pointer [INFO] [stderr] --> src/message.rs:374:42 [INFO] [stderr] | [INFO] [stderr] 374 | let p: *mut c_void = mem::transmute(&mut c); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: try: `&mut c as *mut *const i8 as *mut libc::c_void` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_transmute [INFO] [stderr] [INFO] [stderr] warning: called `ok().expect()` on a Result value. You can call `expect` directly on the `Result` [INFO] [stderr] --> src/message.rs:377:25 [INFO] [stderr] | [INFO] [stderr] 377 | let o = Path::new(c_str_to_slice(&c).expect("D-Bus object path error")).ok().expect("D-Bus object path error"); [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: transmute from a reference to a pointer [INFO] [stderr] --> src/message.rs:406:36 [INFO] [stderr] | [INFO] [stderr] 406 | let p: *const c_void = mem::transmute(&v); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: try: `&v as *const i64 as *const libc::c_void` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_transmute [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/message.rs:412:9 [INFO] [stderr] | [INFO] [stderr] 412 | / match self { [INFO] [stderr] 413 | | &MessageItem::Str(ref s) => unsafe { [INFO] [stderr] 414 | | let c = to_c_str(s); [INFO] [stderr] 415 | | let p = mem::transmute(&c); [INFO] [stderr] ... | [INFO] [stderr] 436 | | } [INFO] [stderr] 437 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 412 | match *self { [INFO] [stderr] 413 | MessageItem::Str(ref s) => unsafe { [INFO] [stderr] 414 | let c = to_c_str(s); [INFO] [stderr] 415 | let p = mem::transmute(&c); [INFO] [stderr] 416 | ffi::dbus_message_iter_append_basic(i, ffi::DBUS_TYPE_STRING, p); [INFO] [stderr] 417 | }, [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: transmute from a reference to a pointer [INFO] [stderr] --> src/message.rs:415:25 [INFO] [stderr] | [INFO] [stderr] 415 | let p = mem::transmute(&c); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: try: `&c as *const std::ffi::CString as *const libc::c_void` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_transmute [INFO] [stderr] [INFO] [stderr] warning: casting u8 to i64 may become silently lossy if types change [INFO] [stderr] --> src/message.rs:419:64 [INFO] [stderr] | [INFO] [stderr] 419 | &MessageItem::Byte(b) => self.iter_append_basic(i, b as i64), [INFO] [stderr] | ^^^^^^^^ help: try: `i64::from(b)` [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 i16 to i64 may become silently lossy if types change [INFO] [stderr] --> src/message.rs:420:65 [INFO] [stderr] | [INFO] [stderr] 420 | &MessageItem::Int16(b) => self.iter_append_basic(i, b as i64), [INFO] [stderr] | ^^^^^^^^ help: try: `i64::from(b)` [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/message.rs:421:65 [INFO] [stderr] | [INFO] [stderr] 421 | &MessageItem::Int32(b) => self.iter_append_basic(i, b as i64), [INFO] [stderr] | ^^^^^^^^ help: try: `i64::from(b)` [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 i64 may become silently lossy if types change [INFO] [stderr] --> src/message.rs:423:66 [INFO] [stderr] | [INFO] [stderr] 423 | &MessageItem::UInt16(b) => self.iter_append_basic(i, b as i64), [INFO] [stderr] | ^^^^^^^^ help: try: `i64::from(b)` [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 i64 may become silently lossy if types change [INFO] [stderr] --> src/message.rs:424:66 [INFO] [stderr] | [INFO] [stderr] 424 | &MessageItem::UInt32(b) => self.iter_append_basic(i, b as i64), [INFO] [stderr] | ^^^^^^^^ help: try: `i64::from(b)` [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/message.rs:426:70 [INFO] [stderr] | [INFO] [stderr] 426 | &MessageItem::UnixFd(ref b) => self.iter_append_basic(i, b.as_raw_fd() as i64), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: try: `i64::from(b.as_raw_fd())` [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: transmute from a reference to a pointer [INFO] [stderr] --> src/message.rs:434:25 [INFO] [stderr] | [INFO] [stderr] 434 | let p = mem::transmute(&c); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: try: `&c as *const *const i8 as *const libc::c_void` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_transmute [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/message.rs:478:17 [INFO] [stderr] | [INFO] [stderr] 478 | if let &MessageItem::$s(ref b) = i { Ok(*b) } else { Err(()) } [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 484 | msgitem_convert!(u8, Byte); [INFO] [stderr] | --------------------------- in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/message.rs:478:17 [INFO] [stderr] | [INFO] [stderr] 478 | if let &MessageItem::$s(ref b) = i { Ok(*b) } else { Err(()) } [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 485 | msgitem_convert!(u64, UInt64); [INFO] [stderr] | ------------------------------ in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/message.rs:478:17 [INFO] [stderr] | [INFO] [stderr] 478 | if let &MessageItem::$s(ref b) = i { Ok(*b) } else { Err(()) } [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 486 | msgitem_convert!(u32, UInt32); [INFO] [stderr] | ------------------------------ in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/message.rs:478:17 [INFO] [stderr] | [INFO] [stderr] 478 | if let &MessageItem::$s(ref b) = i { Ok(*b) } else { Err(()) } [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 487 | msgitem_convert!(u16, UInt16); [INFO] [stderr] | ------------------------------ in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/message.rs:478:17 [INFO] [stderr] | [INFO] [stderr] 478 | if let &MessageItem::$s(ref b) = i { Ok(*b) } else { Err(()) } [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 488 | msgitem_convert!(i16, Int16); [INFO] [stderr] | ----------------------------- in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/message.rs:478:17 [INFO] [stderr] | [INFO] [stderr] 478 | if let &MessageItem::$s(ref b) = i { Ok(*b) } else { Err(()) } [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 489 | msgitem_convert!(i32, Int32); [INFO] [stderr] | ----------------------------- in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/message.rs:478:17 [INFO] [stderr] | [INFO] [stderr] 478 | if let &MessageItem::$s(ref b) = i { Ok(*b) } else { Err(()) } [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 490 | msgitem_convert!(i64, Int64); [INFO] [stderr] | ----------------------------- in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/message.rs:478:17 [INFO] [stderr] | [INFO] [stderr] 478 | if let &MessageItem::$s(ref b) = i { Ok(*b) } else { Err(()) } [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 491 | msgitem_convert!(f64, Double); [INFO] [stderr] | ------------------------------ in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/message.rs:478:17 [INFO] [stderr] | [INFO] [stderr] 478 | if let &MessageItem::$s(ref b) = i { Ok(*b) } else { Err(()) } [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 492 | msgitem_convert!(bool, Bool); [INFO] [stderr] | ----------------------------- in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/message.rs:531:9 [INFO] [stderr] | [INFO] [stderr] 531 | / match i { [INFO] [stderr] 532 | | &MessageItem::Str(ref b) => Ok(&b), [INFO] [stderr] 533 | | &MessageItem::ObjectPath(ref b) => Ok(&b), [INFO] [stderr] 534 | | _ => Err(()), [INFO] [stderr] 535 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 531 | match *i { [INFO] [stderr] 532 | MessageItem::Str(ref b) => Ok(&b), [INFO] [stderr] 533 | MessageItem::ObjectPath(ref b) => Ok(&b), [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/message.rs:540:60 [INFO] [stderr] | [INFO] [stderr] 540 | fn from(i: &'a MessageItem) -> Result<&'a String,()> { if let &MessageItem::Str(ref b) = i { Ok(&b) } else { Err(()) } } [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 540 | fn from(i: &'a MessageItem) -> Result<&'a String,()> { if let MessageItem::Str(ref b) = *i { Ok(&b) } else { Err(()) } } [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ ^^ [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/message.rs:544:67 [INFO] [stderr] | [INFO] [stderr] 544 | fn from(i: &'a MessageItem) -> Result<&'a Path<'static>,()> { if let &MessageItem::ObjectPath(ref b) = i { Ok(&b) } else { Err(()) } } [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 544 | fn from(i: &'a MessageItem) -> Result<&'a Path<'static>,()> { if let MessageItem::ObjectPath(ref b) = *i { Ok(&b) } else { Err(()) } } [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/message.rs:548:65 [INFO] [stderr] | [INFO] [stderr] 548 | fn from(i: &'a MessageItem) -> Result<&'a MessageItem,()> { if let &MessageItem::Variant(ref b) = i { Ok(&**b) } else { Err(()) } } [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 548 | fn from(i: &'a MessageItem) -> Result<&'a MessageItem,()> { if let MessageItem::Variant(ref b) = *i { Ok(&**b) } else { Err(()) } } [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/message.rs:553:9 [INFO] [stderr] | [INFO] [stderr] 553 | / match i { [INFO] [stderr] 554 | | &MessageItem::Array(ref b) => Ok(&b.v), [INFO] [stderr] 555 | | &MessageItem::Struct(ref b) => Ok(&b), [INFO] [stderr] 556 | | _ => Err(()), [INFO] [stderr] 557 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 553 | match *i { [INFO] [stderr] 554 | MessageItem::Array(ref b) => Ok(&b.v), [INFO] [stderr] 555 | MessageItem::Struct(ref b) => Ok(&b), [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/message.rs:566:61 [INFO] [stderr] | [INFO] [stderr] 566 | fn from(i: &'a MessageItem) -> Result<&'a OwnedFd,()> { if let &MessageItem::UnixFd(ref b) = i { Ok(b) } else { Err(()) } } [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 566 | fn from(i: &'a MessageItem) -> Result<&'a OwnedFd,()> { if let MessageItem::UnixFd(ref b) = *i { Ok(b) } else { Err(()) } } [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/message.rs:571:9 [INFO] [stderr] | [INFO] [stderr] 571 | if let &MessageItem::DictEntry(ref k, ref v) = i { Ok((&**k, &**v)) } else { Err(()) } [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 571 | if let MessageItem::DictEntry(ref k, ref v) = *i { Ok((&**k, &**v)) } else { Err(()) } [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ [INFO] [stderr] [INFO] [stderr] warning: Comparing with null is better expressed by the .is_null() method [INFO] [stderr] --> src/message.rs:593:12 [INFO] [stderr] | [INFO] [stderr] 593 | if ptr == ptr::null_mut() { Err("D-Bus error: dbus_message_new_method_call failed".into()) } [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::cmp_null)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cmp_null [INFO] [stderr] [INFO] [stderr] warning: Comparing with null is better expressed by the .is_null() method [INFO] [stderr] --> src/message.rs:604:12 [INFO] [stderr] | [INFO] [stderr] 604 | if ptr == ptr::null_mut() { panic!("D-Bus error: dbus_message_new_signal failed") } [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cmp_null [INFO] [stderr] [INFO] [stderr] warning: Comparing with null is better expressed by the .is_null() method [INFO] [stderr] --> src/message.rs:620:12 [INFO] [stderr] | [INFO] [stderr] 620 | if ptr == ptr::null_mut() { Err("D-Bus error: dbus_message_new_signal failed".into()) } [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cmp_null [INFO] [stderr] [INFO] [stderr] warning: Comparing with null is better expressed by the .is_null() method [INFO] [stderr] --> src/message.rs:630:12 [INFO] [stderr] | [INFO] [stderr] 630 | if ptr == ptr::null_mut() { panic!("D-Bus error: dbus_message_new_signal failed") } [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cmp_null [INFO] [stderr] [INFO] [stderr] warning: Comparing with null is better expressed by the .is_null() method [INFO] [stderr] --> src/message.rs:637:12 [INFO] [stderr] | [INFO] [stderr] 637 | if ptr == ptr::null_mut() { None } else { Some(Message { msg: ptr} ) } [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cmp_null [INFO] [stderr] [INFO] [stderr] warning: Comparing with null is better expressed by the .is_null() method [INFO] [stderr] --> src/message.rs:643:12 [INFO] [stderr] | [INFO] [stderr] 643 | if ptr == ptr::null_mut() { panic!("D-Bus error: dbus_message_new_method_return failed") } [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cmp_null [INFO] [stderr] [INFO] [stderr] warning: Comparing with null is better expressed by the .is_null() method [INFO] [stderr] --> src/message.rs:651:12 [INFO] [stderr] | [INFO] [stderr] 651 | if ptr == ptr::null_mut() { None } else { Some(Message { msg: ptr} ) } [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cmp_null [INFO] [stderr] [INFO] [stderr] warning: Comparing with null is better expressed by the .is_null() method [INFO] [stderr] --> src/message.rs:657:12 [INFO] [stderr] | [INFO] [stderr] 657 | if ptr == ptr::null_mut() { panic!("D-Bus error: dbus_message_new_error failed") } [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cmp_null [INFO] [stderr] [INFO] [stderr] warning: very complex type used. Consider factoring parts into `type` definitions [INFO] [stderr] --> src/message.rs:791:99 [INFO] [stderr] | [INFO] [stderr] 791 | pub fn get5<'a, G1: Get<'a>, G2: Get<'a>, G3: Get<'a>, G4: Get<'a>, G5: Get<'a>>(&'a self) -> (Option, Option, Option, Option, Option) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::type_complexity)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#type_complexity [INFO] [stderr] [INFO] [stderr] warning: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/message.rs:849:5 [INFO] [stderr] | [INFO] [stderr] 849 | pub fn iter_init<'a>(&'a self) -> Iter<'a> { Iter::new(&self) } [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_lifetimes)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stderr] [INFO] [stderr] warning: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/message.rs:856:5 [INFO] [stderr] | [INFO] [stderr] 856 | / fn msg_internal_str<'a>(&'a self, c: *const libc::c_char) -> Option<&'a [u8]> { [INFO] [stderr] 857 | | if c == ptr::null() { None } [INFO] [stderr] 858 | | else { Some( unsafe { CStr::from_ptr(c) }.to_bytes_with_nul()) } [INFO] [stderr] 859 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stderr] [INFO] [stderr] warning: Comparing with null is better expressed by the .is_null() method [INFO] [stderr] --> src/message.rs:857:12 [INFO] [stderr] | [INFO] [stderr] 857 | if c == ptr::null() { None } [INFO] [stderr] | ^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cmp_null [INFO] [stderr] [INFO] [stderr] warning: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/message.rs:862:5 [INFO] [stderr] | [INFO] [stderr] 862 | / pub fn sender<'a>(&'a self) -> Option> { [INFO] [stderr] 863 | | self.msg_internal_str(unsafe { ffi::dbus_message_get_sender(self.msg) }) [INFO] [stderr] 864 | | .map(|s| unsafe { BusName::from_slice_unchecked(s) }) [INFO] [stderr] 865 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stderr] [INFO] [stderr] warning: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/message.rs:879:5 [INFO] [stderr] | [INFO] [stderr] 879 | / pub fn path<'a>(&'a self) -> Option> { [INFO] [stderr] 880 | | self.msg_internal_str(unsafe { ffi::dbus_message_get_path(self.msg) }) [INFO] [stderr] 881 | | .map(|s| unsafe { Path::from_slice_unchecked(s) }) [INFO] [stderr] 882 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stderr] [INFO] [stderr] warning: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/message.rs:885:5 [INFO] [stderr] | [INFO] [stderr] 885 | / pub fn destination<'a>(&'a self) -> Option> { [INFO] [stderr] 886 | | self.msg_internal_str(unsafe { ffi::dbus_message_get_destination(self.msg) }) [INFO] [stderr] 887 | | .map(|s| unsafe { BusName::from_slice_unchecked(s) }) [INFO] [stderr] 888 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stderr] [INFO] [stderr] warning: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/message.rs:899:5 [INFO] [stderr] | [INFO] [stderr] 899 | / pub fn interface<'a>(&'a self) -> Option> { [INFO] [stderr] 900 | | self.msg_internal_str(unsafe { ffi::dbus_message_get_interface(self.msg) }) [INFO] [stderr] 901 | | .map(|s| unsafe { Interface::from_slice_unchecked(s) }) [INFO] [stderr] 902 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stderr] [INFO] [stderr] warning: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/message.rs:905:5 [INFO] [stderr] | [INFO] [stderr] 905 | / pub fn member<'a>(&'a self) -> Option> { [INFO] [stderr] 906 | | self.msg_internal_str(unsafe { ffi::dbus_message_get_member(self.msg) }) [INFO] [stderr] 907 | | .map(|s| unsafe { Member::from_slice_unchecked(s) }) [INFO] [stderr] 908 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stderr] [INFO] [stderr] warning: this lifetime isn't used in the function definition [INFO] [stderr] --> src/message.rs:946:24 [INFO] [stderr] | [INFO] [stderr] 946 | pub fn get_message_ptr<'a>(m: &Message) -> *mut ffi::DBusMessage { [INFO] [stderr] | ^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::extra_unused_lifetimes)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#extra_unused_lifetimes [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to both the expression and the patterns [INFO] [stderr] --> src/prop.rs:34:13 [INFO] [stderr] | [INFO] [stderr] 34 | / if let &MessageItem::Variant(ref v) = &reply[0] { [INFO] [stderr] 35 | | return Ok((**v).clone()) [INFO] [stderr] 36 | | } [INFO] [stderr] | |_____________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: try [INFO] [stderr] | [INFO] [stderr] 34 | if let MessageItem::Variant(ref v) = reply[0] { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: called `.get().unwrap()` on a BTreeMap. Using `[]` is more clear and more concise [INFO] [stderr] --> src/prop.rs:105:12 [INFO] [stderr] | [INFO] [stderr] 105 | Ok(self.map.get(propname).unwrap()) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `&self.map[propname]` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::get_unwrap)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_unwrap [INFO] [stderr] [INFO] [stderr] warning: the operation is ineffective. Consider reducing it to `if (revents & libc::POLLIN) != 0 { WatchEvent::Readable as c_uint } else { 0 }` [INFO] [stderr] --> src/watch.rs:56:9 [INFO] [stderr] | [INFO] [stderr] 56 | / 0 + [INFO] [stderr] 57 | | if (revents & libc::POLLIN) != 0 { WatchEvent::Readable as c_uint } else { 0 } + [INFO] [stderr] | |______________________________________________________________________________________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::identity_op)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_op [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/watch.rs:74:15 [INFO] [stderr] | [INFO] [stderr] 74 | pub fn fd(&self) -> RawFd { self.fd } [INFO] [stderr] | ^^^^^ help: consider passing by value instead: `self` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::trivially_copy_pass_by_ref)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/watch.rs:76:21 [INFO] [stderr] | [INFO] [stderr] 76 | pub fn readable(&self) -> bool { self.read } [INFO] [stderr] | ^^^^^ help: consider passing by value instead: `self` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/watch.rs:78:21 [INFO] [stderr] | [INFO] [stderr] 78 | pub fn writable(&self) -> bool { self.write } [INFO] [stderr] | ^^^^^ help: consider passing by value instead: `self` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/watch.rs:80:22 [INFO] [stderr] | [INFO] [stderr] 80 | pub fn to_pollfd(&self) -> libc::pollfd { [INFO] [stderr] | ^^^^^ help: consider passing by value instead: `self` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: transmute from a pointer type (`*mut libc::c_void`) to a reference type (`&watch::WatchList`) [INFO] [stderr] --> src/watch.rs:168:38 [INFO] [stderr] | [INFO] [stderr] 168 | let wlist: &WatchList = unsafe { mem::transmute(data) }; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: try: `&*(data as *const watch::WatchList)` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::transmute_ptr_to_ref)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#transmute_ptr_to_ref [INFO] [stderr] [INFO] [stderr] warning: transmute from a pointer type (`*mut libc::c_void`) to a reference type (`&watch::WatchList`) [INFO] [stderr] --> src/watch.rs:176:38 [INFO] [stderr] | [INFO] [stderr] 176 | let wlist: &WatchList = unsafe { mem::transmute(data) }; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: try: `&*(data as *const watch::WatchList)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#transmute_ptr_to_ref [INFO] [stderr] [INFO] [stderr] warning: transmute from a pointer type (`*mut libc::c_void`) to a reference type (`&watch::WatchList`) [INFO] [stderr] --> src/watch.rs:183:38 [INFO] [stderr] | [INFO] [stderr] 183 | let wlist: &WatchList = unsafe { mem::transmute(data) }; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: try: `&*(data as *const watch::WatchList)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#transmute_ptr_to_ref [INFO] [stderr] [INFO] [stderr] warning: transmute from a pointer type (`*mut libc::c_void`) to a reference type (`&connection::IConnection`) [INFO] [stderr] --> src/connection.rs:206:36 [INFO] [stderr] | [INFO] [stderr] 206 | let i: &IConnection = unsafe { mem::transmute(user_data) }; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `&*(user_data as *const connection::IConnection)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#transmute_ptr_to_ref [INFO] [stderr] [INFO] [stderr] warning: transmute from a reference to a pointer [INFO] [stderr] --> src/connection.rs:270:80 [INFO] [stderr] | [INFO] [stderr] 270 | ffi::dbus_connection_add_filter(c.conn(), Some(filter_message_cb), mem::transmute(&*c.i), None) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: try: `&*c.i as *const connection::IConnection as *mut libc::c_void` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_transmute [INFO] [stderr] [INFO] [stderr] warning: Comparing with null is better expressed by the .is_null() method [INFO] [stderr] --> src/connection.rs:281:12 [INFO] [stderr] | [INFO] [stderr] 281 | if conn == ptr::null_mut() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cmp_null [INFO] [stderr] [INFO] [stderr] warning: Comparing with null is better expressed by the .is_null() method [INFO] [stderr] --> src/connection.rs:293:12 [INFO] [stderr] | [INFO] [stderr] 293 | if conn == ptr::null_mut() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cmp_null [INFO] [stderr] [INFO] [stderr] warning: Comparing with null is better expressed by the .is_null() method [INFO] [stderr] --> src/connection.rs:324:12 [INFO] [stderr] | [INFO] [stderr] 324 | if response == ptr::null_mut() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cmp_null [INFO] [stderr] [INFO] [stderr] warning: transmute from a reference to a pointer [INFO] [stderr] --> src/connection.rs:417:42 [INFO] [stderr] | [INFO] [stderr] 417 | let user_data: *mut c_void = mem::transmute(&*self.i); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `&*self.i as *const connection::IConnection as *mut libc::c_void` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_transmute [INFO] [stderr] [INFO] [stderr] warning: Comparing with null is better expressed by the .is_null() method [INFO] [stderr] --> src/connection.rs:441:20 [INFO] [stderr] | [INFO] [stderr] 441 | if *citer == ptr::null_mut() { break }; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cmp_null [INFO] [stderr] [INFO] [stderr] warning: transmute from a pointer type (`*mut *mut i8`) to a reference type (`&*const i8`) [INFO] [stderr] --> src/connection.rs:442:17 [INFO] [stderr] | [INFO] [stderr] 442 | mem::transmute(citer) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: try: `&*(citer as *const *const i8)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#transmute_ptr_to_ref [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/connection.rs:444:20 [INFO] [stderr] | [INFO] [stderr] 444 | v.push(format!("{}", c_str_to_slice(s).unwrap())); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `c_str_to_slice(s).unwrap().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] error: this `if` has identical blocks [INFO] [stderr] --> src/signalargs.rs:56:79 [INFO] [stderr] | [INFO] [stderr] 56 | else if m.interface().as_ref().map(|x| &**x) != Some(Self::INTERFACE) { None } [INFO] [stderr] | ^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[deny(clippy::if_same_then_else)] on by default [INFO] [stderr] note: same as this [INFO] [stderr] --> src/signalargs.rs:55:48 [INFO] [stderr] | [INFO] [stderr] 55 | if m.msg_type() != MessageType::Signal { None } [INFO] [stderr] | ^^^^^^^^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#if_same_then_else [INFO] [stderr] [INFO] [stderr] warning: called `map(f)` on an Option value where `f` is a unit closure [INFO] [stderr] --> src/signalargs.rs:69:9 [INFO] [stderr] | [INFO] [stderr] 69 | sender.map(|s| r += &format!(",sender='{}'", s)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^- [INFO] [stderr] | | [INFO] [stderr] | help: try this: `if let Some(s) = sender { ... }` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::option_map_unit_fn)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#option_map_unit_fn [INFO] [stderr] [INFO] [stderr] warning: called `map(f)` on an Option value where `f` is a unit closure [INFO] [stderr] --> src/signalargs.rs:70:9 [INFO] [stderr] | [INFO] [stderr] 70 | path.map(|s| r += &format!(",path='{}'", s)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^- [INFO] [stderr] | | [INFO] [stderr] | help: try this: `if let Some(s) = path { ... }` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#option_map_unit_fn [INFO] [stderr] [INFO] [stderr] warning: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/arg/msgarg.rs:170:5 [INFO] [stderr] | [INFO] [stderr] 170 | fn as_any_mut<'a>(&'a mut $ss) -> &'a mut any::Any where T: 'static { $make_mut.as_any_mut() } [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 201 | deref_impl!(Box, self, &mut **self ); [INFO] [stderr] | ------------------------------------- in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stderr] [INFO] [stderr] warning: redundant closure found [INFO] [stderr] --> src/arg/msgarg.rs:191:62 [INFO] [stderr] | [INFO] [stderr] 191 | fn get(i: &mut Iter<'a>) -> Option { T::get(i).map(|v| $t::new(v)) } [INFO] [stderr] | ^^^^^^^^^^^^^^ help: remove closure as shown: `$t::new` [INFO] [stderr] ... [INFO] [stderr] 201 | deref_impl!(Box, self, &mut **self ); [INFO] [stderr] | ------------------------------------- in this macro invocation [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::redundant_closure)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stderr] [INFO] [stderr] warning: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/arg/msgarg.rs:170:5 [INFO] [stderr] | [INFO] [stderr] 170 | fn as_any_mut<'a>(&'a mut $ss) -> &'a mut any::Any where T: 'static { $make_mut.as_any_mut() } [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 202 | deref_impl!(Rc, self, Rc::get_mut(self).unwrap()); [INFO] [stderr] | -------------------------------------------------- in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stderr] [INFO] [stderr] warning: redundant closure found [INFO] [stderr] --> src/arg/msgarg.rs:191:62 [INFO] [stderr] | [INFO] [stderr] 191 | fn get(i: &mut Iter<'a>) -> Option { T::get(i).map(|v| $t::new(v)) } [INFO] [stderr] | ^^^^^^^^^^^^^^ help: remove closure as shown: `$t::new` [INFO] [stderr] ... [INFO] [stderr] 202 | deref_impl!(Rc, self, Rc::get_mut(self).unwrap()); [INFO] [stderr] | -------------------------------------------------- in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stderr] [INFO] [stderr] warning: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/arg/msgarg.rs:170:5 [INFO] [stderr] | [INFO] [stderr] 170 | fn as_any_mut<'a>(&'a mut $ss) -> &'a mut any::Any where T: 'static { $make_mut.as_any_mut() } [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 203 | deref_impl!(Arc, self, Arc::get_mut(self).unwrap()); [INFO] [stderr] | ---------------------------------------------------- in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stderr] [INFO] [stderr] warning: redundant closure found [INFO] [stderr] --> src/arg/msgarg.rs:191:62 [INFO] [stderr] | [INFO] [stderr] 191 | fn get(i: &mut Iter<'a>) -> Option { T::get(i).map(|v| $t::new(v)) } [INFO] [stderr] | ^^^^^^^^^^^^^^ help: remove closure as shown: `$t::new` [INFO] [stderr] ... [INFO] [stderr] 203 | deref_impl!(Arc, self, Arc::get_mut(self).unwrap()); [INFO] [stderr] | ---------------------------------------------------- in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stderr] [INFO] [stderr] warning: casting u8 to i64 may become silently lossy if types change [INFO] [stderr] --> src/arg/basic_impl.rs:71:83 [INFO] [stderr] | [INFO] [stderr] 71 | fn append(self, i: &mut IterAppend) { arg_append_basic(&mut i.0, ArgType::$s, self as i64) } [INFO] [stderr] | ^^^^^^^^^^^ help: try: `i64::from(self)` [INFO] [stderr] ... [INFO] [stderr] 104 | integer_impl!(u8, Byte, b"y\0", i, Some(i as i64), u, Some(u as u64), f, Some(f as f64)); [INFO] [stderr] | -------------------------------------------------------------------------------------------- in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u8 to i64 may become silently lossy if types change [INFO] [stderr] --> src/arg/basic_impl.rs:84:84 [INFO] [stderr] | [INFO] [stderr] 84 | fn append(&self, i: &mut IterAppend) { arg_append_basic(&mut i.0, ArgType::$s, *self as i64) } [INFO] [stderr] | ^^^^^^^^^^^^ help: try: `i64::from(*self)` [INFO] [stderr] ... [INFO] [stderr] 104 | integer_impl!(u8, Byte, b"y\0", i, Some(i as i64), u, Some(u as u64), f, Some(f as f64)); [INFO] [stderr] | -------------------------------------------------------------------------------------------- in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u8 to i64 may become silently lossy if types change [INFO] [stderr] --> src/arg/basic_impl.rs:104:41 [INFO] [stderr] | [INFO] [stderr] 104 | integer_impl!(u8, Byte, b"y\0", i, Some(i as i64), u, Some(u as u64), f, Some(f as f64)); [INFO] [stderr] | ^^^^^^^^ help: try: `i64::from(i)` [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 u64 may become silently lossy if types change [INFO] [stderr] --> src/arg/basic_impl.rs:104:63 [INFO] [stderr] | [INFO] [stderr] 104 | integer_impl!(u8, Byte, b"y\0", i, Some(i as i64), u, Some(u as u64), f, Some(f as f64)); [INFO] [stderr] | ^^^^^^^^ help: try: `u64::from(u)` [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 f64 may become silently lossy if types change [INFO] [stderr] --> src/arg/basic_impl.rs:104:82 [INFO] [stderr] | [INFO] [stderr] 104 | integer_impl!(u8, Byte, b"y\0", i, Some(i as i64), u, Some(u as u64), f, Some(f as f64)); [INFO] [stderr] | ^^^^^^^^ help: try: `f64::from(f)` [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/arg/basic_impl.rs:71:83 [INFO] [stderr] | [INFO] [stderr] 71 | fn append(self, i: &mut IterAppend) { arg_append_basic(&mut i.0, ArgType::$s, self as i64) } [INFO] [stderr] | ^^^^^^^^^^^ help: try: `i64::from(self)` [INFO] [stderr] ... [INFO] [stderr] 105 | integer_impl!(i16, Int16, b"n\0", i, Some(i as i64), _u, None, f, Some(f as f64)); [INFO] [stderr] | -------------------------------------------------------------------------------------------- in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting i16 to i64 may become silently lossy if types change [INFO] [stderr] --> src/arg/basic_impl.rs:84:84 [INFO] [stderr] | [INFO] [stderr] 84 | fn append(&self, i: &mut IterAppend) { arg_append_basic(&mut i.0, ArgType::$s, *self as i64) } [INFO] [stderr] | ^^^^^^^^^^^^ help: try: `i64::from(*self)` [INFO] [stderr] ... [INFO] [stderr] 105 | integer_impl!(i16, Int16, b"n\0", i, Some(i as i64), _u, None, f, Some(f as f64)); [INFO] [stderr] | -------------------------------------------------------------------------------------------- in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting i16 to i64 may become silently lossy if types change [INFO] [stderr] --> src/arg/basic_impl.rs:105:43 [INFO] [stderr] | [INFO] [stderr] 105 | integer_impl!(i16, Int16, b"n\0", i, Some(i as i64), _u, None, f, Some(f as f64)); [INFO] [stderr] | ^^^^^^^^ help: try: `i64::from(i)` [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 f64 may become silently lossy if types change [INFO] [stderr] --> src/arg/basic_impl.rs:105:82 [INFO] [stderr] | [INFO] [stderr] 105 | integer_impl!(i16, Int16, b"n\0", i, Some(i as i64), _u, None, f, Some(f as f64)); [INFO] [stderr] | ^^^^^^^^ help: try: `f64::from(f)` [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 i64 may become silently lossy if types change [INFO] [stderr] --> src/arg/basic_impl.rs:71:83 [INFO] [stderr] | [INFO] [stderr] 71 | fn append(self, i: &mut IterAppend) { arg_append_basic(&mut i.0, ArgType::$s, self as i64) } [INFO] [stderr] | ^^^^^^^^^^^ help: try: `i64::from(self)` [INFO] [stderr] ... [INFO] [stderr] 106 | integer_impl!(u16, UInt16, b"q\0", i, Some(i as i64), u, Some(u as u64), f, Some(f as f64)); [INFO] [stderr] | -------------------------------------------------------------------------------------------- in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u16 to i64 may become silently lossy if types change [INFO] [stderr] --> src/arg/basic_impl.rs:84:84 [INFO] [stderr] | [INFO] [stderr] 84 | fn append(&self, i: &mut IterAppend) { arg_append_basic(&mut i.0, ArgType::$s, *self as i64) } [INFO] [stderr] | ^^^^^^^^^^^^ help: try: `i64::from(*self)` [INFO] [stderr] ... [INFO] [stderr] 106 | integer_impl!(u16, UInt16, b"q\0", i, Some(i as i64), u, Some(u as u64), f, Some(f as f64)); [INFO] [stderr] | -------------------------------------------------------------------------------------------- in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u16 to i64 may become silently lossy if types change [INFO] [stderr] --> src/arg/basic_impl.rs:106:44 [INFO] [stderr] | [INFO] [stderr] 106 | integer_impl!(u16, UInt16, b"q\0", i, Some(i as i64), u, Some(u as u64), f, Some(f as f64)); [INFO] [stderr] | ^^^^^^^^ help: try: `i64::from(i)` [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/arg/basic_impl.rs:106:63 [INFO] [stderr] | [INFO] [stderr] 106 | integer_impl!(u16, UInt16, b"q\0", i, Some(i as i64), u, Some(u as u64), f, Some(f as f64)); [INFO] [stderr] | ^^^^^^^^ help: try: `u64::from(u)` [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 f64 may become silently lossy if types change [INFO] [stderr] --> src/arg/basic_impl.rs:106:82 [INFO] [stderr] | [INFO] [stderr] 106 | integer_impl!(u16, UInt16, b"q\0", i, Some(i as i64), u, Some(u as u64), f, Some(f as f64)); [INFO] [stderr] | ^^^^^^^^ help: try: `f64::from(f)` [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/arg/basic_impl.rs:71:83 [INFO] [stderr] | [INFO] [stderr] 71 | fn append(self, i: &mut IterAppend) { arg_append_basic(&mut i.0, ArgType::$s, self as i64) } [INFO] [stderr] | ^^^^^^^^^^^ help: try: `i64::from(self)` [INFO] [stderr] ... [INFO] [stderr] 107 | integer_impl!(i32, Int32, b"i\0", i, Some(i as i64), _u, None, f, Some(f as f64)); [INFO] [stderr] | -------------------------------------------------------------------------------------------- in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting i32 to i64 may become silently lossy if types change [INFO] [stderr] --> src/arg/basic_impl.rs:84:84 [INFO] [stderr] | [INFO] [stderr] 84 | fn append(&self, i: &mut IterAppend) { arg_append_basic(&mut i.0, ArgType::$s, *self as i64) } [INFO] [stderr] | ^^^^^^^^^^^^ help: try: `i64::from(*self)` [INFO] [stderr] ... [INFO] [stderr] 107 | integer_impl!(i32, Int32, b"i\0", i, Some(i as i64), _u, None, f, Some(f as f64)); [INFO] [stderr] | -------------------------------------------------------------------------------------------- in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting i32 to i64 may become silently lossy if types change [INFO] [stderr] --> src/arg/basic_impl.rs:107:43 [INFO] [stderr] | [INFO] [stderr] 107 | integer_impl!(i32, Int32, b"i\0", i, Some(i as i64), _u, None, f, Some(f as f64)); [INFO] [stderr] | ^^^^^^^^ help: try: `i64::from(i)` [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 f64 may become silently lossy if types change [INFO] [stderr] --> src/arg/basic_impl.rs:107:82 [INFO] [stderr] | [INFO] [stderr] 107 | integer_impl!(i32, Int32, b"i\0", i, Some(i as i64), _u, None, f, Some(f as f64)); [INFO] [stderr] | ^^^^^^^^ help: try: `f64::from(f)` [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 i64 may become silently lossy if types change [INFO] [stderr] --> src/arg/basic_impl.rs:71:83 [INFO] [stderr] | [INFO] [stderr] 71 | fn append(self, i: &mut IterAppend) { arg_append_basic(&mut i.0, ArgType::$s, self as i64) } [INFO] [stderr] | ^^^^^^^^^^^ help: try: `i64::from(self)` [INFO] [stderr] ... [INFO] [stderr] 108 | integer_impl!(u32, UInt32, b"u\0", i, Some(i as i64), u, Some(u as u64), f, Some(f as f64)); [INFO] [stderr] | -------------------------------------------------------------------------------------------- in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u32 to i64 may become silently lossy if types change [INFO] [stderr] --> src/arg/basic_impl.rs:84:84 [INFO] [stderr] | [INFO] [stderr] 84 | fn append(&self, i: &mut IterAppend) { arg_append_basic(&mut i.0, ArgType::$s, *self as i64) } [INFO] [stderr] | ^^^^^^^^^^^^ help: try: `i64::from(*self)` [INFO] [stderr] ... [INFO] [stderr] 108 | integer_impl!(u32, UInt32, b"u\0", i, Some(i as i64), u, Some(u as u64), f, Some(f as f64)); [INFO] [stderr] | -------------------------------------------------------------------------------------------- in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u32 to i64 may become silently lossy if types change [INFO] [stderr] --> src/arg/basic_impl.rs:108:44 [INFO] [stderr] | [INFO] [stderr] 108 | integer_impl!(u32, UInt32, b"u\0", i, Some(i as i64), u, Some(u as u64), f, Some(f as f64)); [INFO] [stderr] | ^^^^^^^^ help: try: `i64::from(i)` [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/arg/basic_impl.rs:108:63 [INFO] [stderr] | [INFO] [stderr] 108 | integer_impl!(u32, UInt32, b"u\0", i, Some(i as i64), u, Some(u as u64), f, Some(f as f64)); [INFO] [stderr] | ^^^^^^^^ help: try: `u64::from(u)` [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/arg/basic_impl.rs:108:82 [INFO] [stderr] | [INFO] [stderr] 108 | integer_impl!(u32, UInt32, b"u\0", i, Some(i as i64), u, Some(u as u64), f, Some(f as f64)); [INFO] [stderr] | ^^^^^^^^ help: try: `f64::from(f)` [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 f64 may become silently lossy if types change [INFO] [stderr] --> src/arg/basic_impl.rs:155:120 [INFO] [stderr] | [INFO] [stderr] 155 | refarg_impl!(bool, _i, Some(if *_i { 1 } else { 0 }), None, Some(if *_i { 1 as u64 } else { 0 as u64 }), Some(if *_i { 1 as f64 } else { 0 as f64 })); [INFO] [stderr] | ^^^^^^^^ help: try: `f64::from(1)` [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 f64 may become silently lossy if types change [INFO] [stderr] --> src/arg/basic_impl.rs:155:138 [INFO] [stderr] | [INFO] [stderr] 155 | refarg_impl!(bool, _i, Some(if *_i { 1 } else { 0 }), None, Some(if *_i { 1 as u64 } else { 0 as u64 }), Some(if *_i { 1 as f64 } else { 0 as f64 })); [INFO] [stderr] | ^^^^^^^^ help: try: `f64::from(0)` [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: length comparison to zero [INFO] [stderr] --> src/arg/basic_impl.rs:182:31 [INFO] [stderr] | [INFO] [stderr] 182 | let v: Cow<[u8]> = if b.len() > 0 && b[b.len()-1] == 0 { Cow::Borrowed(b) } [INFO] [stderr] | ^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!b.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: redundant closure found [INFO] [stderr] --> src/arg/basic_impl.rs:211:69 [INFO] [stderr] | [INFO] [stderr] 211 | fn get(i: &mut Iter<'a>) -> Option { <&str>::get(i).map(|s| String::from(s)) } [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: remove closure as shown: `String::from` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stderr] [INFO] [stderr] warning: casting i32 to i64 may become silently lossy if types change [INFO] [stderr] --> src/arg/basic_impl.rs:243:53 [INFO] [stderr] | [INFO] [stderr] 243 | arg_append_basic(&mut i.0, ArgType::UnixFd, self.as_raw_fd() as i64) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ help: try: `i64::from(self.as_raw_fd())` [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/arg/basic_impl.rs:254:66 [INFO] [stderr] | [INFO] [stderr] 254 | refarg_impl!(OwnedFd, _i, { use std::os::unix::io::AsRawFd; Some(_i.as_raw_fd() as i64) }, None, None, None); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: try: `i64::from(_i.as_raw_fd())` [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: redundant closure found [INFO] [stderr] --> src/arg/variantstruct_impl.rs:14:76 [INFO] [stderr] | [INFO] [stderr] 14 | i.recurse(ArgType::Variant).and_then(|mut si| si.get_refarg()).map(|v| Variant(v)) [INFO] [stderr] | ^^^^^^^^^^^^^^ help: remove closure as shown: `Variant` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stderr] [INFO] [stderr] warning: redundant closure found [INFO] [stderr] --> src/arg/variantstruct_impl.rs:61:68 [INFO] [stderr] | [INFO] [stderr] 61 | i.recurse(ArgType::Variant).and_then(|mut si| si.get().map(|v| Variant(v))) [INFO] [stderr] | ^^^^^^^^^^^^^^ help: remove closure as shown: `Variant` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stderr] [INFO] [stderr] warning: redundant closure found [INFO] [stderr] --> src/arg/variantstruct_impl.rs:67:41 [INFO] [stderr] | [INFO] [stderr] 67 | i.recurse(ArgType::Variant).map(|v| Variant(v)) [INFO] [stderr] | ^^^^^^^^^^^^^^ help: remove closure as shown: `Variant` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stderr] [INFO] [stderr] warning: this block may be rewritten with the `?` operator [INFO] [stderr] --> src/arg/variantstruct_impl.rs:130:9 [INFO] [stderr] | [INFO] [stderr] 130 | if si.is_none() { return None; } [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace_it_with: `si?;` [INFO] [stderr] ... [INFO] [stderr] 177 | struct_impl!(a A,); [INFO] [stderr] | ------------------- in this macro invocation [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::question_mark)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#question_mark [INFO] [stderr] [INFO] [stderr] warning: this block may be rewritten with the `?` operator [INFO] [stderr] --> src/arg/variantstruct_impl.rs:136:13 [INFO] [stderr] | [INFO] [stderr] 136 | if $n.is_none() { return None; } [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace_it_with: `$n?;` [INFO] [stderr] ... [INFO] [stderr] 177 | struct_impl!(a A,); [INFO] [stderr] | ------------------- in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#question_mark [INFO] [stderr] [INFO] [stderr] warning: this block may be rewritten with the `?` operator [INFO] [stderr] --> src/arg/variantstruct_impl.rs:130:9 [INFO] [stderr] | [INFO] [stderr] 130 | if si.is_none() { return None; } [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace_it_with: `si?;` [INFO] [stderr] ... [INFO] [stderr] 178 | struct_impl!(a A, b B,); [INFO] [stderr] | ------------------------ in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#question_mark [INFO] [stderr] [INFO] [stderr] warning: this block may be rewritten with the `?` operator [INFO] [stderr] --> src/arg/variantstruct_impl.rs:136:13 [INFO] [stderr] | [INFO] [stderr] 136 | if $n.is_none() { return None; } [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace_it_with: `$n?;` [INFO] [stderr] ... [INFO] [stderr] 178 | struct_impl!(a A, b B,); [INFO] [stderr] | ------------------------ in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#question_mark [INFO] [stderr] [INFO] [stderr] warning: this block may be rewritten with the `?` operator [INFO] [stderr] --> src/arg/variantstruct_impl.rs:130:9 [INFO] [stderr] | [INFO] [stderr] 130 | if si.is_none() { return None; } [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace_it_with: `si?;` [INFO] [stderr] ... [INFO] [stderr] 179 | struct_impl!(a A, b B, c C,); [INFO] [stderr] | ----------------------------- in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#question_mark [INFO] [stderr] [INFO] [stderr] warning: this block may be rewritten with the `?` operator [INFO] [stderr] --> src/arg/variantstruct_impl.rs:136:13 [INFO] [stderr] | [INFO] [stderr] 136 | if $n.is_none() { return None; } [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace_it_with: `$n?;` [INFO] [stderr] ... [INFO] [stderr] 179 | struct_impl!(a A, b B, c C,); [INFO] [stderr] | ----------------------------- in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#question_mark [INFO] [stderr] [INFO] [stderr] warning: this block may be rewritten with the `?` operator [INFO] [stderr] --> src/arg/variantstruct_impl.rs:130:9 [INFO] [stderr] | [INFO] [stderr] 130 | if si.is_none() { return None; } [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace_it_with: `si?;` [INFO] [stderr] ... [INFO] [stderr] 180 | struct_impl!(a A, b B, c C, d D,); [INFO] [stderr] | ---------------------------------- in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#question_mark [INFO] [stderr] [INFO] [stderr] warning: this block may be rewritten with the `?` operator [INFO] [stderr] --> src/arg/variantstruct_impl.rs:136:13 [INFO] [stderr] | [INFO] [stderr] 136 | if $n.is_none() { return None; } [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace_it_with: `$n?;` [INFO] [stderr] ... [INFO] [stderr] 180 | struct_impl!(a A, b B, c C, d D,); [INFO] [stderr] | ---------------------------------- in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#question_mark [INFO] [stderr] [INFO] [stderr] warning: this block may be rewritten with the `?` operator [INFO] [stderr] --> src/arg/variantstruct_impl.rs:130:9 [INFO] [stderr] | [INFO] [stderr] 130 | if si.is_none() { return None; } [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace_it_with: `si?;` [INFO] [stderr] ... [INFO] [stderr] 181 | struct_impl!(a A, b B, c C, d D, e E,); [INFO] [stderr] | --------------------------------------- in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#question_mark [INFO] [stderr] [INFO] [stderr] warning: this block may be rewritten with the `?` operator [INFO] [stderr] --> src/arg/variantstruct_impl.rs:136:13 [INFO] [stderr] | [INFO] [stderr] 136 | if $n.is_none() { return None; } [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace_it_with: `$n?;` [INFO] [stderr] ... [INFO] [stderr] 181 | struct_impl!(a A, b B, c C, d D, e E,); [INFO] [stderr] | --------------------------------------- in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#question_mark [INFO] [stderr] [INFO] [stderr] warning: this block may be rewritten with the `?` operator [INFO] [stderr] --> src/arg/variantstruct_impl.rs:130:9 [INFO] [stderr] | [INFO] [stderr] 130 | if si.is_none() { return None; } [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace_it_with: `si?;` [INFO] [stderr] ... [INFO] [stderr] 182 | struct_impl!(a A, b B, c C, d D, e E, f F,); [INFO] [stderr] | -------------------------------------------- in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#question_mark [INFO] [stderr] [INFO] [stderr] warning: this block may be rewritten with the `?` operator [INFO] [stderr] --> src/arg/variantstruct_impl.rs:136:13 [INFO] [stderr] | [INFO] [stderr] 136 | if $n.is_none() { return None; } [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace_it_with: `$n?;` [INFO] [stderr] ... [INFO] [stderr] 182 | struct_impl!(a A, b B, c C, d D, e E, f F,); [INFO] [stderr] | -------------------------------------------- in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#question_mark [INFO] [stderr] [INFO] [stderr] warning: this block may be rewritten with the `?` operator [INFO] [stderr] --> src/arg/variantstruct_impl.rs:130:9 [INFO] [stderr] | [INFO] [stderr] 130 | if si.is_none() { return None; } [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace_it_with: `si?;` [INFO] [stderr] ... [INFO] [stderr] 183 | struct_impl!(a A, b B, c C, d D, e E, f F, g G,); [INFO] [stderr] | ------------------------------------------------- in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#question_mark [INFO] [stderr] [INFO] [stderr] warning: this block may be rewritten with the `?` operator [INFO] [stderr] --> src/arg/variantstruct_impl.rs:136:13 [INFO] [stderr] | [INFO] [stderr] 136 | if $n.is_none() { return None; } [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace_it_with: `$n?;` [INFO] [stderr] ... [INFO] [stderr] 183 | struct_impl!(a A, b B, c C, d D, e E, f F, g G,); [INFO] [stderr] | ------------------------------------------------- in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#question_mark [INFO] [stderr] [INFO] [stderr] warning: this block may be rewritten with the `?` operator [INFO] [stderr] --> src/arg/variantstruct_impl.rs:130:9 [INFO] [stderr] | [INFO] [stderr] 130 | if si.is_none() { return None; } [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace_it_with: `si?;` [INFO] [stderr] ... [INFO] [stderr] 184 | struct_impl!(a A, b B, c C, d D, e E, f F, g G, h H,); [INFO] [stderr] | ------------------------------------------------------ in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#question_mark [INFO] [stderr] [INFO] [stderr] warning: this block may be rewritten with the `?` operator [INFO] [stderr] --> src/arg/variantstruct_impl.rs:136:13 [INFO] [stderr] | [INFO] [stderr] 136 | if $n.is_none() { return None; } [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace_it_with: `$n?;` [INFO] [stderr] ... [INFO] [stderr] 184 | struct_impl!(a A, b B, c C, d D, e E, f F, g G, h H,); [INFO] [stderr] | ------------------------------------------------------ in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#question_mark [INFO] [stderr] [INFO] [stderr] warning: this block may be rewritten with the `?` operator [INFO] [stderr] --> src/arg/variantstruct_impl.rs:130:9 [INFO] [stderr] | [INFO] [stderr] 130 | if si.is_none() { return None; } [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace_it_with: `si?;` [INFO] [stderr] ... [INFO] [stderr] 185 | struct_impl!(a A, b B, c C, d D, e E, f F, g G, h H, i I,); [INFO] [stderr] | ----------------------------------------------------------- in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#question_mark [INFO] [stderr] [INFO] [stderr] warning: this block may be rewritten with the `?` operator [INFO] [stderr] --> src/arg/variantstruct_impl.rs:136:13 [INFO] [stderr] | [INFO] [stderr] 136 | if $n.is_none() { return None; } [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace_it_with: `$n?;` [INFO] [stderr] ... [INFO] [stderr] 185 | struct_impl!(a A, b B, c C, d D, e E, f F, g G, h H, i I,); [INFO] [stderr] | ----------------------------------------------------------- in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#question_mark [INFO] [stderr] [INFO] [stderr] warning: this block may be rewritten with the `?` operator [INFO] [stderr] --> src/arg/variantstruct_impl.rs:130:9 [INFO] [stderr] | [INFO] [stderr] 130 | if si.is_none() { return None; } [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace_it_with: `si?;` [INFO] [stderr] ... [INFO] [stderr] 186 | struct_impl!(a A, b B, c C, d D, e E, f F, g G, h H, i I, j J,); [INFO] [stderr] | ---------------------------------------------------------------- in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#question_mark [INFO] [stderr] [INFO] [stderr] warning: this block may be rewritten with the `?` operator [INFO] [stderr] --> src/arg/variantstruct_impl.rs:136:13 [INFO] [stderr] | [INFO] [stderr] 136 | if $n.is_none() { return None; } [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace_it_with: `$n?;` [INFO] [stderr] ... [INFO] [stderr] 186 | struct_impl!(a A, b B, c C, d D, e E, f F, g G, h H, i I, j J,); [INFO] [stderr] | ---------------------------------------------------------------- in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#question_mark [INFO] [stderr] [INFO] [stderr] warning: this block may be rewritten with the `?` operator [INFO] [stderr] --> src/arg/variantstruct_impl.rs:130:9 [INFO] [stderr] | [INFO] [stderr] 130 | if si.is_none() { return None; } [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace_it_with: `si?;` [INFO] [stderr] ... [INFO] [stderr] 187 | struct_impl!(a A, b B, c C, d D, e E, f F, g G, h H, i I, j J, k K,); [INFO] [stderr] | --------------------------------------------------------------------- in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#question_mark [INFO] [stderr] [INFO] [stderr] warning: this block may be rewritten with the `?` operator [INFO] [stderr] --> src/arg/variantstruct_impl.rs:136:13 [INFO] [stderr] | [INFO] [stderr] 136 | if $n.is_none() { return None; } [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace_it_with: `$n?;` [INFO] [stderr] ... [INFO] [stderr] 187 | struct_impl!(a A, b B, c C, d D, e E, f F, g G, h H, i I, j J, k K,); [INFO] [stderr] | --------------------------------------------------------------------- in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#question_mark [INFO] [stderr] [INFO] [stderr] warning: this block may be rewritten with the `?` operator [INFO] [stderr] --> src/arg/variantstruct_impl.rs:130:9 [INFO] [stderr] | [INFO] [stderr] 130 | if si.is_none() { return None; } [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace_it_with: `si?;` [INFO] [stderr] ... [INFO] [stderr] 188 | struct_impl!(a A, b B, c C, d D, e E, f F, g G, h H, i I, j J, k K, l L,); [INFO] [stderr] | -------------------------------------------------------------------------- in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#question_mark [INFO] [stderr] [INFO] [stderr] warning: this block may be rewritten with the `?` operator [INFO] [stderr] --> src/arg/variantstruct_impl.rs:136:13 [INFO] [stderr] | [INFO] [stderr] 136 | if $n.is_none() { return None; } [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace_it_with: `$n?;` [INFO] [stderr] ... [INFO] [stderr] 188 | struct_impl!(a A, b B, c C, d D, e E, f F, g G, h H, i I, j J, k K, l L,); [INFO] [stderr] | -------------------------------------------------------------------------- in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#question_mark [INFO] [stderr] [INFO] [stderr] warning: Comparing with null is better expressed by the .is_null() method [INFO] [stderr] --> src/arg/array_impl.rs:103:16 [INFO] [stderr] | [INFO] [stderr] 103 | if v == ptr::null_mut() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cmp_null [INFO] [stderr] [INFO] [stderr] warning: this block may be rewritten with the `?` operator [INFO] [stderr] --> src/arg/array_impl.rs:160:13 [INFO] [stderr] | [INFO] [stderr] 160 | if k.is_none() { return None }; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace_it_with: `k?;` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#question_mark [INFO] [stderr] [INFO] [stderr] warning: this block may be rewritten with the `?` operator [INFO] [stderr] --> src/arg/array_impl.rs:163:13 [INFO] [stderr] | [INFO] [stderr] 163 | if v.is_none() { return None }; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace_it_with: `v?;` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#question_mark [INFO] [stderr] [INFO] [stderr] warning: impl for `HashMap` should be generalized over different hashers [INFO] [stderr] --> src/arg/array_impl.rs:171:34 [INFO] [stderr] | [INFO] [stderr] 171 | impl Arg for HashMap { [INFO] [stderr] | ^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::implicit_hasher)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#implicit_hasher [INFO] [stderr] help: consider adding a type parameter [INFO] [stderr] | [INFO] [stderr] 171 | impl Arg for HashMap { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: impl for `HashMap` should be generalized over different hashers [INFO] [stderr] --> src/arg/array_impl.rs:177:67 [INFO] [stderr] | [INFO] [stderr] 177 | impl Append for HashMap { [INFO] [stderr] | ^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#implicit_hasher [INFO] [stderr] help: consider adding a type parameter [INFO] [stderr] | [INFO] [stderr] 177 | impl Append for HashMap { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: impl for `HashMap` should be generalized over different hashers [INFO] [stderr] --> src/arg/array_impl.rs:183:74 [INFO] [stderr] | [INFO] [stderr] 183 | impl<'a, K: DictKey + Get<'a> + Eq + Hash, V: Arg + Get<'a>> Get<'a> for HashMap { [INFO] [stderr] | ^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#implicit_hasher [INFO] [stderr] help: consider adding a type parameter [INFO] [stderr] | [INFO] [stderr] 183 | impl<'a, K: DictKey + Get<'a> + Eq + Hash, V: Arg + Get<'a>, S: ::std::hash::BuildHasher> Get<'a> for HashMap { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: identical conversion [INFO] [stderr] --> src/arg/array_impl.rs:186:30 [INFO] [stderr] | [INFO] [stderr] 186 | Dict::get(i).map(|d| d.into_iter().collect()) [INFO] [stderr] | ^^^^^^^^^^^^^ help: consider removing `.into_iter()`: `d` [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: impl for `HashMap` should be generalized over different hashers [INFO] [stderr] --> src/arg/array_impl.rs:190:67 [INFO] [stderr] | [INFO] [stderr] 190 | impl RefArg for HashMap { [INFO] [stderr] | ^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#implicit_hasher [INFO] [stderr] help: consider adding a type parameter [INFO] [stderr] | [INFO] [stderr] 190 | impl RefArg for HashMap { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: casting u8 to i32 may become silently lossy if types change [INFO] [stderr] --> src/arg/array_impl.rs:457:41 [INFO] [stderr] | [INFO] [stderr] 457 | let key = ArgType::from_i32(i.signature().as_bytes()[2] as i32).unwrap(); // The third character, after "a{", is our key. [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `i32::from(i.signature().as_bytes()[2])` [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: Comparing with null is better expressed by the .is_null() method [INFO] [stderr] --> src/arg/mod.rs:215:21 [INFO] [stderr] | [INFO] [stderr] 215 | assert!(c != ptr::null_mut()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cmp_null [INFO] [stderr] [INFO] [stderr] warning: defining a method called `next` on this type; consider implementing the `std::iter::Iterator` trait or choosing a less ambiguous name [INFO] [stderr] --> src/arg/mod.rs:234:5 [INFO] [stderr] | [INFO] [stderr] 234 | / pub fn next(&mut self) -> bool { [INFO] [stderr] 235 | | self.2 += 1; [INFO] [stderr] 236 | | unsafe { ffi::dbus_message_iter_next(&mut self.0) != 0 } [INFO] [stderr] 237 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::should_implement_trait)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#should_implement_trait [INFO] [stderr] [INFO] [stderr] warning: using `clone` on a `Copy` type [INFO] [stderr] --> src/arg/mod.rs:293:21 [INFO] [stderr] | [INFO] [stderr] 293 | let mut z = self.clone(); [INFO] [stderr] | ^^^^^^^^^^^^ help: try dereferencing it: `*self` [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: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/arg/mod.rs:404:30 [INFO] [stderr] | [INFO] [stderr] 404 | pub fn expected_arg_type(&self) -> ArgType { self.expected } [INFO] [stderr] | ^^^^^ help: consider passing by value instead: `self` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/arg/mod.rs:407:27 [INFO] [stderr] | [INFO] [stderr] 407 | pub fn found_arg_type(&self) -> ArgType { self.found } [INFO] [stderr] | ^^^^^ help: consider passing by value instead: `self` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/arg/mod.rs:412:16 [INFO] [stderr] | [INFO] [stderr] 412 | pub fn pos(&self) -> u32 { self.position } [INFO] [stderr] | ^^^^^ help: consider passing by value instead: `self` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: very complex type used. Consider factoring parts into `type` definitions [INFO] [stderr] --> src/stdintf.rs:54:48 [INFO] [stderr] | [INFO] [stderr] 54 | fn get_all(&self, interface_name: &str) -> Result<::std::collections::HashMap>>, Self::Err>; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#type_complexity [INFO] [stderr] [INFO] [stderr] warning: very complex type used. Consider factoring parts into `type` definitions [INFO] [stderr] --> src/stdintf.rs:73:48 [INFO] [stderr] | [INFO] [stderr] 73 | fn get_all(&self, interface_name: &str) -> Result<::std::collections::HashMap>>, Self::Err> { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#type_complexity [INFO] [stderr] [INFO] [stderr] warning: very complex type used. Consider factoring parts into `type` definitions [INFO] [stderr] --> src/stdintf.rs:124:38 [INFO] [stderr] | [INFO] [stderr] 124 | fn get_managed_objects(&self) -> Result<::std::collections::HashMap<::Path<'static>, ::std::collections::HashMap>>>>, Self::Err>; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#type_complexity [INFO] [stderr] [INFO] [stderr] warning: very complex type used. Consider factoring parts into `type` definitions [INFO] [stderr] --> src/stdintf.rs:130:38 [INFO] [stderr] | [INFO] [stderr] 130 | fn get_managed_objects(&self) -> Result<::std::collections::HashMap<::Path<'static>, ::std::collections::HashMap>>>>, Self::Err> { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#type_complexity [INFO] [stderr] [INFO] [stderr] warning: very complex type used. Consider factoring parts into `type` definitions [INFO] [stderr] --> src/stdintf.rs:135:22 [INFO] [stderr] | [INFO] [stderr] 135 | let objects: ::std::collections::HashMap<::Path<'static>, ::std::collections::HashMap>>>> = try!(i.read()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#type_complexity [INFO] [stderr] [INFO] [stderr] warning: use of `unwrap_or` followed by a function call [INFO] [stderr] --> src/tree/utils.rs:50:69 [INFO] [stderr] | [INFO] [stderr] 50 | let n = self.0.as_ref().map(|n| format!("name=\"{}\" ", n)).unwrap_or("".into()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: try this: `unwrap_or_else(|| "".into())` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::or_fun_call)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] [INFO] [stderr] warning: use of `unwrap_or` followed by a call to `new` [INFO] [stderr] --> src/tree/utils.rs:73:9 [INFO] [stderr] | [INFO] [stderr] 73 | / self.0.as_ref().map(|s| s.iter().fold("".into(), |aa, (ak, av)| { [INFO] [stderr] 74 | | format!("{}{}\n", aa, indent, ak, av) [INFO] [stderr] 75 | | })).unwrap_or(String::new()) [INFO] [stderr] | |____________________________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 73 | self.0.as_ref().map(|s| s.iter().fold("".into(), |aa, (ak, av)| { [INFO] [stderr] 74 | format!("{}{}\n", aa, indent, ak, av) [INFO] [stderr] 75 | })).unwrap_or_default() [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: very complex type used. Consider factoring parts into `type` definitions [INFO] [stderr] --> src/tree/methodtype.rs:162:20 [INFO] [stderr] | [INFO] [stderr] 162 | type GetProp = RefCell) -> Result<(), MethodErr>>; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#type_complexity [INFO] [stderr] [INFO] [stderr] warning: very complex type used. Consider factoring parts into `type` definitions [INFO] [stderr] --> src/tree/methodtype.rs:163:20 [INFO] [stderr] | [INFO] [stderr] 163 | type SetProp = RefCell) -> Result<(), MethodErr>>; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#type_complexity [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/tree/leaves.rs:186:19 [INFO] [stderr] | [INFO] [stderr] 186 | fn introspect(&self) -> &'static str { [INFO] [stderr] | ^^^^^ help: consider passing by value instead: `self` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/tree/leaves.rs:187:9 [INFO] [stderr] | [INFO] [stderr] 187 | / match self { [INFO] [stderr] 188 | | &Access::Read => "read", [INFO] [stderr] 189 | | &Access::ReadWrite => "readwrite", [INFO] [stderr] 190 | | &Access::Write => "write", [INFO] [stderr] 191 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 187 | match *self { [INFO] [stderr] 188 | Access::Read => "read", [INFO] [stderr] 189 | Access::ReadWrite => "readwrite", [INFO] [stderr] 190 | Access::Write => "write", [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: needlessly taken reference of both operands [INFO] [stderr] --> src/tree/leaves.rs:307:16 [INFO] [stderr] | [INFO] [stderr] 307 | if &*subiter.signature() != &*self.sig { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::op_ref)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#op_ref [INFO] [stderr] help: use the values directly [INFO] [stderr] | [INFO] [stderr] 307 | if *subiter.signature() != *self.sig { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: needlessly taken reference of both operands [INFO] [stderr] --> src/tree/leaves.rs:343:43 [INFO] [stderr] | [INFO] [stderr] 343 | let vpos = v.iter().position(|vv| &*vv.interface_name == &**iface); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#op_ref [INFO] [stderr] help: use the values directly [INFO] [stderr] | [INFO] [stderr] 343 | let vpos = v.iter().position(|vv| *vv.interface_name == **iface); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ ^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/tree/objectpath.rs:16:46 [INFO] [stderr] | [INFO] [stderr] 16 | a, indent, name, &*k, params, if contents.len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!contents.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/tree/objectpath.rs:19:20 [INFO] [stderr] | [INFO] [stderr] 19 | else { format!("/") } [INFO] [stderr] | ^^^^^^^^^^^^ help: consider using .to_string(): `"/".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: defining a method called `add` on this type; consider implementing the `std::ops::Add` trait or choosing a less ambiguous name [INFO] [stderr] --> src/tree/objectpath.rs:140:5 [INFO] [stderr] | [INFO] [stderr] 140 | / pub fn add>>>(mut self, s: I) -> Self { [INFO] [stderr] 141 | | let m = s.into(); [INFO] [stderr] 142 | | if !m.properties.is_empty() { self.add_property_handler(); } [INFO] [stderr] 143 | | self.ifaces.insert(m.name.clone(), m); [INFO] [stderr] 144 | | self [INFO] [stderr] 145 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#should_implement_trait [INFO] [stderr] [INFO] [stderr] warning: defining a method called `add` on this type; consider implementing the `std::ops::Add` trait or choosing a less ambiguous name [INFO] [stderr] --> src/tree/objectpath.rs:323:5 [INFO] [stderr] | [INFO] [stderr] 323 | / pub fn add>>>(mut self, s: I) -> Self { [INFO] [stderr] 324 | | self.insert(s); [INFO] [stderr] 325 | | self [INFO] [stderr] 326 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#should_implement_trait [INFO] [stderr] [INFO] [stderr] warning: single-character string constant used as pattern [INFO] [stderr] --> src/tree/objectpath.rs:401:50 [INFO] [stderr] | [INFO] [stderr] 401 | if direct_only && child.contains("/") {None} else {Some(&**v)} [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: you don't need to add `&` to both the expression and the patterns [INFO] [stderr] --> src/tree/objectpath.rs:445:13 [INFO] [stderr] | [INFO] [stderr] 445 | / if let &Some(ConnectionItem::MethodCall(ref msg)) = &n { [INFO] [stderr] 446 | | if let Some(v) = self.tree.handle(&msg) { [INFO] [stderr] 447 | | // Probably the wisest is to ignore any send errors here - [INFO] [stderr] 448 | | // maybe the remote has disconnected during our processing. [INFO] [stderr] ... | [INFO] [stderr] 451 | | } [INFO] [stderr] 452 | | } [INFO] [stderr] | |_____________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: try [INFO] [stderr] | [INFO] [stderr] 445 | if let Some(ConnectionItem::MethodCall(ref msg)) = n { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^ [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/lib.rs:81:22 [INFO] [stderr] | [INFO] [stderr] 81 | fn c_str_to_slice(c: & *const c_char) -> Option<&str> { [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: consider passing by value instead: `*const c_char` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: Comparing with null is better expressed by the .is_null() method [INFO] [stderr] --> src/lib.rs:82:8 [INFO] [stderr] | [INFO] [stderr] 82 | if *c == ptr::null() { None } [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cmp_null [INFO] [stderr] [INFO] [stderr] error: aborting due to 2 previous errors [INFO] [stderr] [INFO] [stderr] error: Could not compile `dbus`. [INFO] [stderr] warning: build failed, waiting for other jobs to finish... [INFO] [stderr] error: useless lint attribute [INFO] [stderr] --> src/lib.rs:41:1 [INFO] [stderr] | [INFO] [stderr] 41 | #[allow(missing_docs)] [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: if you just forgot a `!`, use: `#![allow(missing_docs)]` [INFO] [stderr] | [INFO] [stderr] = note: #[deny(clippy::useless_attribute)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_attribute [INFO] [stderr] [INFO] [stderr] warning: transmute from a reference to a pointer [INFO] [stderr] --> src/message.rs:170:30 [INFO] [stderr] | [INFO] [stderr] 170 | let p: *mut c_void = mem::transmute(&mut c); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: try: `&mut c as *mut i64 as *mut libc::c_void` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::useless_transmute)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_transmute [INFO] [stderr] [INFO] [stderr] warning: transmute from a reference to a pointer [INFO] [stderr] --> src/message.rs:179:30 [INFO] [stderr] | [INFO] [stderr] 179 | let p: *mut c_void = mem::transmute(&mut c); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: try: `&mut c as *mut f64 as *mut libc::c_void` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_transmute [INFO] [stderr] [INFO] [stderr] warning: transmute from a reference to a pointer [INFO] [stderr] --> src/message.rs:187:32 [INFO] [stderr] | [INFO] [stderr] 187 | let p: *const c_void = mem::transmute(&v); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: try: `&v as *const f64 as *const libc::c_void` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_transmute [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/message.rs:266:17 [INFO] [stderr] | [INFO] [stderr] 266 | let s = match self { [INFO] [stderr] | _________________^ [INFO] [stderr] 267 | | &MessageItem::Str(_) => ffi::DBUS_TYPE_STRING, [INFO] [stderr] 268 | | &MessageItem::Bool(_) => ffi::DBUS_TYPE_BOOLEAN, [INFO] [stderr] 269 | | &MessageItem::Byte(_) => ffi::DBUS_TYPE_BYTE, [INFO] [stderr] ... | [INFO] [stderr] 282 | | &MessageItem::UnixFd(_) => ffi::DBUS_TYPE_UNIX_FD, [INFO] [stderr] 283 | | }; [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::match_ref_pats)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 266 | let s = match *self { [INFO] [stderr] 267 | MessageItem::Str(_) => ffi::DBUS_TYPE_STRING, [INFO] [stderr] 268 | MessageItem::Bool(_) => ffi::DBUS_TYPE_BOOLEAN, [INFO] [stderr] 269 | MessageItem::Byte(_) => ffi::DBUS_TYPE_BYTE, [INFO] [stderr] 270 | MessageItem::Int16(_) => ffi::DBUS_TYPE_INT16, [INFO] [stderr] 271 | MessageItem::Int32(_) => ffi::DBUS_TYPE_INT32, [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/message.rs:302:12 [INFO] [stderr] | [INFO] [stderr] 302 | if v.len() == 0 { [INFO] [stderr] | ^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `v.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: length comparison to zero [INFO] [stderr] --> src/message.rs:315:24 [INFO] [stderr] | [INFO] [stderr] 315 | let t = if v.len() == 0 { d = D::default().into(); &d } else { &v[0] }; [INFO] [stderr] | ^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `v.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: You are using an explicit closure for cloning elements [INFO] [stderr] --> src/message.rs:323:33 [INFO] [stderr] | [INFO] [stderr] 323 | MessageItem::new_array2(i.map(|ii| ii.clone())) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: Consider calling the dedicated `cloned` method: `i.cloned()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::map_clone)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_clone [INFO] [stderr] [INFO] [stderr] warning: transmute from a reference to a pointer [INFO] [stderr] --> src/message.rs:366:42 [INFO] [stderr] | [INFO] [stderr] 366 | let p: *mut c_void = mem::transmute(&mut c); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: try: `&mut c as *mut *const i8 as *mut libc::c_void` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_transmute [INFO] [stderr] [INFO] [stderr] warning: transmute from a reference to a pointer [INFO] [stderr] --> src/message.rs:374:42 [INFO] [stderr] | [INFO] [stderr] 374 | let p: *mut c_void = mem::transmute(&mut c); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: try: `&mut c as *mut *const i8 as *mut libc::c_void` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_transmute [INFO] [stderr] [INFO] [stderr] warning: called `ok().expect()` on a Result value. You can call `expect` directly on the `Result` [INFO] [stderr] --> src/message.rs:377:25 [INFO] [stderr] | [INFO] [stderr] 377 | let o = Path::new(c_str_to_slice(&c).expect("D-Bus object path error")).ok().expect("D-Bus object path error"); [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: transmute from a reference to a pointer [INFO] [stderr] --> src/message.rs:406:36 [INFO] [stderr] | [INFO] [stderr] 406 | let p: *const c_void = mem::transmute(&v); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: try: `&v as *const i64 as *const libc::c_void` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_transmute [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/message.rs:412:9 [INFO] [stderr] | [INFO] [stderr] 412 | / match self { [INFO] [stderr] 413 | | &MessageItem::Str(ref s) => unsafe { [INFO] [stderr] 414 | | let c = to_c_str(s); [INFO] [stderr] 415 | | let p = mem::transmute(&c); [INFO] [stderr] ... | [INFO] [stderr] 436 | | } [INFO] [stderr] 437 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 412 | match *self { [INFO] [stderr] 413 | MessageItem::Str(ref s) => unsafe { [INFO] [stderr] 414 | let c = to_c_str(s); [INFO] [stderr] 415 | let p = mem::transmute(&c); [INFO] [stderr] 416 | ffi::dbus_message_iter_append_basic(i, ffi::DBUS_TYPE_STRING, p); [INFO] [stderr] 417 | }, [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: transmute from a reference to a pointer [INFO] [stderr] --> src/message.rs:415:25 [INFO] [stderr] | [INFO] [stderr] 415 | let p = mem::transmute(&c); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: try: `&c as *const std::ffi::CString as *const libc::c_void` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_transmute [INFO] [stderr] [INFO] [stderr] warning: casting u8 to i64 may become silently lossy if types change [INFO] [stderr] --> src/message.rs:419:64 [INFO] [stderr] | [INFO] [stderr] 419 | &MessageItem::Byte(b) => self.iter_append_basic(i, b as i64), [INFO] [stderr] | ^^^^^^^^ help: try: `i64::from(b)` [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 i16 to i64 may become silently lossy if types change [INFO] [stderr] --> src/message.rs:420:65 [INFO] [stderr] | [INFO] [stderr] 420 | &MessageItem::Int16(b) => self.iter_append_basic(i, b as i64), [INFO] [stderr] | ^^^^^^^^ help: try: `i64::from(b)` [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/message.rs:421:65 [INFO] [stderr] | [INFO] [stderr] 421 | &MessageItem::Int32(b) => self.iter_append_basic(i, b as i64), [INFO] [stderr] | ^^^^^^^^ help: try: `i64::from(b)` [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 i64 may become silently lossy if types change [INFO] [stderr] --> src/message.rs:423:66 [INFO] [stderr] | [INFO] [stderr] 423 | &MessageItem::UInt16(b) => self.iter_append_basic(i, b as i64), [INFO] [stderr] | ^^^^^^^^ help: try: `i64::from(b)` [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 i64 may become silently lossy if types change [INFO] [stderr] --> src/message.rs:424:66 [INFO] [stderr] | [INFO] [stderr] 424 | &MessageItem::UInt32(b) => self.iter_append_basic(i, b as i64), [INFO] [stderr] | ^^^^^^^^ help: try: `i64::from(b)` [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/message.rs:426:70 [INFO] [stderr] | [INFO] [stderr] 426 | &MessageItem::UnixFd(ref b) => self.iter_append_basic(i, b.as_raw_fd() as i64), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: try: `i64::from(b.as_raw_fd())` [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: transmute from a reference to a pointer [INFO] [stderr] --> src/message.rs:434:25 [INFO] [stderr] | [INFO] [stderr] 434 | let p = mem::transmute(&c); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: try: `&c as *const *const i8 as *const libc::c_void` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_transmute [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/message.rs:478:17 [INFO] [stderr] | [INFO] [stderr] 478 | if let &MessageItem::$s(ref b) = i { Ok(*b) } else { Err(()) } [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 484 | msgitem_convert!(u8, Byte); [INFO] [stderr] | --------------------------- in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/message.rs:478:17 [INFO] [stderr] | [INFO] [stderr] 478 | if let &MessageItem::$s(ref b) = i { Ok(*b) } else { Err(()) } [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 485 | msgitem_convert!(u64, UInt64); [INFO] [stderr] | ------------------------------ in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/message.rs:478:17 [INFO] [stderr] | [INFO] [stderr] 478 | if let &MessageItem::$s(ref b) = i { Ok(*b) } else { Err(()) } [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 486 | msgitem_convert!(u32, UInt32); [INFO] [stderr] | ------------------------------ in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/message.rs:478:17 [INFO] [stderr] | [INFO] [stderr] 478 | if let &MessageItem::$s(ref b) = i { Ok(*b) } else { Err(()) } [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 487 | msgitem_convert!(u16, UInt16); [INFO] [stderr] | ------------------------------ in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/message.rs:478:17 [INFO] [stderr] | [INFO] [stderr] 478 | if let &MessageItem::$s(ref b) = i { Ok(*b) } else { Err(()) } [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 488 | msgitem_convert!(i16, Int16); [INFO] [stderr] | ----------------------------- in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/message.rs:478:17 [INFO] [stderr] | [INFO] [stderr] 478 | if let &MessageItem::$s(ref b) = i { Ok(*b) } else { Err(()) } [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 489 | msgitem_convert!(i32, Int32); [INFO] [stderr] | ----------------------------- in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/message.rs:478:17 [INFO] [stderr] | [INFO] [stderr] 478 | if let &MessageItem::$s(ref b) = i { Ok(*b) } else { Err(()) } [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 490 | msgitem_convert!(i64, Int64); [INFO] [stderr] | ----------------------------- in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/message.rs:478:17 [INFO] [stderr] | [INFO] [stderr] 478 | if let &MessageItem::$s(ref b) = i { Ok(*b) } else { Err(()) } [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 491 | msgitem_convert!(f64, Double); [INFO] [stderr] | ------------------------------ in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/message.rs:478:17 [INFO] [stderr] | [INFO] [stderr] 478 | if let &MessageItem::$s(ref b) = i { Ok(*b) } else { Err(()) } [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 492 | msgitem_convert!(bool, Bool); [INFO] [stderr] | ----------------------------- in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/message.rs:531:9 [INFO] [stderr] | [INFO] [stderr] 531 | / match i { [INFO] [stderr] 532 | | &MessageItem::Str(ref b) => Ok(&b), [INFO] [stderr] 533 | | &MessageItem::ObjectPath(ref b) => Ok(&b), [INFO] [stderr] 534 | | _ => Err(()), [INFO] [stderr] 535 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 531 | match *i { [INFO] [stderr] 532 | MessageItem::Str(ref b) => Ok(&b), [INFO] [stderr] 533 | MessageItem::ObjectPath(ref b) => Ok(&b), [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/message.rs:540:60 [INFO] [stderr] | [INFO] [stderr] 540 | fn from(i: &'a MessageItem) -> Result<&'a String,()> { if let &MessageItem::Str(ref b) = i { Ok(&b) } else { Err(()) } } [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 540 | fn from(i: &'a MessageItem) -> Result<&'a String,()> { if let MessageItem::Str(ref b) = *i { Ok(&b) } else { Err(()) } } [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ ^^ [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/message.rs:544:67 [INFO] [stderr] | [INFO] [stderr] 544 | fn from(i: &'a MessageItem) -> Result<&'a Path<'static>,()> { if let &MessageItem::ObjectPath(ref b) = i { Ok(&b) } else { Err(()) } } [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 544 | fn from(i: &'a MessageItem) -> Result<&'a Path<'static>,()> { if let MessageItem::ObjectPath(ref b) = *i { Ok(&b) } else { Err(()) } } [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/message.rs:548:65 [INFO] [stderr] | [INFO] [stderr] 548 | fn from(i: &'a MessageItem) -> Result<&'a MessageItem,()> { if let &MessageItem::Variant(ref b) = i { Ok(&**b) } else { Err(()) } } [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 548 | fn from(i: &'a MessageItem) -> Result<&'a MessageItem,()> { if let MessageItem::Variant(ref b) = *i { Ok(&**b) } else { Err(()) } } [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/message.rs:553:9 [INFO] [stderr] | [INFO] [stderr] 553 | / match i { [INFO] [stderr] 554 | | &MessageItem::Array(ref b) => Ok(&b.v), [INFO] [stderr] 555 | | &MessageItem::Struct(ref b) => Ok(&b), [INFO] [stderr] 556 | | _ => Err(()), [INFO] [stderr] 557 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 553 | match *i { [INFO] [stderr] 554 | MessageItem::Array(ref b) => Ok(&b.v), [INFO] [stderr] 555 | MessageItem::Struct(ref b) => Ok(&b), [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/message.rs:566:61 [INFO] [stderr] | [INFO] [stderr] 566 | fn from(i: &'a MessageItem) -> Result<&'a OwnedFd,()> { if let &MessageItem::UnixFd(ref b) = i { Ok(b) } else { Err(()) } } [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 566 | fn from(i: &'a MessageItem) -> Result<&'a OwnedFd,()> { if let MessageItem::UnixFd(ref b) = *i { Ok(b) } else { Err(()) } } [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/message.rs:571:9 [INFO] [stderr] | [INFO] [stderr] 571 | if let &MessageItem::DictEntry(ref k, ref v) = i { Ok((&**k, &**v)) } else { Err(()) } [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 571 | if let MessageItem::DictEntry(ref k, ref v) = *i { Ok((&**k, &**v)) } else { Err(()) } [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^ [INFO] [stderr] [INFO] [stderr] warning: Comparing with null is better expressed by the .is_null() method [INFO] [stderr] --> src/message.rs:593:12 [INFO] [stderr] | [INFO] [stderr] 593 | if ptr == ptr::null_mut() { Err("D-Bus error: dbus_message_new_method_call failed".into()) } [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::cmp_null)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cmp_null [INFO] [stderr] [INFO] [stderr] warning: Comparing with null is better expressed by the .is_null() method [INFO] [stderr] --> src/message.rs:604:12 [INFO] [stderr] | [INFO] [stderr] 604 | if ptr == ptr::null_mut() { panic!("D-Bus error: dbus_message_new_signal failed") } [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cmp_null [INFO] [stderr] [INFO] [stderr] warning: Comparing with null is better expressed by the .is_null() method [INFO] [stderr] --> src/message.rs:620:12 [INFO] [stderr] | [INFO] [stderr] 620 | if ptr == ptr::null_mut() { Err("D-Bus error: dbus_message_new_signal failed".into()) } [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cmp_null [INFO] [stderr] [INFO] [stderr] warning: Comparing with null is better expressed by the .is_null() method [INFO] [stderr] --> src/message.rs:630:12 [INFO] [stderr] | [INFO] [stderr] 630 | if ptr == ptr::null_mut() { panic!("D-Bus error: dbus_message_new_signal failed") } [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cmp_null [INFO] [stderr] [INFO] [stderr] warning: Comparing with null is better expressed by the .is_null() method [INFO] [stderr] --> src/message.rs:637:12 [INFO] [stderr] | [INFO] [stderr] 637 | if ptr == ptr::null_mut() { None } else { Some(Message { msg: ptr} ) } [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cmp_null [INFO] [stderr] [INFO] [stderr] warning: Comparing with null is better expressed by the .is_null() method [INFO] [stderr] --> src/message.rs:643:12 [INFO] [stderr] | [INFO] [stderr] 643 | if ptr == ptr::null_mut() { panic!("D-Bus error: dbus_message_new_method_return failed") } [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cmp_null [INFO] [stderr] [INFO] [stderr] warning: Comparing with null is better expressed by the .is_null() method [INFO] [stderr] --> src/message.rs:651:12 [INFO] [stderr] | [INFO] [stderr] 651 | if ptr == ptr::null_mut() { None } else { Some(Message { msg: ptr} ) } [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cmp_null [INFO] [stderr] [INFO] [stderr] warning: Comparing with null is better expressed by the .is_null() method [INFO] [stderr] --> src/message.rs:657:12 [INFO] [stderr] | [INFO] [stderr] 657 | if ptr == ptr::null_mut() { panic!("D-Bus error: dbus_message_new_error failed") } [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cmp_null [INFO] [stderr] [INFO] [stderr] warning: very complex type used. Consider factoring parts into `type` definitions [INFO] [stderr] --> src/message.rs:791:99 [INFO] [stderr] | [INFO] [stderr] 791 | pub fn get5<'a, G1: Get<'a>, G2: Get<'a>, G3: Get<'a>, G4: Get<'a>, G5: Get<'a>>(&'a self) -> (Option, Option, Option, Option, Option) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::type_complexity)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#type_complexity [INFO] [stderr] [INFO] [stderr] warning: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/message.rs:849:5 [INFO] [stderr] | [INFO] [stderr] 849 | pub fn iter_init<'a>(&'a self) -> Iter<'a> { Iter::new(&self) } [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_lifetimes)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stderr] [INFO] [stderr] warning: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/message.rs:856:5 [INFO] [stderr] | [INFO] [stderr] 856 | / fn msg_internal_str<'a>(&'a self, c: *const libc::c_char) -> Option<&'a [u8]> { [INFO] [stderr] 857 | | if c == ptr::null() { None } [INFO] [stderr] 858 | | else { Some( unsafe { CStr::from_ptr(c) }.to_bytes_with_nul()) } [INFO] [stderr] 859 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stderr] [INFO] [stderr] warning: Comparing with null is better expressed by the .is_null() method [INFO] [stderr] --> src/message.rs:857:12 [INFO] [stderr] | [INFO] [stderr] 857 | if c == ptr::null() { None } [INFO] [stderr] | ^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cmp_null [INFO] [stderr] [INFO] [stderr] warning: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/message.rs:862:5 [INFO] [stderr] | [INFO] [stderr] 862 | / pub fn sender<'a>(&'a self) -> Option> { [INFO] [stderr] 863 | | self.msg_internal_str(unsafe { ffi::dbus_message_get_sender(self.msg) }) [INFO] [stderr] 864 | | .map(|s| unsafe { BusName::from_slice_unchecked(s) }) [INFO] [stderr] 865 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stderr] [INFO] [stderr] warning: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/message.rs:879:5 [INFO] [stderr] | [INFO] [stderr] 879 | / pub fn path<'a>(&'a self) -> Option> { [INFO] [stderr] 880 | | self.msg_internal_str(unsafe { ffi::dbus_message_get_path(self.msg) }) [INFO] [stderr] 881 | | .map(|s| unsafe { Path::from_slice_unchecked(s) }) [INFO] [stderr] 882 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stderr] [INFO] [stderr] warning: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/message.rs:885:5 [INFO] [stderr] | [INFO] [stderr] 885 | / pub fn destination<'a>(&'a self) -> Option> { [INFO] [stderr] 886 | | self.msg_internal_str(unsafe { ffi::dbus_message_get_destination(self.msg) }) [INFO] [stderr] 887 | | .map(|s| unsafe { BusName::from_slice_unchecked(s) }) [INFO] [stderr] 888 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stderr] [INFO] [stderr] warning: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/message.rs:899:5 [INFO] [stderr] | [INFO] [stderr] 899 | / pub fn interface<'a>(&'a self) -> Option> { [INFO] [stderr] 900 | | self.msg_internal_str(unsafe { ffi::dbus_message_get_interface(self.msg) }) [INFO] [stderr] 901 | | .map(|s| unsafe { Interface::from_slice_unchecked(s) }) [INFO] [stderr] 902 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stderr] [INFO] [stderr] warning: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/message.rs:905:5 [INFO] [stderr] | [INFO] [stderr] 905 | / pub fn member<'a>(&'a self) -> Option> { [INFO] [stderr] 906 | | self.msg_internal_str(unsafe { ffi::dbus_message_get_member(self.msg) }) [INFO] [stderr] 907 | | .map(|s| unsafe { Member::from_slice_unchecked(s) }) [INFO] [stderr] 908 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stderr] [INFO] [stderr] warning: this lifetime isn't used in the function definition [INFO] [stderr] --> src/message.rs:946:24 [INFO] [stderr] | [INFO] [stderr] 946 | pub fn get_message_ptr<'a>(m: &Message) -> *mut ffi::DBusMessage { [INFO] [stderr] | ^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::extra_unused_lifetimes)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#extra_unused_lifetimes [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/message.rs:1047:13 [INFO] [stderr] | [INFO] [stderr] 1047 | format!("Hello world").into(), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `"Hello world".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] [INFO] [stderr] error: approximate value of `f64::consts::PI` found. Consider using it directly [INFO] [stderr] --> src/message.rs:1048:15 [INFO] [stderr] | [INFO] [stderr] 1048 | (-3.14f64).into(), [INFO] [stderr] | ^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[deny(clippy::approx_constant)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#approx_constant [INFO] [stderr] [INFO] [stderr] warning: use of a blacklisted/placeholder name `foo` [INFO] [stderr] --> src/message.rs:1130:13 [INFO] [stderr] | [INFO] [stderr] 1130 | let foo = MessageItem::Struct(vec!(a, b)); [INFO] [stderr] | ^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::blacklisted_name)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#blacklisted_name [INFO] [stderr] [INFO] [stderr] warning: use of a blacklisted/placeholder name `bar` [INFO] [stderr] --> src/message.rs:1131:13 [INFO] [stderr] | [INFO] [stderr] 1131 | let bar = foo.clone(); [INFO] [stderr] | ^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#blacklisted_name [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to both the expression and the patterns [INFO] [stderr] --> src/prop.rs:34:13 [INFO] [stderr] | [INFO] [stderr] 34 | / if let &MessageItem::Variant(ref v) = &reply[0] { [INFO] [stderr] 35 | | return Ok((**v).clone()) [INFO] [stderr] 36 | | } [INFO] [stderr] | |_____________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: try [INFO] [stderr] | [INFO] [stderr] 34 | if let MessageItem::Variant(ref v) = reply[0] { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: called `.get().unwrap()` on a BTreeMap. Using `[]` is more clear and more concise [INFO] [stderr] --> src/prop.rs:105:12 [INFO] [stderr] | [INFO] [stderr] 105 | Ok(self.map.get(propname).unwrap()) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `&self.map[propname]` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::get_unwrap)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_unwrap [INFO] [stderr] [INFO] [stderr] warning: called `.get().unwrap()` on a BTreeMap. Using `[]` is more clear and more concise [INFO] [stderr] --> src/prop.rs:128:14 [INFO] [stderr] | [INFO] [stderr] 128 | let v2 = vall.get("BackendVersion").unwrap(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `&vall["BackendVersion"]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_unwrap [INFO] [stderr] [INFO] [stderr] warning: the operation is ineffective. Consider reducing it to `if (revents & libc::POLLIN) != 0 { WatchEvent::Readable as c_uint } else { 0 }` [INFO] [stderr] --> src/watch.rs:56:9 [INFO] [stderr] | [INFO] [stderr] 56 | / 0 + [INFO] [stderr] 57 | | if (revents & libc::POLLIN) != 0 { WatchEvent::Readable as c_uint } else { 0 } + [INFO] [stderr] | |______________________________________________________________________________________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::identity_op)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_op [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/watch.rs:74:15 [INFO] [stderr] | [INFO] [stderr] 74 | pub fn fd(&self) -> RawFd { self.fd } [INFO] [stderr] | ^^^^^ help: consider passing by value instead: `self` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::trivially_copy_pass_by_ref)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/watch.rs:76:21 [INFO] [stderr] | [INFO] [stderr] 76 | pub fn readable(&self) -> bool { self.read } [INFO] [stderr] | ^^^^^ help: consider passing by value instead: `self` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/watch.rs:78:21 [INFO] [stderr] | [INFO] [stderr] 78 | pub fn writable(&self) -> bool { self.write } [INFO] [stderr] | ^^^^^ help: consider passing by value instead: `self` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/watch.rs:80:22 [INFO] [stderr] | [INFO] [stderr] 80 | pub fn to_pollfd(&self) -> libc::pollfd { [INFO] [stderr] | ^^^^^ help: consider passing by value instead: `self` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: transmute from a pointer type (`*mut libc::c_void`) to a reference type (`&watch::WatchList`) [INFO] [stderr] --> src/watch.rs:168:38 [INFO] [stderr] | [INFO] [stderr] 168 | let wlist: &WatchList = unsafe { mem::transmute(data) }; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: try: `&*(data as *const watch::WatchList)` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::transmute_ptr_to_ref)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#transmute_ptr_to_ref [INFO] [stderr] [INFO] [stderr] warning: transmute from a pointer type (`*mut libc::c_void`) to a reference type (`&watch::WatchList`) [INFO] [stderr] --> src/watch.rs:176:38 [INFO] [stderr] | [INFO] [stderr] 176 | let wlist: &WatchList = unsafe { mem::transmute(data) }; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: try: `&*(data as *const watch::WatchList)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#transmute_ptr_to_ref [INFO] [stderr] [INFO] [stderr] warning: transmute from a pointer type (`*mut libc::c_void`) to a reference type (`&watch::WatchList`) [INFO] [stderr] --> src/watch.rs:183:38 [INFO] [stderr] | [INFO] [stderr] 183 | let wlist: &WatchList = unsafe { mem::transmute(data) }; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: try: `&*(data as *const watch::WatchList)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#transmute_ptr_to_ref [INFO] [stderr] [INFO] [stderr] warning: transmute from a pointer type (`*mut libc::c_void`) to a reference type (`&connection::IConnection`) [INFO] [stderr] --> src/connection.rs:206:36 [INFO] [stderr] | [INFO] [stderr] 206 | let i: &IConnection = unsafe { mem::transmute(user_data) }; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `&*(user_data as *const connection::IConnection)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#transmute_ptr_to_ref [INFO] [stderr] [INFO] [stderr] warning: transmute from a reference to a pointer [INFO] [stderr] --> src/connection.rs:270:80 [INFO] [stderr] | [INFO] [stderr] 270 | ffi::dbus_connection_add_filter(c.conn(), Some(filter_message_cb), mem::transmute(&*c.i), None) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: try: `&*c.i as *const connection::IConnection as *mut libc::c_void` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_transmute [INFO] [stderr] [INFO] [stderr] warning: Comparing with null is better expressed by the .is_null() method [INFO] [stderr] --> src/connection.rs:281:12 [INFO] [stderr] | [INFO] [stderr] 281 | if conn == ptr::null_mut() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cmp_null [INFO] [stderr] [INFO] [stderr] warning: Comparing with null is better expressed by the .is_null() method [INFO] [stderr] --> src/connection.rs:293:12 [INFO] [stderr] | [INFO] [stderr] 293 | if conn == ptr::null_mut() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cmp_null [INFO] [stderr] [INFO] [stderr] warning: Comparing with null is better expressed by the .is_null() method [INFO] [stderr] --> src/connection.rs:324:12 [INFO] [stderr] | [INFO] [stderr] 324 | if response == ptr::null_mut() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cmp_null [INFO] [stderr] [INFO] [stderr] warning: transmute from a reference to a pointer [INFO] [stderr] --> src/connection.rs:417:42 [INFO] [stderr] | [INFO] [stderr] 417 | let user_data: *mut c_void = mem::transmute(&*self.i); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `&*self.i as *const connection::IConnection as *mut libc::c_void` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_transmute [INFO] [stderr] [INFO] [stderr] warning: Comparing with null is better expressed by the .is_null() method [INFO] [stderr] --> src/connection.rs:441:20 [INFO] [stderr] | [INFO] [stderr] 441 | if *citer == ptr::null_mut() { break }; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cmp_null [INFO] [stderr] [INFO] [stderr] warning: transmute from a pointer type (`*mut *mut i8`) to a reference type (`&*const i8`) [INFO] [stderr] --> src/connection.rs:442:17 [INFO] [stderr] | [INFO] [stderr] 442 | mem::transmute(citer) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: try: `&*(citer as *const *const i8)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#transmute_ptr_to_ref [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/connection.rs:444:20 [INFO] [stderr] | [INFO] [stderr] 444 | v.push(format!("{}", c_str_to_slice(s).unwrap())); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `c_str_to_slice(s).unwrap().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] error: this `if` has identical blocks [INFO] [stderr] --> src/signalargs.rs:56:79 [INFO] [stderr] | [INFO] [stderr] 56 | else if m.interface().as_ref().map(|x| &**x) != Some(Self::INTERFACE) { None } [INFO] [stderr] | ^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[deny(clippy::if_same_then_else)] on by default [INFO] [stderr] note: same as this [INFO] [stderr] --> src/signalargs.rs:55:48 [INFO] [stderr] | [INFO] [stderr] 55 | if m.msg_type() != MessageType::Signal { None } [INFO] [stderr] | ^^^^^^^^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#if_same_then_else [INFO] [stderr] [INFO] [stderr] warning: called `map(f)` on an Option value where `f` is a unit closure [INFO] [stderr] --> src/signalargs.rs:69:9 [INFO] [stderr] | [INFO] [stderr] 69 | sender.map(|s| r += &format!(",sender='{}'", s)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^- [INFO] [stderr] | | [INFO] [stderr] | help: try this: `if let Some(s) = sender { ... }` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::option_map_unit_fn)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#option_map_unit_fn [INFO] [stderr] [INFO] [stderr] warning: called `map(f)` on an Option value where `f` is a unit closure [INFO] [stderr] --> src/signalargs.rs:70:9 [INFO] [stderr] | [INFO] [stderr] 70 | path.map(|s| r += &format!(",path='{}'", s)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^- [INFO] [stderr] | | [INFO] [stderr] | help: try this: `if let Some(s) = path { ... }` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#option_map_unit_fn [INFO] [stderr] [INFO] [stderr] warning: needlessly taken reference of both operands [INFO] [stderr] --> src/signalargs.rs:89:12 [INFO] [stderr] | [INFO] [stderr] 89 | if &*msg.sender().unwrap() != &*c.unique_name() { continue; } [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::op_ref)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#op_ref [INFO] [stderr] help: use the values directly [INFO] [stderr] | [INFO] [stderr] 89 | if *msg.sender().unwrap() != *c.unique_name() { continue; } [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/arg/msgarg.rs:170:5 [INFO] [stderr] | [INFO] [stderr] 170 | fn as_any_mut<'a>(&'a mut $ss) -> &'a mut any::Any where T: 'static { $make_mut.as_any_mut() } [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 201 | deref_impl!(Box, self, &mut **self ); [INFO] [stderr] | ------------------------------------- in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stderr] [INFO] [stderr] warning: redundant closure found [INFO] [stderr] --> src/arg/msgarg.rs:191:62 [INFO] [stderr] | [INFO] [stderr] 191 | fn get(i: &mut Iter<'a>) -> Option { T::get(i).map(|v| $t::new(v)) } [INFO] [stderr] | ^^^^^^^^^^^^^^ help: remove closure as shown: `$t::new` [INFO] [stderr] ... [INFO] [stderr] 201 | deref_impl!(Box, self, &mut **self ); [INFO] [stderr] | ------------------------------------- in this macro invocation [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::redundant_closure)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stderr] [INFO] [stderr] warning: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/arg/msgarg.rs:170:5 [INFO] [stderr] | [INFO] [stderr] 170 | fn as_any_mut<'a>(&'a mut $ss) -> &'a mut any::Any where T: 'static { $make_mut.as_any_mut() } [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 202 | deref_impl!(Rc, self, Rc::get_mut(self).unwrap()); [INFO] [stderr] | -------------------------------------------------- in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stderr] [INFO] [stderr] warning: redundant closure found [INFO] [stderr] --> src/arg/msgarg.rs:191:62 [INFO] [stderr] | [INFO] [stderr] 191 | fn get(i: &mut Iter<'a>) -> Option { T::get(i).map(|v| $t::new(v)) } [INFO] [stderr] | ^^^^^^^^^^^^^^ help: remove closure as shown: `$t::new` [INFO] [stderr] ... [INFO] [stderr] 202 | deref_impl!(Rc, self, Rc::get_mut(self).unwrap()); [INFO] [stderr] | -------------------------------------------------- in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stderr] [INFO] [stderr] warning: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/arg/msgarg.rs:170:5 [INFO] [stderr] | [INFO] [stderr] 170 | fn as_any_mut<'a>(&'a mut $ss) -> &'a mut any::Any where T: 'static { $make_mut.as_any_mut() } [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 203 | deref_impl!(Arc, self, Arc::get_mut(self).unwrap()); [INFO] [stderr] | ---------------------------------------------------- in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stderr] [INFO] [stderr] warning: redundant closure found [INFO] [stderr] --> src/arg/msgarg.rs:191:62 [INFO] [stderr] | [INFO] [stderr] 191 | fn get(i: &mut Iter<'a>) -> Option { T::get(i).map(|v| $t::new(v)) } [INFO] [stderr] | ^^^^^^^^^^^^^^ help: remove closure as shown: `$t::new` [INFO] [stderr] ... [INFO] [stderr] 203 | deref_impl!(Arc, self, Arc::get_mut(self).unwrap()); [INFO] [stderr] | ---------------------------------------------------- in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/arg/msgarg.rs:280:36 [INFO] [stderr] | [INFO] [stderr] 280 | let m = m.append3(-1i32, &*format!("Hello world"), -3.14f64); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `"Hello world".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] error: approximate value of `f64::consts::PI` found. Consider using it directly [INFO] [stderr] --> src/arg/msgarg.rs:280:61 [INFO] [stderr] | [INFO] [stderr] 280 | let m = m.append3(-1i32, &*format!("Hello world"), -3.14f64); [INFO] [stderr] | ^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#approx_constant [INFO] [stderr] [INFO] [stderr] warning: casting u8 to i64 may become silently lossy if types change [INFO] [stderr] --> src/arg/basic_impl.rs:71:83 [INFO] [stderr] | [INFO] [stderr] 71 | fn append(self, i: &mut IterAppend) { arg_append_basic(&mut i.0, ArgType::$s, self as i64) } [INFO] [stderr] | ^^^^^^^^^^^ help: try: `i64::from(self)` [INFO] [stderr] ... [INFO] [stderr] 104 | integer_impl!(u8, Byte, b"y\0", i, Some(i as i64), u, Some(u as u64), f, Some(f as f64)); [INFO] [stderr] | -------------------------------------------------------------------------------------------- in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u8 to i64 may become silently lossy if types change [INFO] [stderr] --> src/arg/basic_impl.rs:84:84 [INFO] [stderr] | [INFO] [stderr] 84 | fn append(&self, i: &mut IterAppend) { arg_append_basic(&mut i.0, ArgType::$s, *self as i64) } [INFO] [stderr] | ^^^^^^^^^^^^ help: try: `i64::from(*self)` [INFO] [stderr] ... [INFO] [stderr] 104 | integer_impl!(u8, Byte, b"y\0", i, Some(i as i64), u, Some(u as u64), f, Some(f as f64)); [INFO] [stderr] | -------------------------------------------------------------------------------------------- in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u8 to i64 may become silently lossy if types change [INFO] [stderr] --> src/arg/basic_impl.rs:104:41 [INFO] [stderr] | [INFO] [stderr] 104 | integer_impl!(u8, Byte, b"y\0", i, Some(i as i64), u, Some(u as u64), f, Some(f as f64)); [INFO] [stderr] | ^^^^^^^^ help: try: `i64::from(i)` [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 u64 may become silently lossy if types change [INFO] [stderr] --> src/arg/basic_impl.rs:104:63 [INFO] [stderr] | [INFO] [stderr] 104 | integer_impl!(u8, Byte, b"y\0", i, Some(i as i64), u, Some(u as u64), f, Some(f as f64)); [INFO] [stderr] | ^^^^^^^^ help: try: `u64::from(u)` [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 f64 may become silently lossy if types change [INFO] [stderr] --> src/arg/basic_impl.rs:104:82 [INFO] [stderr] | [INFO] [stderr] 104 | integer_impl!(u8, Byte, b"y\0", i, Some(i as i64), u, Some(u as u64), f, Some(f as f64)); [INFO] [stderr] | ^^^^^^^^ help: try: `f64::from(f)` [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/arg/basic_impl.rs:71:83 [INFO] [stderr] | [INFO] [stderr] 71 | fn append(self, i: &mut IterAppend) { arg_append_basic(&mut i.0, ArgType::$s, self as i64) } [INFO] [stderr] | ^^^^^^^^^^^ help: try: `i64::from(self)` [INFO] [stderr] ... [INFO] [stderr] 105 | integer_impl!(i16, Int16, b"n\0", i, Some(i as i64), _u, None, f, Some(f as f64)); [INFO] [stderr] | -------------------------------------------------------------------------------------------- in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting i16 to i64 may become silently lossy if types change [INFO] [stderr] --> src/arg/basic_impl.rs:84:84 [INFO] [stderr] | [INFO] [stderr] 84 | fn append(&self, i: &mut IterAppend) { arg_append_basic(&mut i.0, ArgType::$s, *self as i64) } [INFO] [stderr] | ^^^^^^^^^^^^ help: try: `i64::from(*self)` [INFO] [stderr] ... [INFO] [stderr] 105 | integer_impl!(i16, Int16, b"n\0", i, Some(i as i64), _u, None, f, Some(f as f64)); [INFO] [stderr] | -------------------------------------------------------------------------------------------- in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting i16 to i64 may become silently lossy if types change [INFO] [stderr] --> src/arg/basic_impl.rs:105:43 [INFO] [stderr] | [INFO] [stderr] 105 | integer_impl!(i16, Int16, b"n\0", i, Some(i as i64), _u, None, f, Some(f as f64)); [INFO] [stderr] | ^^^^^^^^ help: try: `i64::from(i)` [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 f64 may become silently lossy if types change [INFO] [stderr] --> src/arg/basic_impl.rs:105:82 [INFO] [stderr] | [INFO] [stderr] 105 | integer_impl!(i16, Int16, b"n\0", i, Some(i as i64), _u, None, f, Some(f as f64)); [INFO] [stderr] | ^^^^^^^^ help: try: `f64::from(f)` [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 i64 may become silently lossy if types change [INFO] [stderr] --> src/arg/basic_impl.rs:71:83 [INFO] [stderr] | [INFO] [stderr] 71 | fn append(self, i: &mut IterAppend) { arg_append_basic(&mut i.0, ArgType::$s, self as i64) } [INFO] [stderr] | ^^^^^^^^^^^ help: try: `i64::from(self)` [INFO] [stderr] ... [INFO] [stderr] 106 | integer_impl!(u16, UInt16, b"q\0", i, Some(i as i64), u, Some(u as u64), f, Some(f as f64)); [INFO] [stderr] | -------------------------------------------------------------------------------------------- in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u16 to i64 may become silently lossy if types change [INFO] [stderr] --> src/arg/basic_impl.rs:84:84 [INFO] [stderr] | [INFO] [stderr] 84 | fn append(&self, i: &mut IterAppend) { arg_append_basic(&mut i.0, ArgType::$s, *self as i64) } [INFO] [stderr] | ^^^^^^^^^^^^ help: try: `i64::from(*self)` [INFO] [stderr] ... [INFO] [stderr] 106 | integer_impl!(u16, UInt16, b"q\0", i, Some(i as i64), u, Some(u as u64), f, Some(f as f64)); [INFO] [stderr] | -------------------------------------------------------------------------------------------- in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u16 to i64 may become silently lossy if types change [INFO] [stderr] --> src/arg/basic_impl.rs:106:44 [INFO] [stderr] | [INFO] [stderr] 106 | integer_impl!(u16, UInt16, b"q\0", i, Some(i as i64), u, Some(u as u64), f, Some(f as f64)); [INFO] [stderr] | ^^^^^^^^ help: try: `i64::from(i)` [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/arg/basic_impl.rs:106:63 [INFO] [stderr] | [INFO] [stderr] 106 | integer_impl!(u16, UInt16, b"q\0", i, Some(i as i64), u, Some(u as u64), f, Some(f as f64)); [INFO] [stderr] | ^^^^^^^^ help: try: `u64::from(u)` [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 f64 may become silently lossy if types change [INFO] [stderr] --> src/arg/basic_impl.rs:106:82 [INFO] [stderr] | [INFO] [stderr] 106 | integer_impl!(u16, UInt16, b"q\0", i, Some(i as i64), u, Some(u as u64), f, Some(f as f64)); [INFO] [stderr] | ^^^^^^^^ help: try: `f64::from(f)` [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/arg/basic_impl.rs:71:83 [INFO] [stderr] | [INFO] [stderr] 71 | fn append(self, i: &mut IterAppend) { arg_append_basic(&mut i.0, ArgType::$s, self as i64) } [INFO] [stderr] | ^^^^^^^^^^^ help: try: `i64::from(self)` [INFO] [stderr] ... [INFO] [stderr] 107 | integer_impl!(i32, Int32, b"i\0", i, Some(i as i64), _u, None, f, Some(f as f64)); [INFO] [stderr] | -------------------------------------------------------------------------------------------- in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting i32 to i64 may become silently lossy if types change [INFO] [stderr] --> src/arg/basic_impl.rs:84:84 [INFO] [stderr] | [INFO] [stderr] 84 | fn append(&self, i: &mut IterAppend) { arg_append_basic(&mut i.0, ArgType::$s, *self as i64) } [INFO] [stderr] | ^^^^^^^^^^^^ help: try: `i64::from(*self)` [INFO] [stderr] ... [INFO] [stderr] 107 | integer_impl!(i32, Int32, b"i\0", i, Some(i as i64), _u, None, f, Some(f as f64)); [INFO] [stderr] | -------------------------------------------------------------------------------------------- in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting i32 to i64 may become silently lossy if types change [INFO] [stderr] --> src/arg/basic_impl.rs:107:43 [INFO] [stderr] | [INFO] [stderr] 107 | integer_impl!(i32, Int32, b"i\0", i, Some(i as i64), _u, None, f, Some(f as f64)); [INFO] [stderr] | ^^^^^^^^ help: try: `i64::from(i)` [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 f64 may become silently lossy if types change [INFO] [stderr] --> src/arg/basic_impl.rs:107:82 [INFO] [stderr] | [INFO] [stderr] 107 | integer_impl!(i32, Int32, b"i\0", i, Some(i as i64), _u, None, f, Some(f as f64)); [INFO] [stderr] | ^^^^^^^^ help: try: `f64::from(f)` [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 i64 may become silently lossy if types change [INFO] [stderr] --> src/arg/basic_impl.rs:71:83 [INFO] [stderr] | [INFO] [stderr] 71 | fn append(self, i: &mut IterAppend) { arg_append_basic(&mut i.0, ArgType::$s, self as i64) } [INFO] [stderr] | ^^^^^^^^^^^ help: try: `i64::from(self)` [INFO] [stderr] ... [INFO] [stderr] 108 | integer_impl!(u32, UInt32, b"u\0", i, Some(i as i64), u, Some(u as u64), f, Some(f as f64)); [INFO] [stderr] | -------------------------------------------------------------------------------------------- in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u32 to i64 may become silently lossy if types change [INFO] [stderr] --> src/arg/basic_impl.rs:84:84 [INFO] [stderr] | [INFO] [stderr] 84 | fn append(&self, i: &mut IterAppend) { arg_append_basic(&mut i.0, ArgType::$s, *self as i64) } [INFO] [stderr] | ^^^^^^^^^^^^ help: try: `i64::from(*self)` [INFO] [stderr] ... [INFO] [stderr] 108 | integer_impl!(u32, UInt32, b"u\0", i, Some(i as i64), u, Some(u as u64), f, Some(f as f64)); [INFO] [stderr] | -------------------------------------------------------------------------------------------- in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u32 to i64 may become silently lossy if types change [INFO] [stderr] --> src/arg/basic_impl.rs:108:44 [INFO] [stderr] | [INFO] [stderr] 108 | integer_impl!(u32, UInt32, b"u\0", i, Some(i as i64), u, Some(u as u64), f, Some(f as f64)); [INFO] [stderr] | ^^^^^^^^ help: try: `i64::from(i)` [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/arg/basic_impl.rs:108:63 [INFO] [stderr] | [INFO] [stderr] 108 | integer_impl!(u32, UInt32, b"u\0", i, Some(i as i64), u, Some(u as u64), f, Some(f as f64)); [INFO] [stderr] | ^^^^^^^^ help: try: `u64::from(u)` [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/arg/basic_impl.rs:108:82 [INFO] [stderr] | [INFO] [stderr] 108 | integer_impl!(u32, UInt32, b"u\0", i, Some(i as i64), u, Some(u as u64), f, Some(f as f64)); [INFO] [stderr] | ^^^^^^^^ help: try: `f64::from(f)` [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 f64 may become silently lossy if types change [INFO] [stderr] --> src/arg/basic_impl.rs:155:120 [INFO] [stderr] | [INFO] [stderr] 155 | refarg_impl!(bool, _i, Some(if *_i { 1 } else { 0 }), None, Some(if *_i { 1 as u64 } else { 0 as u64 }), Some(if *_i { 1 as f64 } else { 0 as f64 })); [INFO] [stderr] | ^^^^^^^^ help: try: `f64::from(1)` [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 f64 may become silently lossy if types change [INFO] [stderr] --> src/arg/basic_impl.rs:155:138 [INFO] [stderr] | [INFO] [stderr] 155 | refarg_impl!(bool, _i, Some(if *_i { 1 } else { 0 }), None, Some(if *_i { 1 as u64 } else { 0 as u64 }), Some(if *_i { 1 as f64 } else { 0 as f64 })); [INFO] [stderr] | ^^^^^^^^ help: try: `f64::from(0)` [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: length comparison to zero [INFO] [stderr] --> src/arg/basic_impl.rs:182:31 [INFO] [stderr] | [INFO] [stderr] 182 | let v: Cow<[u8]> = if b.len() > 0 && b[b.len()-1] == 0 { Cow::Borrowed(b) } [INFO] [stderr] | ^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!b.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: redundant closure found [INFO] [stderr] --> src/arg/basic_impl.rs:211:69 [INFO] [stderr] | [INFO] [stderr] 211 | fn get(i: &mut Iter<'a>) -> Option { <&str>::get(i).map(|s| String::from(s)) } [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: remove closure as shown: `String::from` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stderr] [INFO] [stderr] warning: casting i32 to i64 may become silently lossy if types change [INFO] [stderr] --> src/arg/basic_impl.rs:243:53 [INFO] [stderr] | [INFO] [stderr] 243 | arg_append_basic(&mut i.0, ArgType::UnixFd, self.as_raw_fd() as i64) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ help: try: `i64::from(self.as_raw_fd())` [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/arg/basic_impl.rs:254:66 [INFO] [stderr] | [INFO] [stderr] 254 | refarg_impl!(OwnedFd, _i, { use std::os::unix::io::AsRawFd; Some(_i.as_raw_fd() as i64) }, None, None, None); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: try: `i64::from(_i.as_raw_fd())` [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: redundant closure found [INFO] [stderr] --> src/arg/variantstruct_impl.rs:14:76 [INFO] [stderr] | [INFO] [stderr] 14 | i.recurse(ArgType::Variant).and_then(|mut si| si.get_refarg()).map(|v| Variant(v)) [INFO] [stderr] | ^^^^^^^^^^^^^^ help: remove closure as shown: `Variant` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stderr] [INFO] [stderr] warning: redundant closure found [INFO] [stderr] --> src/arg/variantstruct_impl.rs:61:68 [INFO] [stderr] | [INFO] [stderr] 61 | i.recurse(ArgType::Variant).and_then(|mut si| si.get().map(|v| Variant(v))) [INFO] [stderr] | ^^^^^^^^^^^^^^ help: remove closure as shown: `Variant` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stderr] [INFO] [stderr] warning: redundant closure found [INFO] [stderr] --> src/arg/variantstruct_impl.rs:67:41 [INFO] [stderr] | [INFO] [stderr] 67 | i.recurse(ArgType::Variant).map(|v| Variant(v)) [INFO] [stderr] | ^^^^^^^^^^^^^^ help: remove closure as shown: `Variant` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stderr] [INFO] [stderr] warning: this block may be rewritten with the `?` operator [INFO] [stderr] --> src/arg/variantstruct_impl.rs:130:9 [INFO] [stderr] | [INFO] [stderr] 130 | if si.is_none() { return None; } [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace_it_with: `si?;` [INFO] [stderr] ... [INFO] [stderr] 177 | struct_impl!(a A,); [INFO] [stderr] | ------------------- in this macro invocation [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::question_mark)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#question_mark [INFO] [stderr] [INFO] [stderr] warning: this block may be rewritten with the `?` operator [INFO] [stderr] --> src/arg/variantstruct_impl.rs:136:13 [INFO] [stderr] | [INFO] [stderr] 136 | if $n.is_none() { return None; } [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace_it_with: `$n?;` [INFO] [stderr] ... [INFO] [stderr] 177 | struct_impl!(a A,); [INFO] [stderr] | ------------------- in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#question_mark [INFO] [stderr] [INFO] [stderr] warning: this block may be rewritten with the `?` operator [INFO] [stderr] --> src/arg/variantstruct_impl.rs:130:9 [INFO] [stderr] | [INFO] [stderr] 130 | if si.is_none() { return None; } [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace_it_with: `si?;` [INFO] [stderr] ... [INFO] [stderr] 178 | struct_impl!(a A, b B,); [INFO] [stderr] | ------------------------ in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#question_mark [INFO] [stderr] [INFO] [stderr] warning: this block may be rewritten with the `?` operator [INFO] [stderr] --> src/arg/variantstruct_impl.rs:136:13 [INFO] [stderr] | [INFO] [stderr] 136 | if $n.is_none() { return None; } [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace_it_with: `$n?;` [INFO] [stderr] ... [INFO] [stderr] 178 | struct_impl!(a A, b B,); [INFO] [stderr] | ------------------------ in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#question_mark [INFO] [stderr] [INFO] [stderr] warning: this block may be rewritten with the `?` operator [INFO] [stderr] --> src/arg/variantstruct_impl.rs:130:9 [INFO] [stderr] | [INFO] [stderr] 130 | if si.is_none() { return None; } [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace_it_with: `si?;` [INFO] [stderr] ... [INFO] [stderr] 179 | struct_impl!(a A, b B, c C,); [INFO] [stderr] | ----------------------------- in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#question_mark [INFO] [stderr] [INFO] [stderr] warning: this block may be rewritten with the `?` operator [INFO] [stderr] --> src/arg/variantstruct_impl.rs:136:13 [INFO] [stderr] | [INFO] [stderr] 136 | if $n.is_none() { return None; } [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace_it_with: `$n?;` [INFO] [stderr] ... [INFO] [stderr] 179 | struct_impl!(a A, b B, c C,); [INFO] [stderr] | ----------------------------- in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#question_mark [INFO] [stderr] [INFO] [stderr] warning: this block may be rewritten with the `?` operator [INFO] [stderr] --> src/arg/variantstruct_impl.rs:130:9 [INFO] [stderr] | [INFO] [stderr] 130 | if si.is_none() { return None; } [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace_it_with: `si?;` [INFO] [stderr] ... [INFO] [stderr] 180 | struct_impl!(a A, b B, c C, d D,); [INFO] [stderr] | ---------------------------------- in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#question_mark [INFO] [stderr] [INFO] [stderr] warning: this block may be rewritten with the `?` operator [INFO] [stderr] --> src/arg/variantstruct_impl.rs:136:13 [INFO] [stderr] | [INFO] [stderr] 136 | if $n.is_none() { return None; } [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace_it_with: `$n?;` [INFO] [stderr] ... [INFO] [stderr] 180 | struct_impl!(a A, b B, c C, d D,); [INFO] [stderr] | ---------------------------------- in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#question_mark [INFO] [stderr] [INFO] [stderr] warning: this block may be rewritten with the `?` operator [INFO] [stderr] --> src/arg/variantstruct_impl.rs:130:9 [INFO] [stderr] | [INFO] [stderr] 130 | if si.is_none() { return None; } [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace_it_with: `si?;` [INFO] [stderr] ... [INFO] [stderr] 181 | struct_impl!(a A, b B, c C, d D, e E,); [INFO] [stderr] | --------------------------------------- in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#question_mark [INFO] [stderr] [INFO] [stderr] warning: this block may be rewritten with the `?` operator [INFO] [stderr] --> src/arg/variantstruct_impl.rs:136:13 [INFO] [stderr] | [INFO] [stderr] 136 | if $n.is_none() { return None; } [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace_it_with: `$n?;` [INFO] [stderr] ... [INFO] [stderr] 181 | struct_impl!(a A, b B, c C, d D, e E,); [INFO] [stderr] | --------------------------------------- in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#question_mark [INFO] [stderr] [INFO] [stderr] warning: this block may be rewritten with the `?` operator [INFO] [stderr] --> src/arg/variantstruct_impl.rs:130:9 [INFO] [stderr] | [INFO] [stderr] 130 | if si.is_none() { return None; } [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace_it_with: `si?;` [INFO] [stderr] ... [INFO] [stderr] 182 | struct_impl!(a A, b B, c C, d D, e E, f F,); [INFO] [stderr] | -------------------------------------------- in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#question_mark [INFO] [stderr] [INFO] [stderr] warning: this block may be rewritten with the `?` operator [INFO] [stderr] --> src/arg/variantstruct_impl.rs:136:13 [INFO] [stderr] | [INFO] [stderr] 136 | if $n.is_none() { return None; } [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace_it_with: `$n?;` [INFO] [stderr] ... [INFO] [stderr] 182 | struct_impl!(a A, b B, c C, d D, e E, f F,); [INFO] [stderr] | -------------------------------------------- in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#question_mark [INFO] [stderr] [INFO] [stderr] warning: this block may be rewritten with the `?` operator [INFO] [stderr] --> src/arg/variantstruct_impl.rs:130:9 [INFO] [stderr] | [INFO] [stderr] 130 | if si.is_none() { return None; } [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace_it_with: `si?;` [INFO] [stderr] ... [INFO] [stderr] 183 | struct_impl!(a A, b B, c C, d D, e E, f F, g G,); [INFO] [stderr] | ------------------------------------------------- in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#question_mark [INFO] [stderr] [INFO] [stderr] warning: this block may be rewritten with the `?` operator [INFO] [stderr] --> src/arg/variantstruct_impl.rs:136:13 [INFO] [stderr] | [INFO] [stderr] 136 | if $n.is_none() { return None; } [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace_it_with: `$n?;` [INFO] [stderr] ... [INFO] [stderr] 183 | struct_impl!(a A, b B, c C, d D, e E, f F, g G,); [INFO] [stderr] | ------------------------------------------------- in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#question_mark [INFO] [stderr] [INFO] [stderr] warning: this block may be rewritten with the `?` operator [INFO] [stderr] --> src/arg/variantstruct_impl.rs:130:9 [INFO] [stderr] | [INFO] [stderr] 130 | if si.is_none() { return None; } [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace_it_with: `si?;` [INFO] [stderr] ... [INFO] [stderr] 184 | struct_impl!(a A, b B, c C, d D, e E, f F, g G, h H,); [INFO] [stderr] | ------------------------------------------------------ in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#question_mark [INFO] [stderr] [INFO] [stderr] warning: this block may be rewritten with the `?` operator [INFO] [stderr] --> src/arg/variantstruct_impl.rs:136:13 [INFO] [stderr] | [INFO] [stderr] 136 | if $n.is_none() { return None; } [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace_it_with: `$n?;` [INFO] [stderr] ... [INFO] [stderr] 184 | struct_impl!(a A, b B, c C, d D, e E, f F, g G, h H,); [INFO] [stderr] | ------------------------------------------------------ in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#question_mark [INFO] [stderr] [INFO] [stderr] warning: this block may be rewritten with the `?` operator [INFO] [stderr] --> src/arg/variantstruct_impl.rs:130:9 [INFO] [stderr] | [INFO] [stderr] 130 | if si.is_none() { return None; } [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace_it_with: `si?;` [INFO] [stderr] ... [INFO] [stderr] 185 | struct_impl!(a A, b B, c C, d D, e E, f F, g G, h H, i I,); [INFO] [stderr] | ----------------------------------------------------------- in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#question_mark [INFO] [stderr] [INFO] [stderr] warning: this block may be rewritten with the `?` operator [INFO] [stderr] --> src/arg/variantstruct_impl.rs:136:13 [INFO] [stderr] | [INFO] [stderr] 136 | if $n.is_none() { return None; } [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace_it_with: `$n?;` [INFO] [stderr] ... [INFO] [stderr] 185 | struct_impl!(a A, b B, c C, d D, e E, f F, g G, h H, i I,); [INFO] [stderr] | ----------------------------------------------------------- in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#question_mark [INFO] [stderr] [INFO] [stderr] warning: this block may be rewritten with the `?` operator [INFO] [stderr] --> src/arg/variantstruct_impl.rs:130:9 [INFO] [stderr] | [INFO] [stderr] 130 | if si.is_none() { return None; } [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace_it_with: `si?;` [INFO] [stderr] ... [INFO] [stderr] 186 | struct_impl!(a A, b B, c C, d D, e E, f F, g G, h H, i I, j J,); [INFO] [stderr] | ---------------------------------------------------------------- in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#question_mark [INFO] [stderr] [INFO] [stderr] warning: this block may be rewritten with the `?` operator [INFO] [stderr] --> src/arg/variantstruct_impl.rs:136:13 [INFO] [stderr] | [INFO] [stderr] 136 | if $n.is_none() { return None; } [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace_it_with: `$n?;` [INFO] [stderr] ... [INFO] [stderr] 186 | struct_impl!(a A, b B, c C, d D, e E, f F, g G, h H, i I, j J,); [INFO] [stderr] | ---------------------------------------------------------------- in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#question_mark [INFO] [stderr] [INFO] [stderr] warning: this block may be rewritten with the `?` operator [INFO] [stderr] --> src/arg/variantstruct_impl.rs:130:9 [INFO] [stderr] | [INFO] [stderr] 130 | if si.is_none() { return None; } [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace_it_with: `si?;` [INFO] [stderr] ... [INFO] [stderr] 187 | struct_impl!(a A, b B, c C, d D, e E, f F, g G, h H, i I, j J, k K,); [INFO] [stderr] | --------------------------------------------------------------------- in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#question_mark [INFO] [stderr] [INFO] [stderr] warning: this block may be rewritten with the `?` operator [INFO] [stderr] --> src/arg/variantstruct_impl.rs:136:13 [INFO] [stderr] | [INFO] [stderr] 136 | if $n.is_none() { return None; } [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace_it_with: `$n?;` [INFO] [stderr] ... [INFO] [stderr] 187 | struct_impl!(a A, b B, c C, d D, e E, f F, g G, h H, i I, j J, k K,); [INFO] [stderr] | --------------------------------------------------------------------- in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#question_mark [INFO] [stderr] [INFO] [stderr] warning: this block may be rewritten with the `?` operator [INFO] [stderr] --> src/arg/variantstruct_impl.rs:130:9 [INFO] [stderr] | [INFO] [stderr] 130 | if si.is_none() { return None; } [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace_it_with: `si?;` [INFO] [stderr] ... [INFO] [stderr] 188 | struct_impl!(a A, b B, c C, d D, e E, f F, g G, h H, i I, j J, k K, l L,); [INFO] [stderr] | -------------------------------------------------------------------------- in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#question_mark [INFO] [stderr] [INFO] [stderr] warning: this block may be rewritten with the `?` operator [INFO] [stderr] --> src/arg/variantstruct_impl.rs:136:13 [INFO] [stderr] | [INFO] [stderr] 136 | if $n.is_none() { return None; } [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace_it_with: `$n?;` [INFO] [stderr] ... [INFO] [stderr] 188 | struct_impl!(a A, b B, c C, d D, e E, f F, g G, h H, i I, j J, k K, l L,); [INFO] [stderr] | -------------------------------------------------------------------------- in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#question_mark [INFO] [stderr] [INFO] [stderr] warning: Comparing with null is better expressed by the .is_null() method [INFO] [stderr] --> src/arg/array_impl.rs:103:16 [INFO] [stderr] | [INFO] [stderr] 103 | if v == ptr::null_mut() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cmp_null [INFO] [stderr] [INFO] [stderr] warning: this block may be rewritten with the `?` operator [INFO] [stderr] --> src/arg/array_impl.rs:160:13 [INFO] [stderr] | [INFO] [stderr] 160 | if k.is_none() { return None }; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace_it_with: `k?;` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#question_mark [INFO] [stderr] [INFO] [stderr] warning: this block may be rewritten with the `?` operator [INFO] [stderr] --> src/arg/array_impl.rs:163:13 [INFO] [stderr] | [INFO] [stderr] 163 | if v.is_none() { return None }; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace_it_with: `v?;` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#question_mark [INFO] [stderr] [INFO] [stderr] warning: impl for `HashMap` should be generalized over different hashers [INFO] [stderr] --> src/arg/array_impl.rs:171:34 [INFO] [stderr] | [INFO] [stderr] 171 | impl Arg for HashMap { [INFO] [stderr] | ^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::implicit_hasher)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#implicit_hasher [INFO] [stderr] help: consider adding a type parameter [INFO] [stderr] | [INFO] [stderr] 171 | impl Arg for HashMap { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: impl for `HashMap` should be generalized over different hashers [INFO] [stderr] --> src/arg/array_impl.rs:177:67 [INFO] [stderr] | [INFO] [stderr] 177 | impl Append for HashMap { [INFO] [stderr] | ^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#implicit_hasher [INFO] [stderr] help: consider adding a type parameter [INFO] [stderr] | [INFO] [stderr] 177 | impl Append for HashMap { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: impl for `HashMap` should be generalized over different hashers [INFO] [stderr] --> src/arg/array_impl.rs:183:74 [INFO] [stderr] | [INFO] [stderr] 183 | impl<'a, K: DictKey + Get<'a> + Eq + Hash, V: Arg + Get<'a>> Get<'a> for HashMap { [INFO] [stderr] | ^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#implicit_hasher [INFO] [stderr] help: consider adding a type parameter [INFO] [stderr] | [INFO] [stderr] 183 | impl<'a, K: DictKey + Get<'a> + Eq + Hash, V: Arg + Get<'a>, S: ::std::hash::BuildHasher> Get<'a> for HashMap { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: identical conversion [INFO] [stderr] --> src/arg/array_impl.rs:186:30 [INFO] [stderr] | [INFO] [stderr] 186 | Dict::get(i).map(|d| d.into_iter().collect()) [INFO] [stderr] | ^^^^^^^^^^^^^ help: consider removing `.into_iter()`: `d` [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: impl for `HashMap` should be generalized over different hashers [INFO] [stderr] --> src/arg/array_impl.rs:190:67 [INFO] [stderr] | [INFO] [stderr] 190 | impl RefArg for HashMap { [INFO] [stderr] | ^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#implicit_hasher [INFO] [stderr] help: consider adding a type parameter [INFO] [stderr] | [INFO] [stderr] 190 | impl RefArg for HashMap { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: casting u8 to i32 may become silently lossy if types change [INFO] [stderr] --> src/arg/array_impl.rs:457:41 [INFO] [stderr] | [INFO] [stderr] 457 | let key = ArgType::from_i32(i.signature().as_bytes()[2] as i32).unwrap(); // The third character, after "a{", is our key. [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `i32::from(i.signature().as_bytes()[2])` [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: Comparing with null is better expressed by the .is_null() method [INFO] [stderr] --> src/arg/mod.rs:215:21 [INFO] [stderr] | [INFO] [stderr] 215 | assert!(c != ptr::null_mut()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cmp_null [INFO] [stderr] [INFO] [stderr] warning: defining a method called `next` on this type; consider implementing the `std::iter::Iterator` trait or choosing a less ambiguous name [INFO] [stderr] --> src/arg/mod.rs:234:5 [INFO] [stderr] | [INFO] [stderr] 234 | / pub fn next(&mut self) -> bool { [INFO] [stderr] 235 | | self.2 += 1; [INFO] [stderr] 236 | | unsafe { ffi::dbus_message_iter_next(&mut self.0) != 0 } [INFO] [stderr] 237 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::should_implement_trait)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#should_implement_trait [INFO] [stderr] [INFO] [stderr] warning: using `clone` on a `Copy` type [INFO] [stderr] --> src/arg/mod.rs:293:21 [INFO] [stderr] | [INFO] [stderr] 293 | let mut z = self.clone(); [INFO] [stderr] | ^^^^^^^^^^^^ help: try dereferencing it: `*self` [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: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/arg/mod.rs:404:30 [INFO] [stderr] | [INFO] [stderr] 404 | pub fn expected_arg_type(&self) -> ArgType { self.expected } [INFO] [stderr] | ^^^^^ help: consider passing by value instead: `self` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/arg/mod.rs:407:27 [INFO] [stderr] | [INFO] [stderr] 407 | pub fn found_arg_type(&self) -> ArgType { self.found } [INFO] [stderr] | ^^^^^ help: consider passing by value instead: `self` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/arg/mod.rs:412:16 [INFO] [stderr] | [INFO] [stderr] 412 | pub fn pos(&self) -> u32 { self.position } [INFO] [stderr] | ^^^^^ help: consider passing by value instead: `self` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: very complex type used. Consider factoring parts into `type` definitions [INFO] [stderr] --> src/stdintf.rs:54:48 [INFO] [stderr] | [INFO] [stderr] 54 | fn get_all(&self, interface_name: &str) -> Result<::std::collections::HashMap>>, Self::Err>; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#type_complexity [INFO] [stderr] [INFO] [stderr] warning: very complex type used. Consider factoring parts into `type` definitions [INFO] [stderr] --> src/stdintf.rs:73:48 [INFO] [stderr] | [INFO] [stderr] 73 | fn get_all(&self, interface_name: &str) -> Result<::std::collections::HashMap>>, Self::Err> { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#type_complexity [INFO] [stderr] [INFO] [stderr] warning: very complex type used. Consider factoring parts into `type` definitions [INFO] [stderr] --> src/stdintf.rs:124:38 [INFO] [stderr] | [INFO] [stderr] 124 | fn get_managed_objects(&self) -> Result<::std::collections::HashMap<::Path<'static>, ::std::collections::HashMap>>>>, Self::Err>; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#type_complexity [INFO] [stderr] [INFO] [stderr] warning: very complex type used. Consider factoring parts into `type` definitions [INFO] [stderr] --> src/stdintf.rs:130:38 [INFO] [stderr] | [INFO] [stderr] 130 | fn get_managed_objects(&self) -> Result<::std::collections::HashMap<::Path<'static>, ::std::collections::HashMap>>>>, Self::Err> { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#type_complexity [INFO] [stderr] [INFO] [stderr] warning: very complex type used. Consider factoring parts into `type` definitions [INFO] [stderr] --> src/stdintf.rs:135:22 [INFO] [stderr] | [INFO] [stderr] 135 | let objects: ::std::collections::HashMap<::Path<'static>, ::std::collections::HashMap>>>> = try!(i.read()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#type_complexity [INFO] [stderr] [INFO] [stderr] warning: use of `unwrap_or` followed by a function call [INFO] [stderr] --> src/tree/utils.rs:50:69 [INFO] [stderr] | [INFO] [stderr] 50 | let n = self.0.as_ref().map(|n| format!("name=\"{}\" ", n)).unwrap_or("".into()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: try this: `unwrap_or_else(|| "".into())` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::or_fun_call)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] [INFO] [stderr] warning: use of `unwrap_or` followed by a call to `new` [INFO] [stderr] --> src/tree/utils.rs:73:9 [INFO] [stderr] | [INFO] [stderr] 73 | / self.0.as_ref().map(|s| s.iter().fold("".into(), |aa, (ak, av)| { [INFO] [stderr] 74 | | format!("{}{}\n", aa, indent, ak, av) [INFO] [stderr] 75 | | })).unwrap_or(String::new()) [INFO] [stderr] | |____________________________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 73 | self.0.as_ref().map(|s| s.iter().fold("".into(), |aa, (ak, av)| { [INFO] [stderr] 74 | format!("{}{}\n", aa, indent, ak, av) [INFO] [stderr] 75 | })).unwrap_or_default() [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: very complex type used. Consider factoring parts into `type` definitions [INFO] [stderr] --> src/tree/methodtype.rs:162:20 [INFO] [stderr] | [INFO] [stderr] 162 | type GetProp = RefCell) -> Result<(), MethodErr>>; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#type_complexity [INFO] [stderr] [INFO] [stderr] warning: very complex type used. Consider factoring parts into `type` definitions [INFO] [stderr] --> src/tree/methodtype.rs:163:20 [INFO] [stderr] | [INFO] [stderr] 163 | type SetProp = RefCell) -> Result<(), MethodErr>>; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#type_complexity [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/tree/leaves.rs:186:19 [INFO] [stderr] | [INFO] [stderr] 186 | fn introspect(&self) -> &'static str { [INFO] [stderr] | ^^^^^ help: consider passing by value instead: `self` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/tree/leaves.rs:187:9 [INFO] [stderr] | [INFO] [stderr] 187 | / match self { [INFO] [stderr] 188 | | &Access::Read => "read", [INFO] [stderr] 189 | | &Access::ReadWrite => "readwrite", [INFO] [stderr] 190 | | &Access::Write => "write", [INFO] [stderr] 191 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 187 | match *self { [INFO] [stderr] 188 | Access::Read => "read", [INFO] [stderr] 189 | Access::ReadWrite => "readwrite", [INFO] [stderr] 190 | Access::Write => "write", [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: needlessly taken reference of both operands [INFO] [stderr] --> src/tree/leaves.rs:307:16 [INFO] [stderr] | [INFO] [stderr] 307 | if &*subiter.signature() != &*self.sig { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#op_ref [INFO] [stderr] help: use the values directly [INFO] [stderr] | [INFO] [stderr] 307 | if *subiter.signature() != *self.sig { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: needlessly taken reference of both operands [INFO] [stderr] --> src/tree/leaves.rs:343:43 [INFO] [stderr] | [INFO] [stderr] 343 | let vpos = v.iter().position(|vv| &*vv.interface_name == &**iface); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#op_ref [INFO] [stderr] help: use the values directly [INFO] [stderr] | [INFO] [stderr] 343 | let vpos = v.iter().position(|vv| *vv.interface_name == **iface); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ ^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: called `.get().unwrap()` on a BTreeMap. Using `[]` is more clear and more concise [INFO] [stderr] --> src/tree/leaves.rs:538:17 [INFO] [stderr] | [INFO] [stderr] 538 | let idict = pmap.get(&Path::from("/test")).unwrap(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `&pmap[&Path::from("/test")]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_unwrap [INFO] [stderr] [INFO] [stderr] warning: called `.get().unwrap()` on a BTreeMap. Using `[]` is more clear and more concise [INFO] [stderr] --> src/tree/leaves.rs:540:20 [INFO] [stderr] | [INFO] [stderr] 540 | let propdict = imap.get("com.example.test").unwrap(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `&imap["com.example.test"]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_unwrap [INFO] [stderr] [INFO] [stderr] warning: called `.get_mut().unwrap()` on a Vec. Using `[]` is more clear and more concise [INFO] [stderr] --> src/tree/leaves.rs:580:13 [INFO] [stderr] | [INFO] [stderr] 580 | assert!(r.get_mut(0).unwrap().as_result().is_err()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: try this: `&mut r[0]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_unwrap [INFO] [stderr] [INFO] [stderr] warning: called `.get_mut().unwrap()` on a Vec. Using `[]` is more clear and more concise [INFO] [stderr] --> src/tree/leaves.rs:587:13 [INFO] [stderr] | [INFO] [stderr] 587 | assert!(r.get_mut(0).unwrap().as_result().is_err()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: try this: `&mut r[0]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_unwrap [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/tree/objectpath.rs:16:46 [INFO] [stderr] | [INFO] [stderr] 16 | a, indent, name, &*k, params, if contents.len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!contents.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/tree/objectpath.rs:19:20 [INFO] [stderr] | [INFO] [stderr] 19 | else { format!("/") } [INFO] [stderr] | ^^^^^^^^^^^^ help: consider using .to_string(): `"/".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: defining a method called `add` on this type; consider implementing the `std::ops::Add` trait or choosing a less ambiguous name [INFO] [stderr] --> src/tree/objectpath.rs:140:5 [INFO] [stderr] | [INFO] [stderr] 140 | / pub fn add>>>(mut self, s: I) -> Self { [INFO] [stderr] 141 | | let m = s.into(); [INFO] [stderr] 142 | | if !m.properties.is_empty() { self.add_property_handler(); } [INFO] [stderr] 143 | | self.ifaces.insert(m.name.clone(), m); [INFO] [stderr] 144 | | self [INFO] [stderr] 145 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#should_implement_trait [INFO] [stderr] [INFO] [stderr] warning: defining a method called `add` on this type; consider implementing the `std::ops::Add` trait or choosing a less ambiguous name [INFO] [stderr] --> src/tree/objectpath.rs:323:5 [INFO] [stderr] | [INFO] [stderr] 323 | / pub fn add>>>(mut self, s: I) -> Self { [INFO] [stderr] 324 | | self.insert(s); [INFO] [stderr] 325 | | self [INFO] [stderr] 326 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#should_implement_trait [INFO] [stderr] [INFO] [stderr] warning: single-character string constant used as pattern [INFO] [stderr] --> src/tree/objectpath.rs:401:50 [INFO] [stderr] | [INFO] [stderr] 401 | if direct_only && child.contains("/") {None} else {Some(&**v)} [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: you don't need to add `&` to both the expression and the patterns [INFO] [stderr] --> src/tree/objectpath.rs:445:13 [INFO] [stderr] | [INFO] [stderr] 445 | / if let &Some(ConnectionItem::MethodCall(ref msg)) = &n { [INFO] [stderr] 446 | | if let Some(v) = self.tree.handle(&msg) { [INFO] [stderr] 447 | | // Probably the wisest is to ignore any send errors here - [INFO] [stderr] 448 | | // maybe the remote has disconnected during our processing. [INFO] [stderr] ... | [INFO] [stderr] 451 | | } [INFO] [stderr] 452 | | } [INFO] [stderr] | |_____________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: try [INFO] [stderr] | [INFO] [stderr] 445 | if let Some(ConnectionItem::MethodCall(ref msg)) = n { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^ [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/lib.rs:81:22 [INFO] [stderr] | [INFO] [stderr] 81 | fn c_str_to_slice(c: & *const c_char) -> Option<&str> { [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: consider passing by value instead: `*const c_char` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: Comparing with null is better expressed by the .is_null() method [INFO] [stderr] --> src/lib.rs:82:8 [INFO] [stderr] | [INFO] [stderr] 82 | if *c == ptr::null() { None } [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cmp_null [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/lib.rs:215:17 [INFO] [stderr] | [INFO] [stderr] 215 | / match n { [INFO] [stderr] 216 | | ConnectionItem::MethodCall(ref m) => { [INFO] [stderr] 217 | | let reply = Message::new_method_return(m).unwrap(); [INFO] [stderr] 218 | | c.send(reply).unwrap(); [INFO] [stderr] ... | [INFO] [stderr] 221 | | _ => {} [INFO] [stderr] 222 | | } [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] 215 | if let ConnectionItem::MethodCall(ref m) = n { [INFO] [stderr] 216 | let reply = Message::new_method_return(m).unwrap(); [INFO] [stderr] 217 | c.send(reply).unwrap(); [INFO] [stderr] 218 | break; [INFO] [stderr] 219 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/lib.rs:241:17 [INFO] [stderr] | [INFO] [stderr] 241 | let n = format!("com.example.hello.test.register_name"); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `"com.example.hello.test.register_name".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: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/lib.rs:256:13 [INFO] [stderr] | [INFO] [stderr] 256 | / match n { [INFO] [stderr] 257 | | ConnectionItem::Signal(s) => { [INFO] [stderr] 258 | | let (_, p, i, m) = s.headers(); [INFO] [stderr] 259 | | match (&*p.unwrap(), &*i.unwrap(), &*m.unwrap()) { [INFO] [stderr] ... | [INFO] [stderr] 267 | | _ => {}, [INFO] [stderr] 268 | | } [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] 256 | if let ConnectionItem::Signal(s) = n { [INFO] [stderr] 257 | let (_, p, i, m) = s.headers(); [INFO] [stderr] 258 | match (&*p.unwrap(), &*i.unwrap(), &*m.unwrap()) { [INFO] [stderr] 259 | ("/mysignal", "com.example.signaltest", "ThisIsASignal") => { [INFO] [stderr] 260 | assert_eq!(&*s.sender().unwrap(), &*uname); [INFO] [stderr] 261 | break; [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/lib.rs:278:17 [INFO] [stderr] | [INFO] [stderr] 278 | assert!(d.len() > 0); [INFO] [stderr] | ^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!d.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] error: aborting due to 4 previous errors [INFO] [stderr] [INFO] [stderr] error: Could not compile `dbus`. [INFO] [stderr] [INFO] [stderr] To learn more, run the command again with --verbose. [INFO] running `"docker" "inspect" "56b0d1a41033616473521d51948611b28ad29eeb309d5bea9b1edf2bbeee954e"` [INFO] running `"docker" "rm" "-f" "56b0d1a41033616473521d51948611b28ad29eeb309d5bea9b1edf2bbeee954e"` [INFO] [stdout] 56b0d1a41033616473521d51948611b28ad29eeb309d5bea9b1edf2bbeee954e