[INFO] updating cached repository tsathishkumar/MySController-rs [INFO] running `"git" "fetch" "--all"` [INFO] [stdout] Fetching origin [INFO] [stderr] From git://github.com/tsathishkumar/MySController-rs [INFO] [stderr] * branch HEAD -> FETCH_HEAD [INFO] running `"git" "clone" "work/cache/sources/gh/tsathishkumar/MySController-rs" "work/ex/clippy-test-run/sources/stable/gh/tsathishkumar/MySController-rs"` [INFO] [stderr] Cloning into 'work/ex/clippy-test-run/sources/stable/gh/tsathishkumar/MySController-rs'... [INFO] [stderr] done. [INFO] running `"git" "clone" "work/cache/sources/gh/tsathishkumar/MySController-rs" "work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/tsathishkumar/MySController-rs"` [INFO] [stderr] Cloning into 'work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/tsathishkumar/MySController-rs'... [INFO] [stderr] done. [INFO] running `"git" "rev-parse" "HEAD"` [INFO] [stdout] 2190d58774db9758fdc2feba14f6495fac59cb1c [INFO] sha for GitHub repo tsathishkumar/MySController-rs: 2190d58774db9758fdc2feba14f6495fac59cb1c [INFO] validating manifest of tsathishkumar/MySController-rs 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 tsathishkumar/MySController-rs 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 tsathishkumar/MySController-rs [INFO] finished frobbing tsathishkumar/MySController-rs [INFO] frobbed toml for tsathishkumar/MySController-rs written to work/ex/clippy-test-run/sources/stable/gh/tsathishkumar/MySController-rs/Cargo.toml [INFO] started frobbing tsathishkumar/MySController-rs [INFO] finished frobbing tsathishkumar/MySController-rs [INFO] frobbed toml for tsathishkumar/MySController-rs written to work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/tsathishkumar/MySController-rs/Cargo.toml [INFO] crate tsathishkumar/MySController-rs has a lockfile. skipping [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "fetch" "--locked" "--manifest-path" "Cargo.toml"` [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "fetch" "--locked" "--manifest-path" "Cargo.toml"` [INFO] linting tsathishkumar/MySController-rs 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/gh/tsathishkumar/MySController-rs:/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] 76fc9f1d99618394fbdfbd73908ad9438de758c6458dbef7dc1fd29471176939 [INFO] running `"docker" "start" "-a" "76fc9f1d99618394fbdfbd73908ad9438de758c6458dbef7dc1fd29471176939"` [INFO] [stderr] Compiling cfg-if v0.1.6 [INFO] [stderr] Compiling antidote v1.0.0 [INFO] [stderr] Checking arc-swap v0.3.6 [INFO] [stderr] Compiling itoa v0.4.3 [INFO] [stderr] Compiling byteorder v1.2.7 [INFO] [stderr] Compiling nix v0.10.0 [INFO] [stderr] Checking string v0.1.2 [INFO] [stderr] Checking askama_escape v0.1.0 [INFO] [stderr] Checking c_linked_list v1.1.1 [INFO] [stderr] Compiling crc16 v0.3.4 [INFO] [stderr] Checking ihex v1.1.2 [INFO] [stderr] Checking rand_isaac v0.1.0 [INFO] [stderr] Compiling ring v0.13.5 [INFO] [stderr] Compiling brotli-sys v0.3.2 [INFO] [stderr] Checking crossbeam-utils v0.3.2 [INFO] [stderr] Compiling actix-web v0.7.14 [INFO] [stderr] Checking tower-service v0.1.0 [INFO] [stderr] Compiling libsqlite3-sys v0.9.3 [INFO] [stderr] Compiling libudev-sys v0.1.4 [INFO] [stderr] Checking base64 v0.9.3 [INFO] [stderr] Compiling log v0.4.6 [INFO] [stderr] Compiling scheduled-thread-pool v0.2.0 [INFO] [stderr] Compiling libc v0.2.44 [INFO] [stderr] Checking smallvec v0.6.6 [INFO] [stderr] Checking tokio-timer v0.2.8 [INFO] [stderr] Checking tokio-current-thread v0.1.4 [INFO] [stderr] Compiling num-traits v0.2.6 [INFO] [stderr] Compiling ryu v0.2.7 [INFO] [stderr] Checking r2d2 v0.8.3 [INFO] [stderr] Compiling syn v0.11.11 [INFO] [stderr] Checking crossbeam-epoch v0.4.3 [INFO] [stderr] Compiling rand v0.6.0 [INFO] [stderr] Checking iovec v0.1.2 [INFO] [stderr] Checking rand v0.5.5 [INFO] [stderr] Checking net2 v0.2.33 [INFO] [stderr] Checking hostname v0.1.5 [INFO] [stderr] Checking socket2 v0.3.8 [INFO] [stderr] Checking signal-hook v0.1.6 [INFO] [stderr] Checking get_if_addrs v0.5.3 [INFO] [stderr] Checking crossbeam-deque v0.6.2 [INFO] [stderr] Checking url v1.7.2 [INFO] [stderr] Checking openssl-sys v0.9.39 [INFO] [stderr] Checking num-integer v0.1.39 [INFO] [stderr] Checking num-complex v0.1.43 [INFO] [stderr] Checking multimap v0.4.0 [INFO] [stderr] Compiling serde_json v1.0.33 [INFO] [stderr] Compiling time v0.1.40 [INFO] [stderr] Checking futures-cpupool v0.1.8 [INFO] [stderr] Checking bytes v0.4.11 [INFO] [stderr] Checking resolv-conf v0.6.1 [INFO] [stderr] Checking parking_lot_core v0.2.14 [INFO] [stderr] Checking mio v0.6.16 [INFO] [stderr] Compiling syn v0.15.21 [INFO] [stderr] Compiling diesel_derives v1.3.0 [INFO] [stderr] Checking flate2 v1.0.5 [INFO] [stderr] Checking enum_primitive v0.1.1 [INFO] [stderr] Checking uuid v0.7.1 [INFO] [stderr] Checking jsonway v2.0.0 [INFO] [stderr] Checking openssl v0.10.15 [INFO] [stderr] Checking chrono v0.4.6 [INFO] [stderr] Checking num-bigint v0.1.44 [INFO] [stderr] Checking num-iter v0.1.37 [INFO] [stderr] Checking parking_lot_core v0.3.1 [INFO] [stderr] Checking serde_urlencoded v0.5.4 [INFO] [stderr] Compiling diesel-derive-enum v0.4.4 [INFO] [stderr] Checking tokio-io v0.1.10 [INFO] [stderr] Checking http v0.1.14 [INFO] [stderr] Checking parking_lot v0.5.5 [INFO] [stderr] Checking mio-uds v0.6.7 [INFO] [stderr] Checking regex v1.0.6 [INFO] [stderr] Compiling phf_generator v0.7.23 [INFO] [stderr] Checking libudev v0.2.0 [INFO] [stderr] Checking parking_lot v0.6.4 [INFO] [stderr] Checking diesel v1.3.3 [INFO] [stderr] Checking num-rational v0.1.42 [INFO] [stderr] Checking tokio-codec v0.1.1 [INFO] [stderr] Checking crossbeam-channel v0.1.3 [INFO] [stderr] Compiling phf_codegen v0.7.23 [INFO] [stderr] Checking cookie v0.11.0 [INFO] [stderr] Checking brotli2 v0.3.2 [INFO] [stderr] Checking tokio-openssl v0.2.1 [INFO] [stderr] Checking tokio-reactor v0.1.7 [INFO] [stderr] Checking crossbeam-channel v0.2.6 [INFO] [stderr] Checking num v0.1.42 [INFO] [stderr] Checking env_logger v0.5.13 [INFO] [stderr] Checking tokio-threadpool v0.1.9 [INFO] [stderr] Compiling mime_guess v2.0.0-alpha.6 [INFO] [stderr] Compiling valico v2.3.0 [INFO] [stderr] Checking tokio-udp v0.1.3 [INFO] [stderr] Checking tokio-tcp v0.1.2 [INFO] [stderr] Checking tokio-uds v0.2.4 [INFO] [stderr] Checking tokio-signal v0.2.7 [INFO] [stderr] Checking h2 v0.1.13 [INFO] [stderr] Checking serialport v2.3.0 [INFO] [stderr] Compiling synstructure v0.10.1 [INFO] [stderr] Compiling actix_derive v0.3.2 [INFO] [stderr] Compiling serde_derive v1.0.80 [INFO] [stderr] Checking tokio-fs v0.1.4 [INFO] [stderr] Checking tokio v0.1.13 [INFO] [stderr] Compiling failure_derive v0.1.3 [INFO] [stderr] Checking tokio-core v0.1.17 [INFO] [stderr] Checking failure v0.1.3 [INFO] [stderr] Checking trust-dns-proto v0.5.0 [INFO] [stderr] Checking libmdns v0.2.3 [INFO] [stderr] Checking trust-dns-resolver v0.10.0 [INFO] [stderr] Checking actix v0.7.6 [INFO] [stderr] Checking actix-net v0.2.4 [INFO] [stderr] Checking migrations_internals v1.3.0 [INFO] [stderr] Compiling migrations_macros v1.3.0 [INFO] [stderr] Checking diesel_migrations v1.3.0 [INFO] [stderr] Checking webthing v0.9.3 [INFO] [stderr] Checking myscontroller-rs v0.6.6 (/opt/crater/workdir) [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/api/node.rs:94:25 [INFO] [stderr] | [INFO] [stderr] 94 | .send(GetNode { node_id: node_id }) [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: replace it with: `node_id` [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/api/node.rs:115:25 [INFO] [stderr] | [INFO] [stderr] 115 | .send(GetNode { node_id: node_id }) [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: replace it with: `node_id` [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: using `write!()` with a format string that ends in a single newline, consider using `writeln!()` instead [INFO] [stderr] --> src/core/message/presentation.rs:148:9 [INFO] [stderr] | [INFO] [stderr] 148 | / write!( [INFO] [stderr] 149 | | f, [INFO] [stderr] 150 | | "{:?};{};{:?};{};{:?};{}\n", [INFO] [stderr] 151 | | self.node_id, self.child_sensor_id, _cmd, self.ack, _sub_type, &self.payload [INFO] [stderr] 152 | | ) [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::write_with_newline)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#write_with_newline [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/core/message/internal.rs:61:13 [INFO] [stderr] | [INFO] [stderr] 61 | node_id: node_id, [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: replace it with: `node_id` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/core/message/internal.rs:62:13 [INFO] [stderr] | [INFO] [stderr] 62 | child_sensor_id: child_sensor_id, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `child_sensor_id` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/core/message/internal.rs:63:13 [INFO] [stderr] | [INFO] [stderr] 63 | ack: ack, [INFO] [stderr] | ^^^^^^^^ help: replace it with: `ack` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/core/message/internal.rs:64:13 [INFO] [stderr] | [INFO] [stderr] 64 | sub_type: sub_type, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: replace it with: `sub_type` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: using `write!()` with a format string that ends in a single newline, consider using `writeln!()` instead [INFO] [stderr] --> src/core/message/internal.rs:85:9 [INFO] [stderr] | [INFO] [stderr] 85 | / write!( [INFO] [stderr] 86 | | f, [INFO] [stderr] 87 | | "{:?};{};{:?};{};{:?};{}\n", [INFO] [stderr] 88 | | self.node_id, self.child_sensor_id, _cmd, self.ack, _sub_type, &self.payload [INFO] [stderr] 89 | | ) [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#write_with_newline [INFO] [stderr] [INFO] [stderr] warning: literal with an empty format string [INFO] [stderr] --> src/core/message/set.rs:24:13 [INFO] [stderr] | [INFO] [stderr] 24 | 0, [INFO] [stderr] | ^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::write_literal)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#write_literal [INFO] [stderr] [INFO] [stderr] warning: using `write!()` with a format string that ends in a single newline, consider using `writeln!()` instead [INFO] [stderr] --> src/core/message/set.rs:18:9 [INFO] [stderr] | [INFO] [stderr] 18 | / write!( [INFO] [stderr] 19 | | f, [INFO] [stderr] 20 | | "{};{};{};{};{}\n", [INFO] [stderr] 21 | | self.node_id, [INFO] [stderr] ... | [INFO] [stderr] 25 | | self.value.to_string() [INFO] [stderr] 26 | | ) [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#write_with_newline [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/core/message/stream.rs:56:13 [INFO] [stderr] | [INFO] [stderr] 56 | node_id: node_id, [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: replace it with: `node_id` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/core/message/stream.rs:57:13 [INFO] [stderr] | [INFO] [stderr] 57 | child_sensor_id: child_sensor_id, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `child_sensor_id` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/core/message/stream.rs:58:13 [INFO] [stderr] | [INFO] [stderr] 58 | ack: ack, [INFO] [stderr] | ^^^^^^^^ help: replace it with: `ack` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/core/message/stream.rs:59:13 [INFO] [stderr] | [INFO] [stderr] 59 | sub_type: sub_type, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: replace it with: `sub_type` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/core/message/stream.rs:60:13 [INFO] [stderr] | [INFO] [stderr] 60 | payload: payload, [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: replace it with: `payload` [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: using `write!()` with a format string that ends in a single newline, consider using `writeln!()` instead [INFO] [stderr] --> src/core/message/stream.rs:109:9 [INFO] [stderr] | [INFO] [stderr] 109 | / write!( [INFO] [stderr] 110 | | f, [INFO] [stderr] 111 | | "{:?};{};{:?};{};{:?};{}\n", [INFO] [stderr] 112 | | self.node_id, self.child_sensor_id, _cmd, self.ack, _sub_type, &payload [INFO] [stderr] 113 | | ) [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#write_with_newline [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/core/message/stream.rs:135:27 [INFO] [stderr] | [INFO] [stderr] 135 | FirmwarePayload { 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/handler/firmware.rs:136:13 [INFO] [stderr] | [INFO] [stderr] 136 | blocks: blocks, [INFO] [stderr] | ^^^^^^^^^^^^^^ help: replace it with: `blocks` [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/handler/firmware.rs:138:13 [INFO] [stderr] | [INFO] [stderr] 138 | name: name, [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `name` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/handler/firmware.rs:139:13 [INFO] [stderr] | [INFO] [stderr] 139 | crc: crc, [INFO] [stderr] | ^^^^^^^^ help: replace it with: `crc` [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/wot/adapter.rs:21:13 [INFO] [stderr] | [INFO] [stderr] 21 | value: value, [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `value` [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/api/node.rs:94:25 [INFO] [stderr] | [INFO] [stderr] 94 | .send(GetNode { node_id: node_id }) [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: replace it with: `node_id` [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/api/node.rs:115:25 [INFO] [stderr] | [INFO] [stderr] 115 | .send(GetNode { node_id: node_id }) [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: replace it with: `node_id` [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: using `write!()` with a format string that ends in a single newline, consider using `writeln!()` instead [INFO] [stderr] --> src/core/message/presentation.rs:148:9 [INFO] [stderr] | [INFO] [stderr] 148 | / write!( [INFO] [stderr] 149 | | f, [INFO] [stderr] 150 | | "{:?};{};{:?};{};{:?};{}\n", [INFO] [stderr] 151 | | self.node_id, self.child_sensor_id, _cmd, self.ack, _sub_type, &self.payload [INFO] [stderr] 152 | | ) [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::write_with_newline)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#write_with_newline [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/core/message/internal.rs:61:13 [INFO] [stderr] | [INFO] [stderr] 61 | node_id: node_id, [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: replace it with: `node_id` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/core/message/internal.rs:62:13 [INFO] [stderr] | [INFO] [stderr] 62 | child_sensor_id: child_sensor_id, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `child_sensor_id` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/core/message/internal.rs:63:13 [INFO] [stderr] | [INFO] [stderr] 63 | ack: ack, [INFO] [stderr] | ^^^^^^^^ help: replace it with: `ack` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/core/message/internal.rs:64:13 [INFO] [stderr] | [INFO] [stderr] 64 | sub_type: sub_type, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: replace it with: `sub_type` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: using `write!()` with a format string that ends in a single newline, consider using `writeln!()` instead [INFO] [stderr] --> src/core/message/internal.rs:85:9 [INFO] [stderr] | [INFO] [stderr] 85 | / write!( [INFO] [stderr] 86 | | f, [INFO] [stderr] 87 | | "{:?};{};{:?};{};{:?};{}\n", [INFO] [stderr] 88 | | self.node_id, self.child_sensor_id, _cmd, self.ack, _sub_type, &self.payload [INFO] [stderr] 89 | | ) [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#write_with_newline [INFO] [stderr] [INFO] [stderr] warning: literal with an empty format string [INFO] [stderr] --> src/core/message/set.rs:24:13 [INFO] [stderr] | [INFO] [stderr] 24 | 0, [INFO] [stderr] | ^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::write_literal)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#write_literal [INFO] [stderr] [INFO] [stderr] warning: using `write!()` with a format string that ends in a single newline, consider using `writeln!()` instead [INFO] [stderr] --> src/core/message/set.rs:18:9 [INFO] [stderr] | [INFO] [stderr] 18 | / write!( [INFO] [stderr] 19 | | f, [INFO] [stderr] 20 | | "{};{};{};{};{}\n", [INFO] [stderr] 21 | | self.node_id, [INFO] [stderr] ... | [INFO] [stderr] 25 | | self.value.to_string() [INFO] [stderr] 26 | | ) [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#write_with_newline [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/core/message/stream.rs:56:13 [INFO] [stderr] | [INFO] [stderr] 56 | node_id: node_id, [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: replace it with: `node_id` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/core/message/stream.rs:57:13 [INFO] [stderr] | [INFO] [stderr] 57 | child_sensor_id: child_sensor_id, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `child_sensor_id` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/core/message/stream.rs:58:13 [INFO] [stderr] | [INFO] [stderr] 58 | ack: ack, [INFO] [stderr] | ^^^^^^^^ help: replace it with: `ack` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/core/message/stream.rs:59:13 [INFO] [stderr] | [INFO] [stderr] 59 | sub_type: sub_type, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: replace it with: `sub_type` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/core/message/stream.rs:60:13 [INFO] [stderr] | [INFO] [stderr] 60 | payload: payload, [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: replace it with: `payload` [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: using `write!()` with a format string that ends in a single newline, consider using `writeln!()` instead [INFO] [stderr] --> src/core/message/stream.rs:109:9 [INFO] [stderr] | [INFO] [stderr] 109 | / write!( [INFO] [stderr] 110 | | f, [INFO] [stderr] 111 | | "{:?};{};{:?};{};{:?};{}\n", [INFO] [stderr] 112 | | self.node_id, self.child_sensor_id, _cmd, self.ack, _sub_type, &payload [INFO] [stderr] 113 | | ) [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#write_with_newline [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/core/message/stream.rs:135:27 [INFO] [stderr] | [INFO] [stderr] 135 | FirmwarePayload { 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/handler/firmware.rs:136:13 [INFO] [stderr] | [INFO] [stderr] 136 | blocks: blocks, [INFO] [stderr] | ^^^^^^^^^^^^^^ help: replace it with: `blocks` [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/handler/firmware.rs:138:13 [INFO] [stderr] | [INFO] [stderr] 138 | name: name, [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `name` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/handler/firmware.rs:139:13 [INFO] [stderr] | [INFO] [stderr] 139 | crc: crc, [INFO] [stderr] | ^^^^^^^^ help: replace it with: `crc` [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/wot/adapter.rs:21:13 [INFO] [stderr] | [INFO] [stderr] 21 | value: value, [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `value` [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 unit return type [INFO] [stderr] --> src/core/message_handler/internal.rs:41:3 [INFO] [stderr] | [INFO] [stderr] 41 | ) -> () { [INFO] [stderr] | ^^^^^ help: remove the `-> ()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::unused_unit)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_unit [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/handler/firmware.rs:268:23 [INFO] [stderr] | [INFO] [stderr] 268 | Err(_) => return Err(()), [INFO] [stderr] | ^^^^^^^^^^^^^^ help: remove `return` as shown: `Err(())` [INFO] [stderr] warning: unneeded unit return type [INFO] [stderr] --> src/core/message_handler/internal.rs:41:3 [INFO] [stderr] | [INFO] [stderr] 41 | ) -> () { [INFO] [stderr] | ^^^^^ help: remove the `-> ()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::unused_unit)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_unit [INFO] [stderr] [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_return)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/handler/node.rs:193:18 [INFO] [stderr] | [INFO] [stderr] 193 | _ => return Err(()), [INFO] [stderr] | ^^^^^^^^^^^^^^ help: remove `return` as shown: `Err(())` [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/handler/sensor.rs:91:18 [INFO] [stderr] | [INFO] [stderr] 91 | _ => return Err(()), [INFO] [stderr] | ^^^^^^^^^^^^^^ help: remove `return` as shown: `Err(())` [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/handler/firmware.rs:268:23 [INFO] [stderr] | [INFO] [stderr] 268 | Err(_) => return Err(()), [INFO] [stderr] | ^^^^^^^^^^^^^^ help: remove `return` as shown: `Err(())` [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] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: cannot find type `table` in this scope [INFO] [stderr] --> <::diesel::macros::table_body macros>:165:33 [INFO] [stderr] | [INFO] [stderr] 165 | derive ( Debug , Clone , Copy , QueryId ) ] /// The actual table struct [INFO] [stderr] | ^^^^^^^ names from parent modules are not accessible without an explicit import [INFO] [stderr] | [INFO] [stderr] = note: #[warn(proc_macro_derive_resolution_fallback)] on by default [INFO] [stderr] = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! [INFO] [stderr] = note: for more information, see issue #50504 [INFO] [stderr] [INFO] [stderr] warning: cannot find type `table` in this scope [INFO] [stderr] --> <::diesel::macros::table_body macros>:165:33 [INFO] [stderr] | [INFO] [stderr] 165 | derive ( Debug , Clone , Copy , QueryId ) ] /// The actual table struct [INFO] [stderr] | ^^^^^^^ names from parent modules are not accessible without an explicit import [INFO] [stderr] | [INFO] [stderr] = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! [INFO] [stderr] = note: for more information, see issue #50504 [INFO] [stderr] [INFO] [stderr] warning: cannot find type `firmware_type` in this scope [INFO] [stderr] --> <::diesel::macros::__diesel_column macros>:5:33 [INFO] [stderr] | [INFO] [stderr] 5 | derive ( Debug , Clone , Copy , QueryId , Default ) ] pub struct $ column_name [INFO] [stderr] | ^^^^^^^ names from parent modules are not accessible without an explicit import [INFO] [stderr] | [INFO] [stderr] = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! [INFO] [stderr] = note: for more information, see issue #50504 [INFO] [stderr] [INFO] [stderr] warning: cannot find type `firmware_version` in this scope [INFO] [stderr] --> <::diesel::macros::__diesel_column macros>:5:33 [INFO] [stderr] | [INFO] [stderr] 5 | derive ( Debug , Clone , Copy , QueryId , Default ) ] pub struct $ column_name [INFO] [stderr] | ^^^^^^^ names from parent modules are not accessible without an explicit import [INFO] [stderr] | [INFO] [stderr] = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! [INFO] [stderr] = note: for more information, see issue #50504 [INFO] [stderr] [INFO] [stderr] warning: cannot find type `name` in this scope [INFO] [stderr] --> <::diesel::macros::__diesel_column macros>:5:33 [INFO] [stderr] | [INFO] [stderr] 5 | derive ( Debug , Clone , Copy , QueryId , Default ) ] pub struct $ column_name [INFO] [stderr] | ^^^^^^^ names from parent modules are not accessible without an explicit import [INFO] [stderr] | [INFO] [stderr] = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! [INFO] [stderr] = note: for more information, see issue #50504 [INFO] [stderr] [INFO] [stderr] warning: cannot find type `blocks` in this scope [INFO] [stderr] --> <::diesel::macros::__diesel_column macros>:5:33 [INFO] [stderr] | [INFO] [stderr] 5 | derive ( Debug , Clone , Copy , QueryId , Default ) ] pub struct $ column_name [INFO] [stderr] | ^^^^^^^ names from parent modules are not accessible without an explicit import [INFO] [stderr] | [INFO] [stderr] = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! [INFO] [stderr] = note: for more information, see issue #50504 [INFO] [stderr] [INFO] [stderr] warning: cannot find type `crc` in this scope [INFO] [stderr] --> <::diesel::macros::__diesel_column macros>:5:33 [INFO] [stderr] | [INFO] [stderr] 5 | derive ( Debug , Clone , Copy , QueryId , Default ) ] pub struct $ column_name [INFO] [stderr] | ^^^^^^^ names from parent modules are not accessible without an explicit import [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/handler/node.rs:193:18 [INFO] [stderr] | [INFO] [stderr] 193 | _ => return Err(()), [INFO] [stderr] | ^^^^^^^^^^^^^^ help: remove `return` as shown: `Err(())` [INFO] [stderr] | [INFO] [stderr] = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! [INFO] [stderr] = note: for more information, see issue #50504 [INFO] [stderr] [INFO] [stderr] warning: cannot find type `data` in this scope [INFO] [stderr] --> <::diesel::macros::__diesel_column macros>:5:33 [INFO] [stderr] | [INFO] [stderr] 5 | derive ( Debug , Clone , Copy , QueryId , Default ) ] pub struct $ column_name [INFO] [stderr] | ^^^^^^^ names from parent modules are not accessible without an explicit import [INFO] [stderr] | [INFO] [stderr] = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! [INFO] [stderr] = note: for more information, see issue #50504 [INFO] [stderr] [INFO] [stderr] warning: cannot find type `Firmware` in this scope [INFO] [stderr] --> src/model/firmware.rs:23:10 [INFO] [stderr] | [INFO] [stderr] 23 | #[derive(Queryable, Serialize, Deserialize, Insertable, Clone)] [INFO] [stderr] | ^^^^^^^^^ names from parent modules are not accessible without an explicit import [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/handler/sensor.rs:91:18 [INFO] [stderr] | [INFO] [stderr] 91 | _ => return Err(()), [INFO] [stderr] | ^^^^^^^^^^^^^^ help: remove `return` as shown: `Err(())` [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: cannot find type `table` in this scope [INFO] [stderr] --> <::diesel::macros::table_body macros>:165:33 [INFO] [stderr] | [INFO] [stderr] 165 | derive ( Debug , Clone , Copy , QueryId ) ] /// The actual table struct [INFO] [stderr] | ^^^^^^^ names from parent modules are not accessible without an explicit import [INFO] [stderr] | [INFO] [stderr] = note: #[warn(proc_macro_derive_resolution_fallback)] on by default [INFO] [stderr] = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! [INFO] [stderr] = note: for more information, see issue #50504 [INFO] [stderr] [INFO] [stderr] warning: cannot find type `table` in this scope [INFO] [stderr] --> <::diesel::macros::table_body macros>:165:33 [INFO] [stderr] | [INFO] [stderr] 165 | derive ( Debug , Clone , Copy , QueryId ) ] /// The actual table struct [INFO] [stderr] | ^^^^^^^ names from parent modules are not accessible without an explicit import [INFO] [stderr] | [INFO] [stderr] = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! [INFO] [stderr] = note: for more information, see issue #50504 [INFO] [stderr] [INFO] [stderr] warning: cannot find type `firmware_type` in this scope [INFO] [stderr] --> <::diesel::macros::__diesel_column macros>:5:33 [INFO] [stderr] | [INFO] [stderr] 5 | derive ( Debug , Clone , Copy , QueryId , Default ) ] pub struct $ column_name [INFO] [stderr] | ^^^^^^^ names from parent modules are not accessible without an explicit import [INFO] [stderr] | [INFO] [stderr] = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! [INFO] [stderr] = note: for more information, see issue #50504 [INFO] [stderr] [INFO] [stderr] warning: cannot find type `firmware_version` in this scope [INFO] [stderr] --> <::diesel::macros::__diesel_column macros>:5:33 [INFO] [stderr] | [INFO] [stderr] 5 | derive ( Debug , Clone , Copy , QueryId , Default ) ] pub struct $ column_name [INFO] [stderr] | ^^^^^^^ names from parent modules are not accessible without an explicit import [INFO] [stderr] | [INFO] [stderr] = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! [INFO] [stderr] = note: for more information, see issue #50504 [INFO] [stderr] [INFO] [stderr] | [INFO] [stderr] = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! [INFO] [stderr] = note: for more information, see issue #50504 [INFO] [stderr] [INFO] [stderr] warning: cannot find type `firmwares` in this scope [INFO] [stderr] --> src/model/firmware.rs:23:45 [INFO] [stderr] | [INFO] [stderr] 23 | #[derive(Queryable, Serialize, Deserialize, Insertable, Clone)] [INFO] [stderr] | ^^^^^^^^^^ names from parent modules are not accessible without an explicit import [INFO] [stderr] | [INFO] [stderr] = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! [INFO] [stderr] = note: for more information, see issue #50504 [INFO] [stderr] [INFO] [stderr] warning: cannot find type `Firmware` in this scope [INFO] [stderr] --> src/model/firmware.rs:23:45 [INFO] [stderr] | [INFO] [stderr] 23 | #[derive(Queryable, Serialize, Deserialize, Insertable, Clone)] [INFO] [stderr] | ^^^^^^^^^^ names from parent modules are not accessible without an explicit import [INFO] [stderr] | [INFO] [stderr] = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! [INFO] [stderr] = note: for more information, see issue #50504 [INFO] [stderr] [INFO] [stderr] warning: You matched a field with a wildcard pattern. Consider using `..` instead [INFO] [stderr] --> src/model/firmware.rs:89:17 [INFO] [stderr] | [INFO] [stderr] 89 | offset: _, [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::unneeded_field_pattern)] on by default [INFO] [stderr] = help: Try with `Data { value: ref _value, .. }` [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unneeded_field_pattern [INFO] [stderr] [INFO] [stderr] warning: cannot find type `node_id` in this scope [INFO] [stderr] --> <::diesel::macros::__diesel_column macros>:5:33 [INFO] [stderr] | [INFO] [stderr] 5 | derive ( Debug , Clone , Copy , QueryId , Default ) ] pub struct $ column_name [INFO] [stderr] | ^^^^^^^ names from parent modules are not accessible without an explicit import [INFO] [stderr] warning: cannot find type `name` in this scope [INFO] [stderr] --> <::diesel::macros::__diesel_column macros>:5:33 [INFO] [stderr] | [INFO] [stderr] 5 | derive ( Debug , Clone , Copy , QueryId , Default ) ] pub struct $ column_name [INFO] [stderr] | ^^^^^^^ names from parent modules are not accessible without an explicit import [INFO] [stderr] | [INFO] [stderr] = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! [INFO] [stderr] = note: for more information, see issue #50504 [INFO] [stderr] [INFO] [stderr] warning: cannot find type `blocks` in this scope [INFO] [stderr] --> <::diesel::macros::__diesel_column macros>:5:33 [INFO] [stderr] | [INFO] [stderr] 5 | derive ( Debug , Clone , Copy , QueryId , Default ) ] pub struct $ column_name [INFO] [stderr] | ^^^^^^^ names from parent modules are not accessible without an explicit import [INFO] [stderr] | [INFO] [stderr] = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! [INFO] [stderr] = note: for more information, see issue #50504 [INFO] [stderr] [INFO] [stderr] warning: cannot find type `crc` in this scope [INFO] [stderr] --> <::diesel::macros::__diesel_column macros>:5:33 [INFO] [stderr] | [INFO] [stderr] 5 | derive ( Debug , Clone , Copy , QueryId , Default ) ] pub struct $ column_name [INFO] [stderr] | ^^^^^^^ names from parent modules are not accessible without an explicit import [INFO] [stderr] | [INFO] [stderr] = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! [INFO] [stderr] | [INFO] [stderr] = note: for more information, see issue #50504 [INFO] [stderr] = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! [INFO] [stderr] [INFO] [stderr] warning: cannot find type `data` in this scope [INFO] [stderr] --> <::diesel::macros::__diesel_column macros>:5:33 [INFO] [stderr] | [INFO] [stderr] 5 | derive ( Debug , Clone , Copy , QueryId , Default ) ] pub struct $ column_name [INFO] [stderr] | ^^^^^^^ names from parent modules are not accessible without an explicit import [INFO] [stderr] = note: for more information, see issue #50504 [INFO] [stderr] [INFO] [stderr] warning: cannot find type `node_name` in this scope [INFO] [stderr] --> <::diesel::macros::__diesel_column macros>:5:33 [INFO] [stderr] | [INFO] [stderr] 5 | derive ( Debug , Clone , Copy , QueryId , Default ) ] pub struct $ column_name [INFO] [stderr] | ^^^^^^^ names from parent modules are not accessible without an explicit import [INFO] [stderr] | [INFO] [stderr] | [INFO] [stderr] = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! [INFO] [stderr] = note: for more information, see issue #50504 [INFO] [stderr] [INFO] [stderr] = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! [INFO] [stderr] = note: for more information, see issue #50504 [INFO] [stderr] [INFO] [stderr] warning: cannot find type `Firmware` in this scope [INFO] [stderr] --> src/model/firmware.rs:23:10 [INFO] [stderr] | [INFO] [stderr] 23 | #[derive(Queryable, Serialize, Deserialize, Insertable, Clone)] [INFO] [stderr] | ^^^^^^^^^ names from parent modules are not accessible without an explicit import [INFO] [stderr] | [INFO] [stderr] = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! [INFO] [stderr] = note: for more information, see issue #50504 [INFO] [stderr] [INFO] [stderr] warning: cannot find type `desired_firmware_type` in this scope [INFO] [stderr] --> <::diesel::macros::__diesel_column macros>:5:33 [INFO] [stderr] | [INFO] [stderr] 5 | derive ( Debug , Clone , Copy , QueryId , Default ) ] pub struct $ column_name [INFO] [stderr] | ^^^^^^^ names from parent modules are not accessible without an explicit import [INFO] [stderr] | [INFO] [stderr] = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! [INFO] [stderr] = note: for more information, see issue #50504 [INFO] [stderr] [INFO] [stderr] warning: cannot find type `desired_firmware_version` in this scope [INFO] [stderr] --> <::diesel::macros::__diesel_column macros>:5:33 [INFO] [stderr] | [INFO] [stderr] 5 | derive ( Debug , Clone , Copy , QueryId , Default ) ] pub struct $ column_name [INFO] [stderr] | ^^^^^^^ names from parent modules are not accessible without an explicit import [INFO] [stderr] | [INFO] [stderr] = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! [INFO] [stderr] = note: for more information, see issue #50504 [INFO] [stderr] [INFO] [stderr] warning: cannot find type `firmwares` in this scope [INFO] [stderr] --> src/model/firmware.rs:23:45 [INFO] [stderr] | [INFO] [stderr] 23 | #[derive(Queryable, Serialize, Deserialize, Insertable, Clone)] [INFO] [stderr] | ^^^^^^^^^^ names from parent modules are not accessible without an explicit import [INFO] [stderr] | [INFO] [stderr] = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! [INFO] [stderr] = note: for more information, see issue #50504 [INFO] [stderr] [INFO] [stderr] warning: cannot find type `Firmware` in this scope [INFO] [stderr] --> src/model/firmware.rs:23:45 [INFO] [stderr] | [INFO] [stderr] 23 | #[derive(Queryable, Serialize, Deserialize, Insertable, Clone)] [INFO] [stderr] | ^^^^^^^^^^ names from parent modules are not accessible without an explicit import [INFO] [stderr] | [INFO] [stderr] = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! [INFO] [stderr] = note: for more information, see issue #50504 [INFO] [stderr] [INFO] [stderr] warning: cannot find type `auto_update` in this scope [INFO] [stderr] --> <::diesel::macros::__diesel_column macros>:5:33 [INFO] [stderr] | [INFO] [stderr] 5 | derive ( Debug , Clone , Copy , QueryId , Default ) ] pub struct $ column_name [INFO] [stderr] | ^^^^^^^ names from parent modules are not accessible without an explicit import [INFO] [stderr] | [INFO] [stderr] = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! [INFO] [stderr] = note: for more information, see issue #50504 [INFO] [stderr] [INFO] [stderr] warning: cannot find type `scheduled` in this scope [INFO] [stderr] --> <::diesel::macros::__diesel_column macros>:5:33 [INFO] [stderr] | [INFO] [stderr] 5 | derive ( Debug , Clone , Copy , QueryId , Default ) ] pub struct $ column_name [INFO] [stderr] | ^^^^^^^ names from parent modules are not accessible without an explicit import [INFO] [stderr] | [INFO] [stderr] = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! [INFO] [stderr] = note: for more information, see issue #50504 [INFO] [stderr] [INFO] [stderr] warning: cannot find type `parent_node_id` in this scope [INFO] [stderr] --> <::diesel::macros::__diesel_column macros>:5:33 [INFO] [stderr] | [INFO] [stderr] 5 | derive ( Debug , Clone , Copy , QueryId , Default ) ] pub struct $ column_name [INFO] [stderr] | ^^^^^^^ names from parent modules are not accessible without an explicit import [INFO] [stderr] | [INFO] [stderr] = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! [INFO] [stderr] warning: You matched a field with a wildcard pattern. Consider using `..` instead [INFO] [stderr] --> src/model/firmware.rs:89:17 [INFO] [stderr] | [INFO] [stderr] 89 | offset: _, [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: for more information, see issue #50504 [INFO] [stderr] = note: #[warn(clippy::unneeded_field_pattern)] on by default [INFO] [stderr] = help: Try with `Data { value: ref _value, .. }` [INFO] [stderr] [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unneeded_field_pattern [INFO] [stderr] [INFO] [stderr] warning: cannot find type `Node` in this scope [INFO] [stderr] --> src/model/node.rs:15:10 [INFO] [stderr] | [INFO] [stderr] 15 | #[derive(Queryable, Serialize, Deserialize, Insertable, Debug)] [INFO] [stderr] | ^^^^^^^^^ names from parent modules are not accessible without an explicit import [INFO] [stderr] | [INFO] [stderr] = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! [INFO] [stderr] = note: for more information, see issue #50504 [INFO] [stderr] [INFO] [stderr] warning: cannot find type `node_id` in this scope [INFO] [stderr] --> <::diesel::macros::__diesel_column macros>:5:33 [INFO] [stderr] | [INFO] [stderr] 5 | derive ( Debug , Clone , Copy , QueryId , Default ) ] pub struct $ column_name [INFO] [stderr] | ^^^^^^^ names from parent modules are not accessible without an explicit import [INFO] [stderr] | [INFO] [stderr] = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! [INFO] [stderr] = note: for more information, see issue #50504 [INFO] [stderr] [INFO] [stderr] warning: cannot find type `node_name` in this scope [INFO] [stderr] --> <::diesel::macros::__diesel_column macros>:5:33 [INFO] [stderr] | [INFO] [stderr] 5 | derive ( Debug , Clone , Copy , QueryId , Default ) ] pub struct $ column_name [INFO] [stderr] | ^^^^^^^ names from parent modules are not accessible without an explicit import [INFO] [stderr] | [INFO] [stderr] = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! [INFO] [stderr] = note: for more information, see issue #50504 [INFO] [stderr] [INFO] [stderr] warning: cannot find type `nodes` in this scope [INFO] [stderr] --> src/model/node.rs:15:45 [INFO] [stderr] | [INFO] [stderr] 15 | #[derive(Queryable, Serialize, Deserialize, Insertable, Debug)] [INFO] [stderr] | ^^^^^^^^^^ names from parent modules are not accessible without an explicit import [INFO] [stderr] | [INFO] [stderr] = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! [INFO] [stderr] = note: for more information, see issue #50504 [INFO] [stderr] [INFO] [stderr] warning: cannot find type `Node` in this scope [INFO] [stderr] --> src/model/node.rs:15:45 [INFO] [stderr] | [INFO] [stderr] 15 | #[derive(Queryable, Serialize, Deserialize, Insertable, Debug)] [INFO] [stderr] | ^^^^^^^^^^ names from parent modules are not accessible without an explicit import [INFO] [stderr] | [INFO] [stderr] = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! [INFO] [stderr] = note: for more information, see issue #50504 [INFO] [stderr] [INFO] [stderr] warning: cannot find type `desired_firmware_type` in this scope [INFO] [stderr] --> <::diesel::macros::__diesel_column macros>:5:33 [INFO] [stderr] | [INFO] [stderr] 5 | derive ( Debug , Clone , Copy , QueryId , Default ) ] pub struct $ column_name [INFO] [stderr] | ^^^^^^^ names from parent modules are not accessible without an explicit import [INFO] [stderr] | [INFO] [stderr] = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! [INFO] [stderr] = note: for more information, see issue #50504 [INFO] [stderr] [INFO] [stderr] warning: cannot find type `desired_firmware_version` in this scope [INFO] [stderr] --> <::diesel::macros::__diesel_column macros>:5:33 [INFO] [stderr] | [INFO] [stderr] 5 | derive ( Debug , Clone , Copy , QueryId , Default ) ] pub struct $ column_name [INFO] [stderr] | ^^^^^^^ names from parent modules are not accessible without an explicit import [INFO] [stderr] | [INFO] [stderr] = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! [INFO] [stderr] = note: for more information, see issue #50504 [INFO] [stderr] [INFO] [stderr] warning: cannot find type `auto_update` in this scope [INFO] [stderr] --> <::diesel::macros::__diesel_column macros>:5:33 [INFO] [stderr] | [INFO] [stderr] 5 | derive ( Debug , Clone , Copy , QueryId , Default ) ] pub struct $ column_name [INFO] [stderr] | ^^^^^^^ names from parent modules are not accessible without an explicit import [INFO] [stderr] | [INFO] [stderr] = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! [INFO] [stderr] = note: for more information, see issue #50504 [INFO] [stderr] [INFO] [stderr] warning: cannot find type `scheduled` in this scope [INFO] [stderr] --> <::diesel::macros::__diesel_column macros>:5:33 [INFO] [stderr] | [INFO] [stderr] 5 | derive ( Debug , Clone , Copy , QueryId , Default ) ] pub struct $ column_name [INFO] [stderr] | ^^^^^^^ names from parent modules are not accessible without an explicit import [INFO] [stderr] | [INFO] [stderr] = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! [INFO] [stderr] = note: for more information, see issue #50504 [INFO] [stderr] [INFO] [stderr] warning: cannot find type `parent_node_id` in this scope [INFO] [stderr] --> <::diesel::macros::__diesel_column macros>:5:33 [INFO] [stderr] | [INFO] [stderr] 5 | derive ( Debug , Clone , Copy , QueryId , Default ) ] pub struct $ column_name [INFO] [stderr] | ^^^^^^^ names from parent modules are not accessible without an explicit import [INFO] [stderr] | [INFO] [stderr] = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! [INFO] [stderr] = note: for more information, see issue #50504 [INFO] [stderr] [INFO] [stderr] warning: cannot find type `child_sensor_id` in this scope [INFO] [stderr] --> <::diesel::macros::__diesel_column macros>:5:33 [INFO] [stderr] | [INFO] [stderr] 5 | derive ( Debug , Clone , Copy , QueryId , Default ) ] pub struct $ column_name [INFO] [stderr] | ^^^^^^^ names from parent modules are not accessible without an explicit import [INFO] [stderr] | [INFO] [stderr] = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! [INFO] [stderr] = note: for more information, see issue #50504 [INFO] [stderr] [INFO] [stderr] warning: cannot find type `Node` in this scope [INFO] [stderr] --> src/model/node.rs:15:10 [INFO] [stderr] | [INFO] [stderr] 15 | #[derive(Queryable, Serialize, Deserialize, Insertable, Debug)] [INFO] [stderr] | ^^^^^^^^^ names from parent modules are not accessible without an explicit import [INFO] [stderr] | [INFO] [stderr] = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! [INFO] [stderr] = note: for more information, see issue #50504 [INFO] [stderr] [INFO] [stderr] warning: cannot find type `sensor_type` in this scope [INFO] [stderr] --> <::diesel::macros::__diesel_column macros>:5:33 [INFO] [stderr] | [INFO] [stderr] 5 | derive ( Debug , Clone , Copy , QueryId , Default ) ] pub struct $ column_name [INFO] [stderr] | ^^^^^^^ names from parent modules are not accessible without an explicit import [INFO] [stderr] | [INFO] [stderr] = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! [INFO] [stderr] = note: for more information, see issue #50504 [INFO] [stderr] [INFO] [stderr] warning: cannot find type `description` in this scope [INFO] [stderr] --> <::diesel::macros::__diesel_column macros>:5:33 [INFO] [stderr] | [INFO] [stderr] 5 | derive ( Debug , Clone , Copy , QueryId , Default ) ] pub struct $ column_name [INFO] [stderr] | ^^^^^^^ names from parent modules are not accessible without an explicit import [INFO] [stderr] | [INFO] [stderr] = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! [INFO] [stderr] = note: for more information, see issue #50504 [INFO] [stderr] [INFO] [stderr] warning: cannot find type `PresentationType` in this scope [INFO] [stderr] --> src/model/sensor.rs:16:10 [INFO] [stderr] | [INFO] [stderr] 16 | #[derive(Queryable, Serialize, Deserialize, Insertable, Debug, PartialEq, Clone)] [INFO] [stderr] | ^^^^^^^^^ names from parent modules are not accessible without an explicit import [INFO] [stderr] | [INFO] [stderr] = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! [INFO] [stderr] = note: for more information, see issue #50504 [INFO] [stderr] [INFO] [stderr] warning: cannot find type `Sensor` in this scope [INFO] [stderr] --> src/model/sensor.rs:16:10 [INFO] [stderr] | [INFO] [stderr] 16 | #[derive(Queryable, Serialize, Deserialize, Insertable, Debug, PartialEq, Clone)] [INFO] [stderr] | ^^^^^^^^^ names from parent modules are not accessible without an explicit import [INFO] [stderr] | [INFO] [stderr] = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! [INFO] [stderr] = note: for more information, see issue #50504 [INFO] [stderr] [INFO] [stderr] warning: cannot find type `nodes` in this scope [INFO] [stderr] --> src/model/node.rs:15:45 [INFO] [stderr] | [INFO] [stderr] 15 | #[derive(Queryable, Serialize, Deserialize, Insertable, Debug)] [INFO] [stderr] | ^^^^^^^^^^ names from parent modules are not accessible without an explicit import [INFO] [stderr] | [INFO] [stderr] = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! [INFO] [stderr] = note: for more information, see issue #50504 [INFO] [stderr] [INFO] [stderr] warning: cannot find type `sensors` in this scope [INFO] [stderr] --> src/model/sensor.rs:16:45 [INFO] [stderr] | [INFO] [stderr] 16 | #[derive(Queryable, Serialize, Deserialize, Insertable, Debug, PartialEq, Clone)] [INFO] [stderr] | ^^^^^^^^^^ names from parent modules are not accessible without an explicit import [INFO] [stderr] | [INFO] [stderr] = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! [INFO] [stderr] = note: for more information, see issue #50504 [INFO] [stderr] warning: cannot find type `Node` in this scope [INFO] [stderr] --> src/model/node.rs:15:45 [INFO] [stderr] [INFO] [stderr] | [INFO] [stderr] 15 | #[derive(Queryable, Serialize, Deserialize, Insertable, Debug)] [INFO] [stderr] | ^^^^^^^^^^ names from parent modules are not accessible without an explicit import [INFO] [stderr] | [INFO] [stderr] warning: cannot find type `Sensor` in this scope [INFO] [stderr] --> src/model/sensor.rs:16:45 [INFO] [stderr] | [INFO] [stderr] 16 | #[derive(Queryable, Serialize, Deserialize, Insertable, Debug, PartialEq, Clone)] [INFO] [stderr] | ^^^^^^^^^^ names from parent modules are not accessible without an explicit import [INFO] [stderr] = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! [INFO] [stderr] = note: for more information, see issue #50504 [INFO] [stderr] [INFO] [stderr] | [INFO] [stderr] = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! [INFO] [stderr] = note: for more information, see issue #50504 [INFO] [stderr] [INFO] [stderr] warning: cannot find type `PresentationType` in this scope [INFO] [stderr] --> src/model/sensor.rs:16:45 [INFO] [stderr] | [INFO] [stderr] 16 | #[derive(Queryable, Serialize, Deserialize, Insertable, Debug, PartialEq, Clone)] [INFO] [stderr] | ^^^^^^^^^^ names from parent modules are not accessible without an explicit import [INFO] [stderr] | [INFO] [stderr] = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! [INFO] [stderr] = note: for more information, see issue #50504 [INFO] [stderr] [INFO] [stderr] warning: cannot find type `child_sensor_id` in this scope [INFO] [stderr] --> <::diesel::macros::__diesel_column macros>:5:33 [INFO] [stderr] | [INFO] [stderr] 5 | derive ( Debug , Clone , Copy , QueryId , Default ) ] pub struct $ column_name [INFO] [stderr] | ^^^^^^^ names from parent modules are not accessible without an explicit import [INFO] [stderr] | [INFO] [stderr] = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! [INFO] [stderr] = note: for more information, see issue #50504 [INFO] [stderr] [INFO] [stderr] warning: cannot find type `sensor_type` in this scope [INFO] [stderr] --> <::diesel::macros::__diesel_column macros>:5:33 [INFO] [stderr] | [INFO] [stderr] 5 | derive ( Debug , Clone , Copy , QueryId , Default ) ] pub struct $ column_name [INFO] [stderr] | ^^^^^^^ names from parent modules are not accessible without an explicit import [INFO] [stderr] | [INFO] [stderr] = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! [INFO] [stderr] = note: for more information, see issue #50504 [INFO] [stderr] [INFO] [stderr] warning: cannot find type `description` in this scope [INFO] [stderr] --> <::diesel::macros::__diesel_column macros>:5:33 [INFO] [stderr] | [INFO] [stderr] 5 | derive ( Debug , Clone , Copy , QueryId , Default ) ] pub struct $ column_name [INFO] [stderr] | ^^^^^^^ names from parent modules are not accessible without an explicit import [INFO] [stderr] | [INFO] [stderr] = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! [INFO] [stderr] = note: for more information, see issue #50504 [INFO] [stderr] [INFO] [stderr] warning: cannot find type `PresentationType` in this scope [INFO] [stderr] --> src/model/sensor.rs:16:10 [INFO] [stderr] | [INFO] [stderr] 16 | #[derive(Queryable, Serialize, Deserialize, Insertable, Debug, PartialEq, Clone)] [INFO] [stderr] | ^^^^^^^^^ names from parent modules are not accessible without an explicit import [INFO] [stderr] | [INFO] [stderr] = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! [INFO] [stderr] = note: for more information, see issue #50504 [INFO] [stderr] [INFO] [stderr] warning: cannot find type `Sensor` in this scope [INFO] [stderr] --> src/model/sensor.rs:16:10 [INFO] [stderr] | [INFO] [stderr] 16 | #[derive(Queryable, Serialize, Deserialize, Insertable, Debug, PartialEq, Clone)] [INFO] [stderr] | ^^^^^^^^^ names from parent modules are not accessible without an explicit import [INFO] [stderr] | [INFO] [stderr] = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! [INFO] [stderr] = note: for more information, see issue #50504 [INFO] [stderr] [INFO] [stderr] warning: cannot find type `sensors` in this scope [INFO] [stderr] --> src/model/sensor.rs:16:45 [INFO] [stderr] | [INFO] [stderr] 16 | #[derive(Queryable, Serialize, Deserialize, Insertable, Debug, PartialEq, Clone)] [INFO] [stderr] | ^^^^^^^^^^ names from parent modules are not accessible without an explicit import [INFO] [stderr] | [INFO] [stderr] = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! [INFO] [stderr] = note: for more information, see issue #50504 [INFO] [stderr] [INFO] [stderr] warning: cannot find type `Sensor` in this scope [INFO] [stderr] --> src/model/sensor.rs:16:45 [INFO] [stderr] | [INFO] [stderr] 16 | #[derive(Queryable, Serialize, Deserialize, Insertable, Debug, PartialEq, Clone)] [INFO] [stderr] | ^^^^^^^^^^ names from parent modules are not accessible without an explicit import [INFO] [stderr] | [INFO] [stderr] = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! [INFO] [stderr] = note: for more information, see issue #50504 [INFO] [stderr] [INFO] [stderr] warning: cannot find type `PresentationType` in this scope [INFO] [stderr] --> src/model/sensor.rs:16:45 [INFO] [stderr] | [INFO] [stderr] 16 | #[derive(Queryable, Serialize, Deserialize, Insertable, Debug, PartialEq, Clone)] [INFO] [stderr] | ^^^^^^^^^^ names from parent modules are not accessible without an explicit import [INFO] [stderr] | [INFO] [stderr] = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! [INFO] [stderr] = note: for more information, see issue #50504 [INFO] [stderr] [INFO] [stderr] warning: parameter of type `HashMap` should be generalized over different hashers [INFO] [stderr] --> src/api/firmware.rs:79:18 [INFO] [stderr] | [INFO] [stderr] 79 | query: Query>, [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] 78 | pub fn create( [INFO] [stderr] 79 | query: Query>, [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: parameter of type `HashMap` should be generalized over different hashers [INFO] [stderr] --> src/api/firmware.rs:86:18 [INFO] [stderr] | [INFO] [stderr] 86 | query: Query>, [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] 85 | pub fn update( [INFO] [stderr] 86 | query: Query>, [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: parameter of type `HashMap` should be generalized over different hashers [INFO] [stderr] --> src/api/firmware.rs:93:18 [INFO] [stderr] | [INFO] [stderr] 93 | query: Query>, [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] 92 | pub fn create_or_update( [INFO] [stderr] 93 | query: Query>, [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to match on a boolean expression [INFO] [stderr] --> src/api/firmware.rs:143:35 [INFO] [stderr] | [INFO] [stderr] 143 | .send(match update { [INFO] [stderr] | ___________________________________^ [INFO] [stderr] 144 | | true => CreateOrUpdate::Update(firmware), [INFO] [stderr] 145 | | false => CreateOrUpdate::Create(firmware), [INFO] [stderr] 146 | | }) [INFO] [stderr] | |_____________________________^ help: consider using an if/else expression: `if update { CreateOrUpdate::Update(firmware) } else { CreateOrUpdate::Create(firmware) }` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::match_bool)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_bool [INFO] [stderr] [INFO] [stderr] warning: casting u8 to i32 may become silently lossy if types change [INFO] [stderr] --> src/api/firmware.rs:187:9 [INFO] [stderr] | [INFO] [stderr] 187 | firmware_type as i32, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: try: `i32::from(firmware_type)` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::cast_lossless)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u8 to i32 may become silently lossy if types change [INFO] [stderr] --> src/api/firmware.rs:188:9 [INFO] [stderr] | [INFO] [stderr] 188 | firmware_version as i32, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ help: try: `i32::from(firmware_version)` [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: identical conversion [INFO] [stderr] --> src/api/firmware.rs:200:22 [INFO] [stderr] | [INFO] [stderr] 200 | message: String::from(format!("Error uploading firmware, Missing file")), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider removing `String::from()`: `format!("Error uploading firmware, Missing file")` [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: useless use of `format!` [INFO] [stderr] --> src/api/firmware.rs:200:35 [INFO] [stderr] | [INFO] [stderr] 200 | message: String::from(format!("Error uploading firmware, Missing file")), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `"Error uploading firmware, Missing file".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] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/core/connection.rs:57:13 [INFO] [stderr] | [INFO] [stderr] 57 | / match stop_receiver.recv_timeout(Duration::from_millis(10)) { [INFO] [stderr] 58 | | Ok(_) => break, [INFO] [stderr] 59 | | Err(_) => (), [INFO] [stderr] 60 | | } [INFO] [stderr] | |_____________^ help: try this: `if let Ok(_) = stop_receiver.recv_timeout(Duration::from_millis(10)) { break }` [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] [INFO] [stderr] warning: single-character string constant used as pattern [INFO] [stderr] --> src/core/connection.rs:97:39 [INFO] [stderr] | [INFO] [stderr] 97 | if s.contains("\n") { [INFO] [stderr] | ^^^^ help: try using a char instead: `'\n'` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::single_char_pattern)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_char_pattern [INFO] [stderr] [INFO] [stderr] warning: calling `as_bytes()` on a string literal [INFO] [stderr] --> src/core/connection.rs:123:30 [INFO] [stderr] | [INFO] [stderr] 123 | match self.write("0;255;3;0;2;".as_bytes()) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using a byte string literal instead: `b"0;255;3;0;2;"` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::string_lit_as_bytes)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#string_lit_as_bytes [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/core/connection.rs:130:13 [INFO] [stderr] | [INFO] [stderr] 130 | / match stop_check_receiver.recv_timeout(Duration::from_secs(10)) { [INFO] [stderr] 131 | | Ok(_) => break, [INFO] [stderr] 132 | | Err(_) => (), [INFO] [stderr] 133 | | } [INFO] [stderr] | |_____________^ help: try this: `if let Ok(_) = stop_check_receiver.recv_timeout(Duration::from_secs(10)) { break }` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [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/core/connection.rs:189:9 [INFO] [stderr] | [INFO] [stderr] 189 | / match cancel_token_receiver.recv_timeout(Duration::from_millis(500)) { [INFO] [stderr] 190 | | Ok(_) => break, [INFO] [stderr] 191 | | Err(_) => (), [INFO] [stderr] 192 | | } [INFO] [stderr] | |_________^ help: try this: `if let Ok(_) = cancel_token_receiver.recv_timeout(Duration::from_millis(500)) { break }` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] [INFO] [stderr] warning: writing `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> src/core/connection.rs:202:11 [INFO] [stderr] | [INFO] [stderr] 202 | port: &String, [INFO] [stderr] | ^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::ptr_arg)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] help: change this to [INFO] [stderr] | [INFO] [stderr] 202 | port: &str, [INFO] [stderr] | ^^^^ [INFO] [stderr] help: change `port.clone()` to [INFO] [stderr] | [INFO] [stderr] 222 | tcp_port: port.to_string(), [INFO] [stderr] | ^^^^^^^^^^^^^^^^ [INFO] [stderr] help: change `port.clone()` to [INFO] [stderr] | [INFO] [stderr] 232 | tcp_port: port.to_string(), [INFO] [stderr] | ^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: writing `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> src/core/connection.rs:239:35 [INFO] [stderr] | [INFO] [stderr] 239 | fn create_serial_connection(port: &String, baud_rate: Option) -> Box { [INFO] [stderr] | ^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] help: change this to [INFO] [stderr] | [INFO] [stderr] 239 | fn create_serial_connection(port: &str, baud_rate: Option) -> Box { [INFO] [stderr] | ^^^^ [INFO] [stderr] help: change `port.clone()` to [INFO] [stderr] | [INFO] [stderr] 260 | serial_port: port.to_string(), [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/core/message/presentation.rs:53:25 [INFO] [stderr] | [INFO] [stderr] 53 | pub fn is_supported(&self) -> bool { [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/core/message/presentation.rs:61:23 [INFO] [stderr] | [INFO] [stderr] 61 | pub fn thing_type(&self) -> String { [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/core/message/presentation.rs:79:30 [INFO] [stderr] | [INFO] [stderr] 79 | pub fn thing_description(&self) -> String { [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/core/message/presentation.rs:97:27 [INFO] [stderr] | [INFO] [stderr] 97 | pub fn property_types(&self) -> Vec { [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/core/message/set.rs:164:25 [INFO] [stderr] | [INFO] [stderr] 164 | pub fn is_supported(&self) -> bool { [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/core/message/set.rs:170:27 [INFO] [stderr] | [INFO] [stderr] 170 | pub fn is_forwardable(&self) -> bool { [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/core/message/set.rs:177:26 [INFO] [stderr] | [INFO] [stderr] 177 | pub fn property_name(&self) -> String { [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/core/message/set.rs:194:22 [INFO] [stderr] | [INFO] [stderr] 194 | pub fn data_type(&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: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/core/message/set.rs:211:17 [INFO] [stderr] | [INFO] [stderr] 211 | pub fn unit(&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: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/core/message/set.rs:219:24 [INFO] [stderr] | [INFO] [stderr] 219 | pub fn description(&self) -> String { [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: methods called `to_*` usually take self by reference; consider choosing a less ambiguous name [INFO] [stderr] --> src/core/message/stream.rs:64:24 [INFO] [stderr] | [INFO] [stderr] 64 | pub fn to_response(&mut self, firmware: &Firmware) { [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::wrong_self_convention)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#wrong_self_convention [INFO] [stderr] [INFO] [stderr] warning: writing `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> src/core/message/mod.rs:34:33 [INFO] [stderr] | [INFO] [stderr] 34 | pub fn new(command_message: &String) -> Result { [INFO] [stderr] | ^^^^^^^ help: change this to: `&str` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: single-character string constant used as pattern [INFO] [stderr] --> src/core/message/mod.rs:35:58 [INFO] [stderr] | [INFO] [stderr] 35 | let message_parts = command_message.trim().split(";").collect::>(); [INFO] [stderr] | ^^^ help: try using a char instead: `';'` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_char_pattern [INFO] [stderr] [INFO] [stderr] warning: writing `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> src/core/message/mod.rs:107:37 [INFO] [stderr] | [INFO] [stderr] 107 | pub fn command_type(message_string: &String) -> Option { [INFO] [stderr] | ^^^^^^^ help: change this to: `&str` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: single-character string constant used as pattern [INFO] [stderr] --> src/core/message/mod.rs:108:46 [INFO] [stderr] | [INFO] [stderr] 108 | let message_parts = message_string.split(";").collect::>(); [INFO] [stderr] | ^^^ help: try using a char instead: `';'` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_char_pattern [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/core/message_handler/internal.rs:21:9 [INFO] [stderr] | [INFO] [stderr] 21 | / match receiver.recv() { [INFO] [stderr] 22 | | Ok(message) => match message.sub_type { [INFO] [stderr] 23 | | InternalType::IdRequest => send_node_id(&db_connection, response_sender, message), [INFO] [stderr] 24 | | InternalType::SketchName => update_node_name(&db_connection, message), [INFO] [stderr] ... | [INFO] [stderr] 32 | | _ => (), [INFO] [stderr] 33 | | } [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] 21 | if let Ok(message) = receiver.recv() { match message.sub_type { [INFO] [stderr] 22 | InternalType::IdRequest => send_node_id(&db_connection, response_sender, message), [INFO] [stderr] 23 | InternalType::SketchName => update_node_name(&db_connection, message), [INFO] [stderr] 24 | InternalType::Time => send_current_time(response_sender, message), [INFO] [stderr] 25 | InternalType::DiscoverResponse => { [INFO] [stderr] 26 | send_discover_response(&db_connection, &message); [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: casting u8 to i32 may become silently lossy if types change [INFO] [stderr] --> src/core/message_handler/internal.rs:43:63 [INFO] [stderr] | [INFO] [stderr] 43 | Some(new_node_id) => match create_node(db_connection, new_node_id as i32) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: try: `i32::from(new_node_id)` [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 i32 may become silently lossy if types change [INFO] [stderr] --> src/core/message_handler/internal.rs:60:28 [INFO] [stderr] | [INFO] [stderr] 60 | .filter(node_id.eq(message.node_id as i32)) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: try: `i32::from(message.node_id)` [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 i32 may become silently lossy if types change [INFO] [stderr] --> src/core/message_handler/internal.rs:91:13 [INFO] [stderr] | [INFO] [stderr] 91 | message.node_id as i32, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: try: `i32::from(message.node_id)` [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 i32 may become silently lossy if types change [INFO] [stderr] --> src/core/message_handler/internal.rs:92:13 [INFO] [stderr] | [INFO] [stderr] 92 | parent_node_id as i32, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: try: `i32::from(parent_node_id)` [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: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/core/message_handler/presentation.rs:19:9 [INFO] [stderr] | [INFO] [stderr] 19 | / match receiver.recv() { [INFO] [stderr] 20 | | Ok(presentation_message) => { [INFO] [stderr] 21 | | create_or_update_sensor(&db_connection, &presentation_message, &new_sensor_sender); [INFO] [stderr] 22 | | match sender.send(presentation_message.to_string()) { [INFO] [stderr] ... | [INFO] [stderr] 27 | | _ => (), [INFO] [stderr] 28 | | } [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] 19 | if let Ok(presentation_message) = receiver.recv() { [INFO] [stderr] 20 | create_or_update_sensor(&db_connection, &presentation_message, &new_sensor_sender); [INFO] [stderr] 21 | match sender.send(presentation_message.to_string()) { [INFO] [stderr] 22 | Ok(_) => (), [INFO] [stderr] 23 | Err(_) => error!("Error while forwarding presentation message"), [INFO] [stderr] 24 | } [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: casting u8 to i32 may become silently lossy if types change [INFO] [stderr] --> src/core/message_handler/presentation.rs:38:18 [INFO] [stderr] | [INFO] [stderr] 38 | node_id: presentation_message.node_id as i32, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `i32::from(presentation_message.node_id)` [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 i32 may become silently lossy if types change [INFO] [stderr] --> src/core/message_handler/presentation.rs:39:26 [INFO] [stderr] | [INFO] [stderr] 39 | child_sensor_id: presentation_message.child_sensor_id as i32, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `i32::from(presentation_message.child_sensor_id)` [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: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/core/message_handler/set.rs:9:9 [INFO] [stderr] | [INFO] [stderr] 9 | / match set_message_receiver.recv() { [INFO] [stderr] 10 | | Ok(set_message) => match gateway_out_sender.send(set_message.to_string()) { [INFO] [stderr] 11 | | Ok(_) => (), [INFO] [stderr] 12 | | Err(e) => error!("Error while sending set message to gateway {:?}", e), [INFO] [stderr] 13 | | }, [INFO] [stderr] 14 | | _ => (), [INFO] [stderr] 15 | | } [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] 9 | if let Ok(set_message) = set_message_receiver.recv() { match gateway_out_sender.send(set_message.to_string()) { [INFO] [stderr] 10 | Ok(_) => (), [INFO] [stderr] 11 | Err(e) => error!("Error while sending set message to gateway {:?}", e), [INFO] [stderr] 12 | } } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/core/message_handler/set.rs:25:9 [INFO] [stderr] | [INFO] [stderr] 25 | / match receiver.recv() { [INFO] [stderr] 26 | | Ok(set_message) => { [INFO] [stderr] 27 | | match controller_sender.send(set_message.to_string()) { [INFO] [stderr] 28 | | Ok(_) => (), [INFO] [stderr] ... | [INFO] [stderr] 38 | | _ => (), [INFO] [stderr] 39 | | } [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] 25 | if let Ok(set_message) = receiver.recv() { [INFO] [stderr] 26 | match controller_sender.send(set_message.to_string()) { [INFO] [stderr] 27 | Ok(_) => (), [INFO] [stderr] 28 | Err(error) => error!("Error while sending to controller_sender {:?}", error), [INFO] [stderr] 29 | }; [INFO] [stderr] 30 | match property_notify_sender.send(set_message) { [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/core/message_handler/stream.rs:18:9 [INFO] [stderr] | [INFO] [stderr] 18 | / match ota_receiver.recv() { [INFO] [stderr] 19 | | Ok(stream_request) => send_response(sender, stream_request.clone(), &db_connection), [INFO] [stderr] 20 | | _ => (), [INFO] [stderr] 21 | | } [INFO] [stderr] | |_________^ help: try this: `if let Ok(stream_request) = ota_receiver.recv() { send_response(sender, stream_request.clone(), &db_connection) }` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] [INFO] [stderr] warning: using `clone` on a `Copy` type [INFO] [stderr] --> src/core/message_handler/stream.rs:19:57 [INFO] [stderr] | [INFO] [stderr] 19 | Ok(stream_request) => send_response(sender, stream_request.clone(), &db_connection), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `stream_request` [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: casting u8 to i32 may become silently lossy if types change [INFO] [stderr] --> src/core/message_handler/stream.rs:31:15 [INFO] [stderr] | [INFO] [stderr] 31 | .find(stream.node_id as i32) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: try: `i32::from(stream.node_id)` [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: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/core/message_handler/stream.rs:35:9 [INFO] [stderr] | [INFO] [stderr] 35 | / match response_fw_type_version(stream, node, db_connection) { [INFO] [stderr] 36 | | Some((_type, version)) => match firmwares [INFO] [stderr] 37 | | .find((_type as i32, version as i32)) [INFO] [stderr] 38 | | .first::(&*db_connection) [INFO] [stderr] ... | [INFO] [stderr] 57 | | None => (), [INFO] [stderr] 58 | | } [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] 35 | if let Some((_type, version)) = response_fw_type_version(stream, node, db_connection) { match firmwares [INFO] [stderr] 36 | .find((_type as i32, version as i32)) [INFO] [stderr] 37 | .first::(&*db_connection) [INFO] [stderr] 38 | { [INFO] [stderr] 39 | Ok(firmware) => { [INFO] [stderr] 40 | debug!("Request {:?}", stream); [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: casting u16 to i32 may become silently lossy if types change [INFO] [stderr] --> src/core/message_handler/stream.rs:37:24 [INFO] [stderr] | [INFO] [stderr] 37 | .find((_type as i32, version as i32)) [INFO] [stderr] | ^^^^^^^^^^^^ help: try: `i32::from(_type)` [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 i32 may become silently lossy if types change [INFO] [stderr] --> src/core/message_handler/stream.rs:37:38 [INFO] [stderr] | [INFO] [stderr] 37 | .find((_type as i32, version as i32)) [INFO] [stderr] | ^^^^^^^^^^^^^^ help: try: `i32::from(version)` [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 i32 may become silently lossy if types change [INFO] [stderr] --> src/core/message_handler/stream.rs:78:46 [INFO] [stderr] | [INFO] [stderr] 78 | firmware_type.eq(request.firmware_type as i32), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `i32::from(request.firmware_type)` [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 i32 may become silently lossy if types change [INFO] [stderr] --> src/core/message_handler/stream.rs:79:49 [INFO] [stderr] | [INFO] [stderr] 79 | firmware_version.eq(request.firmware_version as i32), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `i32::from(request.firmware_version)` [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: this function has too many arguments (8/7) [INFO] [stderr] --> src/core/server.rs:12:1 [INFO] [stderr] | [INFO] [stderr] 12 | / pub fn start( [INFO] [stderr] 13 | | gateway_info: StreamInfo, [INFO] [stderr] 14 | | controller_info: Option, [INFO] [stderr] 15 | | pool: Pool>, [INFO] [stderr] ... | [INFO] [stderr] 111 | | presentation_message_processor.join().unwrap(); [INFO] [stderr] 112 | | } [INFO] [stderr] | |_^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::too_many_arguments)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#too_many_arguments [INFO] [stderr] [INFO] [stderr] warning: casting u16 to i32 may become silently lossy if types change [INFO] [stderr] --> src/handler/firmware.rs:132:19 [INFO] [stderr] | [INFO] [stderr] 132 | let crc = Firmware::compute_crc(&binary_data) as i32; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `i32::from(Firmware::compute_crc(&binary_data))` [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: parameter of type `HashMap` should be generalized over different hashers [INFO] [stderr] --> src/api/firmware.rs:79:18 [INFO] [stderr] | [INFO] [stderr] 79 | query: Query>, [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] 78 | pub fn create( [INFO] [stderr] 79 | query: Query>, [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: parameter of type `HashMap` should be generalized over different hashers [INFO] [stderr] --> src/api/firmware.rs:86:18 [INFO] [stderr] | [INFO] [stderr] 86 | query: Query>, [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] 85 | pub fn update( [INFO] [stderr] 86 | query: Query>, [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: parameter of type `HashMap` should be generalized over different hashers [INFO] [stderr] --> src/api/firmware.rs:93:18 [INFO] [stderr] | [INFO] [stderr] 93 | query: Query>, [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] 92 | pub fn create_or_update( [INFO] [stderr] 93 | query: Query>, [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to match on a boolean expression [INFO] [stderr] --> src/api/firmware.rs:143:35 [INFO] [stderr] | [INFO] [stderr] 143 | .send(match update { [INFO] [stderr] | ___________________________________^ [INFO] [stderr] 144 | | true => CreateOrUpdate::Update(firmware), [INFO] [stderr] 145 | | false => CreateOrUpdate::Create(firmware), [INFO] [stderr] 146 | | }) [INFO] [stderr] | |_____________________________^ help: consider using an if/else expression: `if update { CreateOrUpdate::Update(firmware) } else { CreateOrUpdate::Create(firmware) }` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::match_bool)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_bool [INFO] [stderr] [INFO] [stderr] warning: casting u8 to i32 may become silently lossy if types change [INFO] [stderr] --> src/api/firmware.rs:187:9 [INFO] [stderr] | [INFO] [stderr] 187 | firmware_type as i32, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: try: `i32::from(firmware_type)` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::cast_lossless)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u8 to i32 may become silently lossy if types change [INFO] [stderr] --> src/api/firmware.rs:188:9 [INFO] [stderr] | [INFO] [stderr] 188 | firmware_version as i32, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ help: try: `i32::from(firmware_version)` [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: identical conversion [INFO] [stderr] --> src/api/firmware.rs:200:22 [INFO] [stderr] | [INFO] [stderr] 200 | message: String::from(format!("Error uploading firmware, Missing file")), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider removing `String::from()`: `format!("Error uploading firmware, Missing file")` [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: useless use of `format!` [INFO] [stderr] --> src/api/firmware.rs:200:35 [INFO] [stderr] | [INFO] [stderr] 200 | message: String::from(format!("Error uploading firmware, Missing file")), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `"Error uploading firmware, Missing file".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] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/core/connection.rs:57:13 [INFO] [stderr] | [INFO] [stderr] 57 | / match stop_receiver.recv_timeout(Duration::from_millis(10)) { [INFO] [stderr] 58 | | Ok(_) => break, [INFO] [stderr] 59 | | Err(_) => (), [INFO] [stderr] 60 | | } [INFO] [stderr] | |_____________^ help: try this: `if let Ok(_) = stop_receiver.recv_timeout(Duration::from_millis(10)) { break }` [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] [INFO] [stderr] warning: single-character string constant used as pattern [INFO] [stderr] --> src/core/connection.rs:97:39 [INFO] [stderr] | [INFO] [stderr] 97 | if s.contains("\n") { [INFO] [stderr] | ^^^^ help: try using a char instead: `'\n'` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::single_char_pattern)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_char_pattern [INFO] [stderr] [INFO] [stderr] warning: calling `as_bytes()` on a string literal [INFO] [stderr] --> src/core/connection.rs:123:30 [INFO] [stderr] | [INFO] [stderr] 123 | match self.write("0;255;3;0;2;".as_bytes()) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using a byte string literal instead: `b"0;255;3;0;2;"` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::string_lit_as_bytes)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#string_lit_as_bytes [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/core/connection.rs:130:13 [INFO] [stderr] | [INFO] [stderr] 130 | / match stop_check_receiver.recv_timeout(Duration::from_secs(10)) { [INFO] [stderr] 131 | | Ok(_) => break, [INFO] [stderr] 132 | | Err(_) => (), [INFO] [stderr] 133 | | } [INFO] [stderr] | |_____________^ help: try this: `if let Ok(_) = stop_check_receiver.recv_timeout(Duration::from_secs(10)) { break }` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [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/core/connection.rs:189:9 [INFO] [stderr] | [INFO] [stderr] 189 | / match cancel_token_receiver.recv_timeout(Duration::from_millis(500)) { [INFO] [stderr] 190 | | Ok(_) => break, [INFO] [stderr] 191 | | Err(_) => (), [INFO] [stderr] 192 | | } [INFO] [stderr] | |_________^ help: try this: `if let Ok(_) = cancel_token_receiver.recv_timeout(Duration::from_millis(500)) { break }` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] [INFO] [stderr] warning: writing `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> src/core/connection.rs:202:11 [INFO] [stderr] | [INFO] [stderr] 202 | port: &String, [INFO] [stderr] | ^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::ptr_arg)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] help: change this to [INFO] [stderr] | [INFO] [stderr] 202 | port: &str, [INFO] [stderr] | ^^^^ [INFO] [stderr] help: change `port.clone()` to [INFO] [stderr] | [INFO] [stderr] 222 | tcp_port: port.to_string(), [INFO] [stderr] | ^^^^^^^^^^^^^^^^ [INFO] [stderr] help: change `port.clone()` to [INFO] [stderr] | [INFO] [stderr] 232 | tcp_port: port.to_string(), [INFO] [stderr] | ^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: writing `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> src/core/connection.rs:239:35 [INFO] [stderr] | [INFO] [stderr] 239 | fn create_serial_connection(port: &String, baud_rate: Option) -> Box { [INFO] [stderr] | ^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] help: change this to [INFO] [stderr] | [INFO] [stderr] 239 | fn create_serial_connection(port: &str, baud_rate: Option) -> Box { [INFO] [stderr] | ^^^^ [INFO] [stderr] help: change `port.clone()` to [INFO] [stderr] | [INFO] [stderr] 260 | serial_port: port.to_string(), [INFO] [stderr] | ^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: casting u16 to i32 may become silently lossy if types change [INFO] [stderr] --> src/model/firmware.rs:63:18 [INFO] [stderr] | [INFO] [stderr] 63 | crc: Firmware::compute_crc(&data) as i32, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `i32::from(Firmware::compute_crc(&data))` [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: you don't need to add `&` to all patterns [INFO] [stderr] --> src/model/firmware.rs:87:9 [INFO] [stderr] | [INFO] [stderr] 87 | / match record { [INFO] [stderr] 88 | | &Record::Data { [INFO] [stderr] 89 | | offset: _, [INFO] [stderr] 90 | | value: ref _value, [INFO] [stderr] 91 | | } => _value.clone(), [INFO] [stderr] 92 | | _ => Vec::new(), [INFO] [stderr] 93 | | } [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] 87 | match *record { [INFO] [stderr] 88 | Record::Data { [INFO] [stderr] 89 | offset: _, [INFO] [stderr] 90 | value: ref _value, [INFO] [stderr] 91 | } => _value.clone(), [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/core/message/presentation.rs:53:25 [INFO] [stderr] | [INFO] [stderr] 53 | pub fn is_supported(&self) -> bool { [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/core/message/presentation.rs:61:23 [INFO] [stderr] | [INFO] [stderr] 61 | pub fn thing_type(&self) -> String { [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/core/message/presentation.rs:79:30 [INFO] [stderr] | [INFO] [stderr] 79 | pub fn thing_description(&self) -> String { [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/core/message/presentation.rs:97:27 [INFO] [stderr] | [INFO] [stderr] 97 | pub fn property_types(&self) -> Vec { [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/wot/adapter.rs:44:6 [INFO] [stderr] | [INFO] [stderr] 44 | ) -> Option<(Sensor, Arc>>)> { [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: you seem to be trying to match on a boolean expression [INFO] [stderr] --> src/wot/adapter.rs:45:5 [INFO] [stderr] | [INFO] [stderr] 45 | / match sensor.sensor_type.is_supported() { [INFO] [stderr] 46 | | true => { [INFO] [stderr] 47 | | let mut thing = BaseThing::new( [INFO] [stderr] 48 | | name, [INFO] [stderr] ... | [INFO] [stderr] 63 | | } [INFO] [stderr] 64 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_bool [INFO] [stderr] help: consider using an if/else expression [INFO] [stderr] | [INFO] [stderr] 45 | if sensor.sensor_type.is_supported() { [INFO] [stderr] 46 | let mut thing = BaseThing::new( [INFO] [stderr] 47 | name, [INFO] [stderr] 48 | Some(vec!(sensor.sensor_type.thing_type())), [INFO] [stderr] 49 | Some(sensor.sensor_type.thing_description()), [INFO] [stderr] 50 | ); [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to match on a boolean expression [INFO] [stderr] --> src/wot/adapter.rs:86:60 [INFO] [stderr] | [INFO] [stderr] 86 | let value_forwarder: Option> = match set_type.is_forwardable() { [INFO] [stderr] | ____________________________________________________________^ [INFO] [stderr] 87 | | true => Some(Box::new(PropertyValueForwarder { [INFO] [stderr] 88 | | sensor, [INFO] [stderr] 89 | | set_type, [INFO] [stderr] ... | [INFO] [stderr] 92 | | false => None, [INFO] [stderr] 93 | | }; [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_bool [INFO] [stderr] help: consider using an if/else expression [INFO] [stderr] | [INFO] [stderr] 86 | let value_forwarder: Option> = if set_type.is_forwardable() { Some(Box::new(PropertyValueForwarder { [INFO] [stderr] 87 | sensor, [INFO] [stderr] 88 | set_type, [INFO] [stderr] 89 | set_message_sender, [INFO] [stderr] 90 | })) } else { None }; [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: very complex type used. Consider factoring parts into `type` definitions [INFO] [stderr] --> src/wot/mod.rs:47:6 [INFO] [stderr] | [INFO] [stderr] 47 | ) -> Vec<(Sensor, Arc>>)> { [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/wot/mod.rs:50:21 [INFO] [stderr] | [INFO] [stderr] 50 | let mut things: Vec<(Sensor, Arc>>)> = Vec::new(); [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: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/wot/mod.rs:71:9 [INFO] [stderr] | [INFO] [stderr] 71 | / match (&node_list) [INFO] [stderr] 72 | | .into_iter() [INFO] [stderr] 73 | | .find(|node| node.node_id == sensor.node_id) [INFO] [stderr] 74 | | .map(|node| node.node_name.clone()) [INFO] [stderr] ... | [INFO] [stderr] 88 | | None => (), [INFO] [stderr] 89 | | } [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] 71 | if let Some(node_name) = (&node_list) [INFO] [stderr] 72 | .into_iter() [INFO] [stderr] 73 | .find(|node| node.node_id == sensor.node_id) [INFO] [stderr] 74 | .map(|node| node.node_name.clone()) { [INFO] [stderr] 75 | let thing = adapter::build_thing( [INFO] [stderr] 76 | format!("{} - {} - {}", node_name, sensor.sensor_type.thing_description(), sensor.description) [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: this .into_iter() call is equivalent to .iter() and will not move the Vec [INFO] [stderr] --> src/wot/mod.rs:72:14 [INFO] [stderr] | [INFO] [stderr] 72 | .into_iter() [INFO] [stderr] | ^^^^^^^^^ help: call directly: `iter` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::into_iter_on_ref)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#into_iter_on_ref [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/wot/mod.rs:83:17 [INFO] [stderr] | [INFO] [stderr] 83 | / match thing { [INFO] [stderr] 84 | | Some(thing) => things.push(thing), [INFO] [stderr] 85 | | None => (), [INFO] [stderr] 86 | | } [INFO] [stderr] | |_________________^ help: try this: `if let Some(thing) = thing { things.push(thing) }` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/wot/mod.rs:124:13 [INFO] [stderr] | [INFO] [stderr] 124 | things: &Vec<(Sensor, Arc>>)>, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: change this to: `&[(Sensor, Arc>>)]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: very complex type used. Consider factoring parts into `type` definitions [INFO] [stderr] --> src/wot/mod.rs:124:13 [INFO] [stderr] | [INFO] [stderr] 124 | things: &Vec<(Sensor, Arc>>)>, [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: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/wot/mod.rs:129:9 [INFO] [stderr] | [INFO] [stderr] 129 | / match in_set_receiver.recv_timeout(Duration::from_millis(10)) { [INFO] [stderr] 130 | | Ok(set_message) => match things [INFO] [stderr] 131 | | .into_iter() [INFO] [stderr] 132 | | .find(|(sensor, _)| set_message.for_sensor(sensor)) [INFO] [stderr] ... | [INFO] [stderr] 138 | | _ => (), [INFO] [stderr] 139 | | } [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] 129 | if let Ok(set_message) = in_set_receiver.recv_timeout(Duration::from_millis(10)) { match things [INFO] [stderr] 130 | .into_iter() [INFO] [stderr] 131 | .find(|(sensor, _)| set_message.for_sensor(sensor)) [INFO] [stderr] 132 | .map(|(_, thing)| thing) [INFO] [stderr] 133 | { [INFO] [stderr] 134 | Some(thing) => set_property(set_message, thing), [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: this .into_iter() call is equivalent to .iter() and will not move the Vec [INFO] [stderr] --> src/wot/mod.rs:131:18 [INFO] [stderr] | [INFO] [stderr] 131 | .into_iter() [INFO] [stderr] | ^^^^^^^^^ help: call directly: `iter` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#into_iter_on_ref [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/wot/mod.rs:155:9 [INFO] [stderr] | [INFO] [stderr] 155 | / match new_sensor_receiver.recv_timeout(Duration::from_secs(30)) { [INFO] [stderr] 156 | | Ok((node_name, sensor)) => { [INFO] [stderr] 157 | | if let Some((_sensor, thing)) = adapter::build_thing( [INFO] [stderr] 158 | | format!("{} - {}", node_name, sensor.sensor_type.thing_description()).to_owned(), [INFO] [stderr] ... | [INFO] [stderr] 167 | | Err(_) => (), [INFO] [stderr] 168 | | } [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] 155 | if let Ok((node_name, sensor)) = new_sensor_receiver.recv_timeout(Duration::from_secs(30)) { [INFO] [stderr] 156 | if let Some((_sensor, thing)) = adapter::build_thing( [INFO] [stderr] 157 | format!("{} - {}", node_name, sensor.sensor_type.thing_description()).to_owned(), [INFO] [stderr] 158 | sensor, [INFO] [stderr] 159 | set_message_sender.clone(), [INFO] [stderr] 160 | ) { [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/core/message/set.rs:164:25 [INFO] [stderr] | [INFO] [stderr] 164 | pub fn is_supported(&self) -> bool { [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/core/message/set.rs:170:27 [INFO] [stderr] | [INFO] [stderr] 170 | pub fn is_forwardable(&self) -> bool { [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/core/message/set.rs:177:26 [INFO] [stderr] | [INFO] [stderr] 177 | pub fn property_name(&self) -> String { [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/core/message/set.rs:194:22 [INFO] [stderr] | [INFO] [stderr] 194 | pub fn data_type(&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: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/core/message/set.rs:211:17 [INFO] [stderr] | [INFO] [stderr] 211 | pub fn unit(&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: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/core/message/set.rs:219:24 [INFO] [stderr] | [INFO] [stderr] 219 | pub fn description(&self) -> String { [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: methods called `to_*` usually take self by reference; consider choosing a less ambiguous name [INFO] [stderr] --> src/core/message/stream.rs:64:24 [INFO] [stderr] | [INFO] [stderr] 64 | pub fn to_response(&mut self, firmware: &Firmware) { [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::wrong_self_convention)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#wrong_self_convention [INFO] [stderr] [INFO] [stderr] warning: writing `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> src/core/message/mod.rs:34:33 [INFO] [stderr] | [INFO] [stderr] 34 | pub fn new(command_message: &String) -> Result { [INFO] [stderr] | ^^^^^^^ help: change this to: `&str` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: single-character string constant used as pattern [INFO] [stderr] --> src/core/message/mod.rs:35:58 [INFO] [stderr] | [INFO] [stderr] 35 | let message_parts = command_message.trim().split(";").collect::>(); [INFO] [stderr] | ^^^ help: try using a char instead: `';'` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_char_pattern [INFO] [stderr] [INFO] [stderr] warning: writing `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> src/core/message/mod.rs:107:37 [INFO] [stderr] | [INFO] [stderr] 107 | pub fn command_type(message_string: &String) -> Option { [INFO] [stderr] | ^^^^^^^ help: change this to: `&str` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: single-character string constant used as pattern [INFO] [stderr] --> src/core/message/mod.rs:108:46 [INFO] [stderr] | [INFO] [stderr] 108 | let message_parts = message_string.split(";").collect::>(); [INFO] [stderr] | ^^^ help: try using a char instead: `';'` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_char_pattern [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/core/message_handler/internal.rs:21:9 [INFO] [stderr] | [INFO] [stderr] 21 | / match receiver.recv() { [INFO] [stderr] 22 | | Ok(message) => match message.sub_type { [INFO] [stderr] 23 | | InternalType::IdRequest => send_node_id(&db_connection, response_sender, message), [INFO] [stderr] 24 | | InternalType::SketchName => update_node_name(&db_connection, message), [INFO] [stderr] ... | [INFO] [stderr] 32 | | _ => (), [INFO] [stderr] 33 | | } [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] 21 | if let Ok(message) = receiver.recv() { match message.sub_type { [INFO] [stderr] 22 | InternalType::IdRequest => send_node_id(&db_connection, response_sender, message), [INFO] [stderr] 23 | InternalType::SketchName => update_node_name(&db_connection, message), [INFO] [stderr] 24 | InternalType::Time => send_current_time(response_sender, message), [INFO] [stderr] 25 | InternalType::DiscoverResponse => { [INFO] [stderr] 26 | send_discover_response(&db_connection, &message); [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: casting u8 to i32 may become silently lossy if types change [INFO] [stderr] --> src/core/message_handler/internal.rs:43:63 [INFO] [stderr] | [INFO] [stderr] 43 | Some(new_node_id) => match create_node(db_connection, new_node_id as i32) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: try: `i32::from(new_node_id)` [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 i32 may become silently lossy if types change [INFO] [stderr] --> src/core/message_handler/internal.rs:60:28 [INFO] [stderr] | [INFO] [stderr] 60 | .filter(node_id.eq(message.node_id as i32)) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: try: `i32::from(message.node_id)` [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 i32 may become silently lossy if types change [INFO] [stderr] --> src/core/message_handler/internal.rs:91:13 [INFO] [stderr] | [INFO] [stderr] 91 | message.node_id as i32, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: try: `i32::from(message.node_id)` [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 i32 may become silently lossy if types change [INFO] [stderr] --> src/core/message_handler/internal.rs:92:13 [INFO] [stderr] | [INFO] [stderr] 92 | parent_node_id as i32, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: try: `i32::from(parent_node_id)` [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: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/core/message_handler/presentation.rs:19:9 [INFO] [stderr] | [INFO] [stderr] 19 | / match receiver.recv() { [INFO] [stderr] 20 | | Ok(presentation_message) => { [INFO] [stderr] 21 | | create_or_update_sensor(&db_connection, &presentation_message, &new_sensor_sender); [INFO] [stderr] 22 | | match sender.send(presentation_message.to_string()) { [INFO] [stderr] ... | [INFO] [stderr] 27 | | _ => (), [INFO] [stderr] 28 | | } [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] 19 | if let Ok(presentation_message) = receiver.recv() { [INFO] [stderr] 20 | create_or_update_sensor(&db_connection, &presentation_message, &new_sensor_sender); [INFO] [stderr] 21 | match sender.send(presentation_message.to_string()) { [INFO] [stderr] 22 | Ok(_) => (), [INFO] [stderr] 23 | Err(_) => error!("Error while forwarding presentation message"), [INFO] [stderr] 24 | } [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: casting u8 to i32 may become silently lossy if types change [INFO] [stderr] --> src/core/message_handler/presentation.rs:38:18 [INFO] [stderr] | [INFO] [stderr] 38 | node_id: presentation_message.node_id as i32, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `i32::from(presentation_message.node_id)` [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 i32 may become silently lossy if types change [INFO] [stderr] --> src/core/message_handler/presentation.rs:39:26 [INFO] [stderr] | [INFO] [stderr] 39 | child_sensor_id: presentation_message.child_sensor_id as i32, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `i32::from(presentation_message.child_sensor_id)` [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: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/core/message_handler/set.rs:9:9 [INFO] [stderr] | [INFO] [stderr] 9 | / match set_message_receiver.recv() { [INFO] [stderr] 10 | | Ok(set_message) => match gateway_out_sender.send(set_message.to_string()) { [INFO] [stderr] 11 | | Ok(_) => (), [INFO] [stderr] 12 | | Err(e) => error!("Error while sending set message to gateway {:?}", e), [INFO] [stderr] 13 | | }, [INFO] [stderr] 14 | | _ => (), [INFO] [stderr] 15 | | } [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] 9 | if let Ok(set_message) = set_message_receiver.recv() { match gateway_out_sender.send(set_message.to_string()) { [INFO] [stderr] 10 | Ok(_) => (), [INFO] [stderr] 11 | Err(e) => error!("Error while sending set message to gateway {:?}", e), [INFO] [stderr] 12 | } } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/core/message_handler/set.rs:25:9 [INFO] [stderr] | [INFO] [stderr] 25 | / match receiver.recv() { [INFO] [stderr] 26 | | Ok(set_message) => { [INFO] [stderr] 27 | | match controller_sender.send(set_message.to_string()) { [INFO] [stderr] 28 | | Ok(_) => (), [INFO] [stderr] ... | [INFO] [stderr] 38 | | _ => (), [INFO] [stderr] 39 | | } [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] 25 | if let Ok(set_message) = receiver.recv() { [INFO] [stderr] 26 | match controller_sender.send(set_message.to_string()) { [INFO] [stderr] 27 | Ok(_) => (), [INFO] [stderr] 28 | Err(error) => error!("Error while sending to controller_sender {:?}", error), [INFO] [stderr] 29 | }; [INFO] [stderr] 30 | match property_notify_sender.send(set_message) { [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/core/message_handler/stream.rs:18:9 [INFO] [stderr] | [INFO] [stderr] 18 | / match ota_receiver.recv() { [INFO] [stderr] 19 | | Ok(stream_request) => send_response(sender, stream_request.clone(), &db_connection), [INFO] [stderr] 20 | | _ => (), [INFO] [stderr] 21 | | } [INFO] [stderr] | |_________^ help: try this: `if let Ok(stream_request) = ota_receiver.recv() { send_response(sender, stream_request.clone(), &db_connection) }` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] [INFO] [stderr] warning: using `clone` on a `Copy` type [INFO] [stderr] --> src/core/message_handler/stream.rs:19:57 [INFO] [stderr] | [INFO] [stderr] 19 | Ok(stream_request) => send_response(sender, stream_request.clone(), &db_connection), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `stream_request` [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: casting u8 to i32 may become silently lossy if types change [INFO] [stderr] --> src/core/message_handler/stream.rs:31:15 [INFO] [stderr] | [INFO] [stderr] 31 | .find(stream.node_id as i32) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: try: `i32::from(stream.node_id)` [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: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/core/message_handler/stream.rs:35:9 [INFO] [stderr] | [INFO] [stderr] 35 | / match response_fw_type_version(stream, node, db_connection) { [INFO] [stderr] 36 | | Some((_type, version)) => match firmwares [INFO] [stderr] 37 | | .find((_type as i32, version as i32)) [INFO] [stderr] 38 | | .first::(&*db_connection) [INFO] [stderr] ... | [INFO] [stderr] 57 | | None => (), [INFO] [stderr] 58 | | } [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] 35 | if let Some((_type, version)) = response_fw_type_version(stream, node, db_connection) { match firmwares [INFO] [stderr] 36 | .find((_type as i32, version as i32)) [INFO] [stderr] 37 | .first::(&*db_connection) [INFO] [stderr] 38 | { [INFO] [stderr] 39 | Ok(firmware) => { [INFO] [stderr] 40 | debug!("Request {:?}", stream); [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: casting u16 to i32 may become silently lossy if types change [INFO] [stderr] --> src/core/message_handler/stream.rs:37:24 [INFO] [stderr] | [INFO] [stderr] 37 | .find((_type as i32, version as i32)) [INFO] [stderr] | ^^^^^^^^^^^^ help: try: `i32::from(_type)` [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 i32 may become silently lossy if types change [INFO] [stderr] --> src/core/message_handler/stream.rs:37:38 [INFO] [stderr] | [INFO] [stderr] 37 | .find((_type as i32, version as i32)) [INFO] [stderr] | ^^^^^^^^^^^^^^ help: try: `i32::from(version)` [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 i32 may become silently lossy if types change [INFO] [stderr] --> src/core/message_handler/stream.rs:78:46 [INFO] [stderr] | [INFO] [stderr] 78 | firmware_type.eq(request.firmware_type as i32), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `i32::from(request.firmware_type)` [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 i32 may become silently lossy if types change [INFO] [stderr] --> src/core/message_handler/stream.rs:79:49 [INFO] [stderr] | [INFO] [stderr] 79 | firmware_version.eq(request.firmware_version as i32), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `i32::from(request.firmware_version)` [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: this function has too many arguments (8/7) [INFO] [stderr] --> src/core/server.rs:12:1 [INFO] [stderr] | [INFO] [stderr] 12 | / pub fn start( [INFO] [stderr] 13 | | gateway_info: StreamInfo, [INFO] [stderr] 14 | | controller_info: Option, [INFO] [stderr] 15 | | pool: Pool>, [INFO] [stderr] ... | [INFO] [stderr] 111 | | presentation_message_processor.join().unwrap(); [INFO] [stderr] 112 | | } [INFO] [stderr] | |_^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::too_many_arguments)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#too_many_arguments [INFO] [stderr] [INFO] [stderr] warning: casting u16 to i32 may become silently lossy if types change [INFO] [stderr] --> src/handler/firmware.rs:132:19 [INFO] [stderr] | [INFO] [stderr] 132 | let crc = Firmware::compute_crc(&binary_data) as i32; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `i32::from(Firmware::compute_crc(&binary_data))` [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 i32 may become silently lossy if types change [INFO] [stderr] --> src/model/firmware.rs:63:18 [INFO] [stderr] | [INFO] [stderr] 63 | crc: Firmware::compute_crc(&data) as i32, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `i32::from(Firmware::compute_crc(&data))` [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: you don't need to add `&` to all patterns [INFO] [stderr] --> src/model/firmware.rs:87:9 [INFO] [stderr] | [INFO] [stderr] 87 | / match record { [INFO] [stderr] 88 | | &Record::Data { [INFO] [stderr] 89 | | offset: _, [INFO] [stderr] 90 | | value: ref _value, [INFO] [stderr] 91 | | } => _value.clone(), [INFO] [stderr] 92 | | _ => Vec::new(), [INFO] [stderr] 93 | | } [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] 87 | match *record { [INFO] [stderr] 88 | Record::Data { [INFO] [stderr] 89 | offset: _, [INFO] [stderr] 90 | value: ref _value, [INFO] [stderr] 91 | } => _value.clone(), [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: taken reference of right operand [INFO] [stderr] --> src/model/firmware.rs:134:25 [INFO] [stderr] | [INFO] [stderr] 134 | let mut input = String::new() + &"\n:100490008B002097E1F30E940000F9CF0895F894B3\r"; [INFO] [stderr] | ^^^^^^^^^^^^^^^^-------------------------------------------------- [INFO] [stderr] | | [INFO] [stderr] | help: use the right value directly: `"\n:100490008B002097E1F30E940000F9CF0895F894B3\r"` [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] [INFO] [stderr] warning: very complex type used. Consider factoring parts into `type` definitions [INFO] [stderr] --> src/wot/adapter.rs:44:6 [INFO] [stderr] | [INFO] [stderr] 44 | ) -> Option<(Sensor, Arc>>)> { [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: you seem to be trying to match on a boolean expression [INFO] [stderr] --> src/wot/adapter.rs:45:5 [INFO] [stderr] | [INFO] [stderr] 45 | / match sensor.sensor_type.is_supported() { [INFO] [stderr] 46 | | true => { [INFO] [stderr] 47 | | let mut thing = BaseThing::new( [INFO] [stderr] 48 | | name, [INFO] [stderr] ... | [INFO] [stderr] 63 | | } [INFO] [stderr] 64 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_bool [INFO] [stderr] help: consider using an if/else expression [INFO] [stderr] | [INFO] [stderr] 45 | if sensor.sensor_type.is_supported() { [INFO] [stderr] 46 | let mut thing = BaseThing::new( [INFO] [stderr] 47 | name, [INFO] [stderr] 48 | Some(vec!(sensor.sensor_type.thing_type())), [INFO] [stderr] 49 | Some(sensor.sensor_type.thing_description()), [INFO] [stderr] 50 | ); [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to match on a boolean expression [INFO] [stderr] --> src/wot/adapter.rs:86:60 [INFO] [stderr] | [INFO] [stderr] 86 | let value_forwarder: Option> = match set_type.is_forwardable() { [INFO] [stderr] | ____________________________________________________________^ [INFO] [stderr] 87 | | true => Some(Box::new(PropertyValueForwarder { [INFO] [stderr] 88 | | sensor, [INFO] [stderr] 89 | | set_type, [INFO] [stderr] ... | [INFO] [stderr] 92 | | false => None, [INFO] [stderr] 93 | | }; [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_bool [INFO] [stderr] help: consider using an if/else expression [INFO] [stderr] | [INFO] [stderr] 86 | let value_forwarder: Option> = if set_type.is_forwardable() { Some(Box::new(PropertyValueForwarder { [INFO] [stderr] 87 | sensor, [INFO] [stderr] 88 | set_type, [INFO] [stderr] 89 | set_message_sender, [INFO] [stderr] 90 | })) } else { None }; [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: very complex type used. Consider factoring parts into `type` definitions [INFO] [stderr] --> src/wot/mod.rs:47:6 [INFO] [stderr] | [INFO] [stderr] 47 | ) -> Vec<(Sensor, Arc>>)> { [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/wot/mod.rs:50:21 [INFO] [stderr] | [INFO] [stderr] 50 | let mut things: Vec<(Sensor, Arc>>)> = Vec::new(); [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: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/wot/mod.rs:71:9 [INFO] [stderr] | [INFO] [stderr] 71 | / match (&node_list) [INFO] [stderr] 72 | | .into_iter() [INFO] [stderr] 73 | | .find(|node| node.node_id == sensor.node_id) [INFO] [stderr] 74 | | .map(|node| node.node_name.clone()) [INFO] [stderr] ... | [INFO] [stderr] 88 | | None => (), [INFO] [stderr] 89 | | } [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] 71 | if let Some(node_name) = (&node_list) [INFO] [stderr] 72 | .into_iter() [INFO] [stderr] 73 | .find(|node| node.node_id == sensor.node_id) [INFO] [stderr] 74 | .map(|node| node.node_name.clone()) { [INFO] [stderr] 75 | let thing = adapter::build_thing( [INFO] [stderr] 76 | format!("{} - {} - {}", node_name, sensor.sensor_type.thing_description(), sensor.description) [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: this .into_iter() call is equivalent to .iter() and will not move the Vec [INFO] [stderr] --> src/wot/mod.rs:72:14 [INFO] [stderr] | [INFO] [stderr] 72 | .into_iter() [INFO] [stderr] | ^^^^^^^^^ help: call directly: `iter` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::into_iter_on_ref)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#into_iter_on_ref [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/wot/mod.rs:83:17 [INFO] [stderr] | [INFO] [stderr] 83 | / match thing { [INFO] [stderr] 84 | | Some(thing) => things.push(thing), [INFO] [stderr] 85 | | None => (), [INFO] [stderr] 86 | | } [INFO] [stderr] | |_________________^ help: try this: `if let Some(thing) = thing { things.push(thing) }` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/wot/mod.rs:124:13 [INFO] [stderr] | [INFO] [stderr] 124 | things: &Vec<(Sensor, Arc>>)>, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: change this to: `&[(Sensor, Arc>>)]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: very complex type used. Consider factoring parts into `type` definitions [INFO] [stderr] --> src/wot/mod.rs:124:13 [INFO] [stderr] | [INFO] [stderr] 124 | things: &Vec<(Sensor, Arc>>)>, [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: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/wot/mod.rs:129:9 [INFO] [stderr] | [INFO] [stderr] 129 | / match in_set_receiver.recv_timeout(Duration::from_millis(10)) { [INFO] [stderr] 130 | | Ok(set_message) => match things [INFO] [stderr] 131 | | .into_iter() [INFO] [stderr] 132 | | .find(|(sensor, _)| set_message.for_sensor(sensor)) [INFO] [stderr] ... | [INFO] [stderr] 138 | | _ => (), [INFO] [stderr] 139 | | } [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] 129 | if let Ok(set_message) = in_set_receiver.recv_timeout(Duration::from_millis(10)) { match things [INFO] [stderr] 130 | .into_iter() [INFO] [stderr] 131 | .find(|(sensor, _)| set_message.for_sensor(sensor)) [INFO] [stderr] 132 | .map(|(_, thing)| thing) [INFO] [stderr] 133 | { [INFO] [stderr] 134 | Some(thing) => set_property(set_message, thing), [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: this .into_iter() call is equivalent to .iter() and will not move the Vec [INFO] [stderr] --> src/wot/mod.rs:131:18 [INFO] [stderr] | [INFO] [stderr] 131 | .into_iter() [INFO] [stderr] | ^^^^^^^^^ help: call directly: `iter` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#into_iter_on_ref [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/wot/mod.rs:155:9 [INFO] [stderr] | [INFO] [stderr] 155 | / match new_sensor_receiver.recv_timeout(Duration::from_secs(30)) { [INFO] [stderr] 156 | | Ok((node_name, sensor)) => { [INFO] [stderr] 157 | | if let Some((_sensor, thing)) = adapter::build_thing( [INFO] [stderr] 158 | | format!("{} - {}", node_name, sensor.sensor_type.thing_description()).to_owned(), [INFO] [stderr] ... | [INFO] [stderr] 167 | | Err(_) => (), [INFO] [stderr] 168 | | } [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] 155 | if let Ok((node_name, sensor)) = new_sensor_receiver.recv_timeout(Duration::from_secs(30)) { [INFO] [stderr] 156 | if let Some((_sensor, thing)) = adapter::build_thing( [INFO] [stderr] 157 | format!("{} - {}", node_name, sensor.sensor_type.thing_description()).to_owned(), [INFO] [stderr] 158 | sensor, [INFO] [stderr] 159 | set_message_sender.clone(), [INFO] [stderr] 160 | ) { [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/main.rs:185:1 [INFO] [stderr] | [INFO] [stderr] 185 | / fn get_mys_controller<'s>(config: &'s Ini) -> Option { [INFO] [stderr] 186 | | config.section(Some("Controller".to_owned())).map(|controller_conf| { [INFO] [stderr] 187 | | let controller_type = controller_conf.get("type").expect("Controller port is not specified. Ex:\n\ [INFO] [stderr] 188 | | [Controller]\n type=SERIAL\n port=/dev/tty1\n or \n\n[Controller]\n type=SERIAL\n port=port=0.0.0.0:5003"); [INFO] [stderr] ... | [INFO] [stderr] 204 | | }}) [INFO] [stderr] 205 | | } [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/main.rs:207:1 [INFO] [stderr] | [INFO] [stderr] 207 | / fn get_mys_gateway<'s>(config: &'s Ini) -> connection::StreamInfo { [INFO] [stderr] 208 | | let gateway_conf = config.section(Some("Gateway".to_owned())).unwrap(); [INFO] [stderr] 209 | | let gateway_type = gateway_conf.get("type").expect("Gateway port is not specified. Ex:\n\ [INFO] [stderr] 210 | | [Gateway]\n type=SERIAL\n port=/dev/tty1\n or \n\n[Gateway]\n type=SERIAL\n port=port=10.137.120.250:5003"); [INFO] [stderr] ... | [INFO] [stderr] 227 | | } [INFO] [stderr] 228 | | } [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/main.rs:185:1 [INFO] [stderr] | [INFO] [stderr] 185 | / fn get_mys_controller<'s>(config: &'s Ini) -> Option { [INFO] [stderr] 186 | | config.section(Some("Controller".to_owned())).map(|controller_conf| { [INFO] [stderr] 187 | | let controller_type = controller_conf.get("type").expect("Controller port is not specified. Ex:\n\ [INFO] [stderr] 188 | | [Controller]\n type=SERIAL\n port=/dev/tty1\n or \n\n[Controller]\n type=SERIAL\n port=port=0.0.0.0:5003"); [INFO] [stderr] ... | [INFO] [stderr] 204 | | }}) [INFO] [stderr] 205 | | } [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/main.rs:207:1 [INFO] [stderr] | [INFO] [stderr] 207 | / fn get_mys_gateway<'s>(config: &'s Ini) -> connection::StreamInfo { [INFO] [stderr] 208 | | let gateway_conf = config.section(Some("Gateway".to_owned())).unwrap(); [INFO] [stderr] 209 | | let gateway_type = gateway_conf.get("type").expect("Gateway port is not specified. Ex:\n\ [INFO] [stderr] 210 | | [Gateway]\n type=SERIAL\n port=/dev/tty1\n or \n\n[Gateway]\n type=SERIAL\n port=port=10.137.120.250:5003"); [INFO] [stderr] ... | [INFO] [stderr] 227 | | } [INFO] [stderr] 228 | | } [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] Finished dev [unoptimized + debuginfo] target(s) in 2m 41s [INFO] running `"docker" "inspect" "76fc9f1d99618394fbdfbd73908ad9438de758c6458dbef7dc1fd29471176939"` [INFO] running `"docker" "rm" "-f" "76fc9f1d99618394fbdfbd73908ad9438de758c6458dbef7dc1fd29471176939"` [INFO] [stdout] 76fc9f1d99618394fbdfbd73908ad9438de758c6458dbef7dc1fd29471176939